/* $Revision Header *** Header built automatically - do not edit! *********** * * (C) Copyright 1990 by MXM * * Name .....: DoRevision.c * Created ..: Saturday 27-Jan-90 19:18 * Revision .: 0 * * Date Author Comment * ========= ======== ==================== * 27-Jan-90 Olsen Created this file! * * $Revision Header ********************************************************/ #define REVISION 0 #include #include #include #define TEMPNAME "T:Revision.temp" extern struct FileLock *Lock(); extern void *AllocMem(); LONG CmpStr(s,t) char *s,*t; { register LONG i; for(i = 0 ; i < strlen(s) ; i++) if(s[i] != t[i]) return(s[i] - t[i]); return(0); } char * GetRealName(s,Protect) char *s; long *Protect; { struct FileInfoBlock *FileInfo; struct FileLock *FileLock; static char FileName[108]; if(!(FileLock = (struct FileLock *)Lock(s,ACCESS_READ))) return(NULL); if(!(FileInfo = (struct FileInfoBlock *)AllocMem((long)sizeof(struct FileInfoBlock),MEMF_PUBLIC))) { UnLock(FileLock); return(NULL); } if(!Examine(FileLock,FileInfo)) { FreeMem(FileInfo,(long)sizeof(struct FileInfoBlock)); UnLock(FileLock); return(NULL); } strcpy(FileName,FileInfo -> fib_FileName); *Protect = FileInfo -> fib_Protection; FreeMem(FileInfo,(long)sizeof(struct FileInfoBlock)); UnLock(FileLock); return(FileName); } LONG Revise(Name,LogMessage) char *Name,*LogMessage; { char *LineBuff,*FileName; long InLine = 0,Revision = 0,SkipNext = FALSE,i,Protect; FILE *Rev,*Temp; char Year[10],Author[20],Day[20],Time[10],Company[40]; BOOL Create = TRUE; if(!LogMessage) LogMessage = "- Empty log message -"; if(getenv("DATE")) strcpy(Year,getenv("DATE")); else strcpy(Year,"01-01-90"); if(getenv("DAY")) strcpy(Day,getenv("DAY")); if(getenv("TIME")) strcpy(Time,getenv("TIME")); if(getenv("AUTHOR")) strcpy(Author,getenv("AUTHOR")); else strcpy(Author,"- Unknown -"); if(getenv("COMPANY")) strcpy(Company,getenv("COMPANY")); else strcpy(Company,"???"); if(!(LineBuff = (char *)AllocMem(256L,MEMF_PUBLIC | MEMF_CLEAR))) return; if(!(FileName = GetRealName(Name,&Protect))) { FreeMem(LineBuff,256L); return; } if(!(Temp = fopen(TEMPNAME,"w"))) { FreeMem(LineBuff,256L); return; } if(!(Rev = fopen(Name,"r"))) { fclose(Temp); FreeMem(LineBuff,256L); return; } if(!fgets(LineBuff,256,Rev)) { fclose(Temp); fclose(Rev); FreeMem(LineBuff,256L); return; } fclose(Rev); if(!CmpStr("/* $Revision Header *",LineBuff)) Create = FALSE; if(Create) { fprintf(Temp,"/* $Revision Header *** Header built automatically - do not edit! ***********\n"); fprintf(Temp," *\n *\t(C) Copyright 19%s by %s\n *\n",Year + 7,Company); fprintf(Temp," *\tName .....: %s\n",FileName); fprintf(Temp," *\tCreated ..: %s %s %s\n",Day,Year,Time); fprintf(Temp," *\tRevision .: 0\n"); fprintf(Temp," *\n"); fprintf(Temp," *\tDate Author Comment\n"); fprintf(Temp," *\t========= ======== ====================\n"); fprintf(Temp," *\t%s %-15.15s %s\n",Year,Author,"Created this file!"); fprintf(Temp," *\n"); fprintf(Temp," * $Revision Header ********************************************************/\n"); fprintf(Temp," #define REVISION 0\n\n"); } if(!(Rev = fopen(Name,"r"))) { fclose(Temp); FreeMem(LineBuff,256L); return; } for(;;) { if(!fgets(LineBuff,256,Rev)) break; if(InLine == 6 && !Create) { Revision = atoi(LineBuff + 15) + 1; sprintf(LineBuff," *\tRevision .: %d\n",Revision); } if(InLine == 10 && !Create) { char TempBuff[11]; for(i = 0 ; i < 10 ; i++) TempBuff[i] = LineBuff[3 + i]; TempBuff[9] = 0; if(!CmpStr(TempBuff,Year) && (Protect & FIBF_ARCHIVE)) { fclose(Rev); fclose(Temp); FreeMem(LineBuff,256L); DeleteFile(TEMPNAME); return; } fprintf(Temp," *\t%s %-15.15s %s\n",Year,Author,LogMessage); } if(SkipNext) { sprintf(LineBuff," #define REVISION %d\n",Revision); SkipNext = FALSE; } if(!CmpStr(" * $Revision Header *",LineBuff) && InLine) SkipNext = TRUE; fwrite(LineBuff,strlen(LineBuff),1,Temp); InLine++; } fclose(Temp); fclose(Rev); if(!(Temp = fopen(TEMPNAME,"r"))) { FreeMem(LineBuff,256L); return; } if(!(Rev = fopen(Name,"w"))) { fclose(Temp); DeleteFile(TEMPNAME); FreeMem(LineBuff,256L); return; } while((InLine = fgetc(Temp)) != EOF) fputc(InLine,Rev); fclose(Temp); fclose(Rev); SetProtection(Name,Protect | FIBF_ARCHIVE); DeleteFile(TEMPNAME); FreeMem(LineBuff,256L); } void main(argc,argv) int argc; char *argv[]; { Revise(argv[1],argv[2]); }