📄 rcsbase.h
字号:
struct access * nextaccess;};/* list element for locks */struct lock { char const * login; struct hshentry * delta; struct lock * nextlock;};/* list element for symbolic names */struct assoc { char const * symbol; char const * num; struct assoc * nextassoc;};#define mainArgs (argc,argv) int argc; char **argv;#if lint# define libId(name,rcsid)# define mainProg(name,cmd,rcsid) int name mainArgs#else# define libId(name,rcsid) char const name[] = rcsid;# define mainProg(name,cmd,rcsid) char const copyright[] = "Copyright 1982,1988,1989 by Walter F. Tichy\nPurdue CS\nCopyright 1990,1991 by Paul Eggert", rcsbaseId[] = RCSBASE, cmdid[] = cmd; libId(name,rcsid) int main mainArgs#endif/* * Markers for keyword expansion (used in co and ident) * Every byte must have class LETTER or Letter. */#define AUTHOR "Author"#define DATE "Date"#define HEADER "Header"#define IDH "Id"#define LOCKER "Locker"#define LOG "Log"#define RCSFILE "RCSfile"#define REVISION "Revision"#define SOURCE "Source"#define STATE "State"#define keylength 8 /* max length of any of the above keywords */enum markers { Nomatch, Author, Date, Header, Id, Locker, Log, RCSfile, Revision, Source, State }; /* This must be in the same order as rcskeys.c's Keyword[] array. */#define DELNUMFORM "\n\n%s\n%s\n"/* used by putdtext and scanlogtext */#define EMPTYLOG "*** empty log message ***" /* used by ci and rlog *//* main program */extern char const cmdid[];exiting void exiterr P((void));/* maketime */int setfiledate P((char const*,char const[datesize]));void str2date P((char const*,char[datesize]));void time2date P((time_t,char[datesize]));/* merge */int merge P((int,char const*const[2],char const*const[3]));/* partime */int partime P((char const*,struct tm*,int*));/* rcsedit */#define ciklogsize 23 /* sizeof("checked in with -k by ") */extern FILE *fcopy;extern char const *resultfile;extern char const ciklog[ciklogsize];extern int locker_expansion;extern struct buf dirtfname[];#define newRCSfilename (dirtfname[0].string)RILE *rcswriteopen P((struct buf*,struct stat*,int));char const *makedirtemp P((char const*,int));char const *getcaller P((void));int addlock P((struct hshentry*));int addsymbol P((char const*,char const*,int));int checkaccesslist P((void));int chnamemod P((FILE**,char const*,char const*,mode_t));int donerewrite P((int));int dorewrite P((int,int));int expandline P((RILE*,FILE*,struct hshentry const*,int,FILE*));int findlock P((int,struct hshentry**));void aflush P((FILE*));void copystring P((void));void dirtempunlink P((void));void enterstring P((void));void finishedit P((struct hshentry const*,FILE*,int));void keepdirtemp P((char const*));void openfcopy P((FILE*));void snapshotedit P((FILE*));void xpandstring P((struct hshentry const*));#if has_NFS || bad_unlink int un_link P((char const*));#else# define un_link(s) unlink(s)#endif#if large_memory void edit_string P((void));# define editstring(delta) edit_string()#else void editstring P((struct hshentry const*));#endif/* rcsfcmp */int rcsfcmp P((RILE*,struct stat const*,char const*,struct hshentry const*));/* rcsfnms */#define bufautobegin(b) ((void) ((b)->string = 0, (b)->size = 0))extern FILE *workstdout;extern char *workfilename;extern char const *RCSfilename;extern char const *suffixes;extern struct stat RCSstat;RILE *rcsreadopen P((struct buf*,struct stat*,int));char *bufenlarge P((struct buf*,char const**));char const *basename P((char const*));char const *getfullRCSname P((void));char const *maketemp P((int));char const *rcssuffix P((char const*));/* jlf int pairfilenames P((int,char**,RILE*(*)P((struct buf*,struct stat*,int)),int,int)); */int pairfilenames ();size_t dirlen P((char const*));struct cbuf bufremember P((struct buf*,size_t));void bufalloc P((struct buf*,size_t));void bufautoend P((struct buf*));void bufrealloc P((struct buf*,size_t));void bufscat P((struct buf*,char const*));void bufscpy P((struct buf*,char const*));void tempunlink P((void));/* rcsgen */extern int interactiveflag;extern struct buf curlogbuf;char const *buildrevision P((struct hshentries const*,struct hshentry*,FILE*,int));int getcstdin P((void));int ttystdin P((void));int yesorno P((int,char const*,...));struct cbuf cleanlogmsg P((char*,size_t));struct cbuf getsstdin P((char const*,char const*,char const*,struct buf*));void putdesc P((int,char*));/* rcskeep */extern int prevkeys;extern struct buf prevauthor, prevdate, prevrev, prevstate;int getoldkeys P((RILE*));/* rcskeys */extern char const *const Keyword[];enum markers trymatch P((char const*));/* rcslex */extern FILE *foutptr;extern FILE *frewrite;extern RILE *finptr;extern char const *NextString;extern enum tokens nexttok;extern int hshenter;extern int nerror;extern int nextc;extern int quietflag;extern unsigned long rcsline;char const *getid P((void));exiting void efaterror P((char const*));exiting void enfaterror P((int,char const*));exiting void faterror P((char const*,...));exiting void fatserror P((char const*,...));exiting void Ieof P((void));exiting void Ierror P((void));exiting void Oerror P((void));char *checkid P((char*,int));int eoflex P((void));int getkeyopt P((char const*));int getlex P((enum tokens));struct cbuf getphrases P((char const*));struct cbuf savestring P((struct buf*));struct hshentry *getnum P((void));void Ifclose P((RILE*));void Izclose P((RILE**));void Lexinit P((void));void Ofclose P((FILE*));void Ozclose P((FILE**));void afputc P((int,FILE*));void aprintf P((FILE*,char const*,...));void aputs P((char const*,FILE*));void checksid P((char*));void diagnose P((char const*,...));void eerror P((char const*));void eflush P((void));void enerror P((int,char const*));void error P((char const*,...));void fvfprintf P((FILE*,char const*,va_list));void getkey P((char const*));void getkeystring P((char const*));void nextlex P((void));void oflush P((void));void printstring P((void));void readstring P((void));void redefined P((int));void testIerror P((FILE*));void testOerror P((FILE*));void warn P((char const*,...));void warnignore P((void));#if has_madvise && has_mmap && large_memory void advise_access P((RILE*,int));# define if_advise_access(p,f,advice) if (p) advise_access(f,advice)#else# define advise_access(f,advice)# define if_advise_access(p,f,advice)#endif#if has_mmap && large_memory RILE *I_open P((char const*,struct stat*));# define Iopen(f,m,s) I_open(f,s)#else RILE *Iopen P((char const*,char const*,struct stat*));#endif#if !large_memory void testIeof P((FILE*)); void Irewind P((RILE*));#endif/* rcsmap */extern const enum tokens ctab[];/* rcsrev */char *partialno P((struct buf*,char const*,unsigned));char const *tiprev P((void));int cmpnum P((char const*,char const*));int cmpnumfld P((char const*,char const*,unsigned));int compartial P((char const*,char const*,unsigned));int expandsym P((char const*,struct buf*));int fexpandsym P((char const*,struct buf*,RILE*));struct hshentry *genrevs P((char const*,char const*,char const*,char const*,struct hshentries**));unsigned countnumflds P((char const*));void getbranchno P((char const*,struct buf*));/* rcssyn *//* These expand modes must agree with Expand_names[] in rcssyn.c. */#define KEYVAL_EXPAND 0 /* -kkv `$Keyword: value $' */#define KEYVALLOCK_EXPAND 1 /* -kkvl `$Keyword: value locker $' */#define KEY_EXPAND 2 /* -kk `$Keyword$' */#define VAL_EXPAND 3 /* -kv `value' */#define OLD_EXPAND 4 /* -ko use old string, omitting expansion */struct diffcmd { unsigned long line1, /* number of first line */ nlines, /* number of lines affected */ adprev, /* previous 'a' line1+1 or 'd' line1 */ dafter; /* sum of previous 'd' line1 and previous 'd' nlines */};extern char const * Dbranch;extern struct access * AccessList;extern struct assoc * Symbols;extern struct cbuf Comment;extern struct lock * Locks;extern struct hshentry * Head;extern int Expand;extern int StrictLocks;extern unsigned TotalDeltas;extern char const *const expand_names[];extern char const Kdesc[];extern char const Klog[];extern char const Ktext[];int getdiffcmd P((RILE*,int,FILE*,struct diffcmd*));int putdftext P((char const*,struct cbuf,RILE*,FILE*,int));int putdtext P((char const*,struct cbuf,char const*,FILE*,int));int str2expmode P((char const*));void getadmin P((void));void getdesc P((int));void gettree P((void));void ignorephrase P((void));void initdiffcmd P((struct diffcmd*));void putadmin P((FILE*));void putstring P((FILE*,int,struct cbuf,int));void puttree P((struct hshentry const*,FILE*));/* rcsutil */extern int RCSversion;char *cgetenv P((char const*));char *fstr_save P((char const*));char *str_save P((char const*));char const *date2str P((char const[datesize],char[datesize]));char const *getusername P((int));int getRCSINIT P((int,char**,char***));int run P((char const*,char const*,...));int runv P((char const**));malloc_type fremember P((malloc_type));malloc_type ftestalloc P((size_t));malloc_type testalloc P((size_t));malloc_type testrealloc P((malloc_type,size_t));#define ftalloc(T) ftnalloc(T,1)#define talloc(T) tnalloc(T,1)#if lint extern malloc_type lintalloc;# define ftnalloc(T,n) (lintalloc = ftestalloc(sizeof(T)*(n)), (T*)0)# define tnalloc(T,n) (lintalloc = testalloc(sizeof(T)*(n)), (T*)0)# define trealloc(T,p,n) (lintalloc = testrealloc((malloc_type)0, sizeof(T)*(n)), p)# define tfree(p)#else# define ftnalloc(T,n) ((T*) ftestalloc(sizeof(T)*(n)))# define tnalloc(T,n) ((T*) testalloc(sizeof(T)*(n)))# define trealloc(T,p,n) ((T*) testrealloc((malloc_type)(p), sizeof(T)*(n)))# define tfree(p) free((malloc_type)(p))#endifvoid awrite P((char const*,size_t,FILE*));void fastcopy P((RILE*,FILE*));void ffree P((void));void ffree1 P((char const*));void setRCSversion P((char const*));#if has_signal void catchints P((void)); void ignoreints P((void)); void restoreints P((void));#else# define catchints()# define ignoreints()# define restoreints()#endif#if has_getuid uid_t ruid P((void));# define myself(u) ((u) == ruid())#else# define myself(u) true#endif#if has_setuid uid_t euid P((void)); void nosetid P((void)); void seteid P((void)); void setrid P((void));#else# define nosetid()# define seteid()# define setrid()#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -