# 1 "/usr/src/gnu/cvs/mkmodules/mkmodules.c" # 1 "/usr/include/sys/syslimits.h" 1 # 14 "/usr/src/gnu/cvs/mkmodules/mkmodules.c" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 1 # 1 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 1 # 1 "/usr/include/sys/types.h" 1 typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef char * caddr_t; typedef long daddr_t; typedef short dev_t; typedef u_long ino_t; typedef long off_t; typedef u_short nlink_t; typedef long swblk_t; typedef long segsz_t; typedef u_short uid_t; typedef u_short gid_t; typedef short pid_t; typedef u_short mode_t; typedef u_long fixpt_t; typedef struct _uquad { u_long val[2]; } u_quad; typedef struct _quad { long val[2]; } quad; typedef long * qaddr_t; # 1 "/usr/include/machine/ansi.h" 1 # 69 "/usr/include/sys/types.h" 2 # 1 "/usr/include/machine/types.h" 1 typedef struct _physadr { int r[1]; } *physadr; typedef struct label_t { int val[6]; } label_t; typedef u_long vm_offset_t; typedef u_long vm_size_t; # 71 "/usr/include/sys/types.h" 2 typedef unsigned long clock_t; typedef unsigned int size_t; typedef long time_t; typedef long fd_mask; typedef struct fd_set { fd_mask fds_bits[(((256 )+(( (sizeof(fd_mask) * 8 ) )-1))/( (sizeof(fd_mask) * 8 ) )) ]; } fd_set; # 132 "/usr/include/sys/types.h" # 20 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 # 1 "/usr/include/sys/stat.h" 1 struct stat { dev_t st_dev; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; dev_t st_rdev; off_t st_size; time_t st_atime; long st_spare1; time_t st_mtime; long st_spare2; time_t st_ctime; long st_spare3; long st_blksize; long st_blocks; u_long st_flags; u_long st_gen; }; # 1 "/usr/include/sys/cdefs.h" 1 # 76 "/usr/include/sys/cdefs.h" # 114 "/usr/include/sys/stat.h" 2 mode_t umask (mode_t) ; int chmod (const char *, mode_t) ; int fstat (int, struct stat *) ; int mkdir (const char *, mode_t) ; int mkfifo (const char *, mode_t) ; int stat (const char *, struct stat *) ; int fchmod (int, mode_t) ; int lstat (const char *, struct stat *) ; # 21 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 off_t lseek (); # 1 "/usr/include/time.h" 1 # 1 "/usr/include/machine/ansi.h" 1 # 57 "/usr/include/machine/ansi.h" # 39 "/usr/include/time.h" 2 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long tm_gmtoff; char *tm_zone; }; # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 74 "/usr/include/time.h" 2 char *asctime (const struct tm *) ; clock_t clock (void) ; char *ctime (const time_t *) ; double difftime (time_t, time_t) ; struct tm *gmtime (const time_t *) ; struct tm *localtime (const time_t *) ; time_t mktime (struct tm *) ; size_t strftime (char *, size_t, const char *, const struct tm *) ; time_t time (time_t *) ; void tzset (void) ; char *timezone (int, int) ; void tzsetwall (void) ; # 72 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 # 86 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" # 1 "/usr/include/sys/timeb.h" 1 struct timeb { time_t time; unsigned short millitm; short timezone; short dstflag; }; # 87 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 # 1 "/usr/include/sys/param.h" 1 # 1 "/usr/include/sys/types.h" 1 # 135 "/usr/include/sys/types.h" # 46 "/usr/include/sys/param.h" 2 # 1 "/usr/include/sys/syslimits.h" 1 # 56 "/usr/include/sys/param.h" 2 # 1 "/usr/include/sys/signal.h" 1 # 1 "/usr/include/machine/trap.h" 1 # 42 "/usr/include/sys/signal.h" 2 # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 90 "/usr/include/sys/signal.h" 2 typedef void (*sig_t) (int) ; typedef void (*__sighandler_t) (int) ; typedef unsigned int sigset_t; int sigaddset (sigset_t *, int) ; int sigdelset (sigset_t *, int) ; int sigemptyset (sigset_t *) ; int sigfillset (sigset_t *) ; int sigismember (const sigset_t *, int) ; struct sigaction { __sighandler_t sa_handler; sigset_t sa_mask; int sa_flags; }; struct sigvec { void (*sv_handler)(); int sv_mask; int sv_flags; }; struct sigaltstack { char *ss_base; int ss_len; int ss_onstack; }; struct sigstack { char *ss_sp; int ss_onstack; }; struct sigcontext { int sc_onstack; int sc_mask; int sc_sp; int sc_fp; int sc_ap; int sc_pc; int sc_ps; }; # 1 "/usr/include/sys/types.h" 1 # 135 "/usr/include/sys/types.h" # 195 "/usr/include/sys/signal.h" 2 __sighandler_t signal (int, __sighandler_t) ; int raise (int) ; int kill (pid_t, int) ; int sigaction (int, const struct sigaction *, struct sigaction *) ; int sigpending (sigset_t *) ; int sigprocmask (int, const sigset_t *, sigset_t *) ; int sigsuspend (const sigset_t *) ; int killpg (pid_t, int) ; void psignal (unsigned, const char *) ; int sigblock (int) ; int siginterrupt (int, int) ; int sigpause (int) ; int sigreturn (struct sigcontext *) ; int sigsetmask (int) ; int sigstack (const struct sigstack *, struct sigstack *) ; int sigvec (int, struct sigvec *, struct sigvec *) ; # 79 "/usr/include/sys/param.h" 2 # 1 "/usr/include/machine/param.h" 1 # 82 "/usr/include/sys/param.h" 2 # 1 "/usr/include/machine/endian.h" 1 # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 55 "/usr/include/machine/endian.h" 2 # 77 "/usr/include/machine/endian.h" # 106 "/usr/include/machine/endian.h" # 83 "/usr/include/sys/param.h" 2 # 1 "/usr/include/machine/limits.h" 1 # 84 "/usr/include/sys/param.h" 2 # 97 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 struct utimbuf { long actime; long modtime; }; int utime (); # 145 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" # 1 "/usr/include/strings.h" 1 # 1 "/usr/include/string.h" 1 # 1 "/usr/include/machine/ansi.h" 1 # 57 "/usr/include/machine/ansi.h" # 38 "/usr/include/string.h" 2 # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 49 "/usr/include/string.h" 2 void *memchr (const void *, int, size_t) ; int memcmp (const void *, const void *, size_t) ; void *memcpy (void *, const void *, size_t) ; void *memmove (void *, const void *, size_t) ; void *memset (void *, int, size_t) ; char *strcat (char *, const char *) ; char *strchr (const char *, int) ; int strcmp (const char *, const char *) ; int strcoll (const char *, const char *) ; char *strcpy (char *, const char *) ; size_t strcspn (const char *, const char *) ; char *strerror (int) ; size_t strlen (const char *) ; char *strncat (char *, const char *, size_t) ; int strncmp (const char *, const char *, size_t) ; char *strncpy (char *, const char *, size_t) ; char *strpbrk (const char *, const char *) ; char *strrchr (const char *, int) ; size_t strspn (const char *, const char *) ; char *strstr (const char *, const char *) ; char *strtok (char *, const char *) ; size_t strxfrm (char *, const char *, size_t) ; int bcmp (const void *, const void *, size_t) ; void bcopy (const void *, void *, size_t) ; void bzero (void *, size_t) ; int ffs (int) ; char *index (const char *, int) ; void *memccpy (void *, const void *, int, size_t) ; char *rindex (const char *, int) ; int strcasecmp (const char *, const char *) ; char *strdup (const char *) ; void strmode (int, char *) ; int strncasecmp (const char *, const char *, size_t) ; char *strsep (char **, const char *) ; void swab (const void *, void *, size_t) ; # 36 "/usr/include/strings.h" 2 # 146 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 # 1 "/usr/include/errno.h" 1 extern int errno; # 149 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 char *getenv (); char *malloc (); char *realloc (); char *calloc (); extern int errno; # 173 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" # 1 "/usr/include/sys/file.h" 1 # 1 "/usr/include/sys/fcntl.h" 1 # 1 "/usr/include/sys/types.h" 1 # 135 "/usr/include/sys/types.h" # 46 "/usr/include/sys/fcntl.h" 2 # 99 "/usr/include/sys/fcntl.h" struct flock { short l_type; short l_whence; off_t l_start; off_t l_len; pid_t l_pid; }; # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 169 "/usr/include/sys/fcntl.h" 2 int open (const char *, int, ...) ; int creat (const char *, mode_t) ; int fcntl (int, int, ...) ; int flock (int, int) ; # 36 "/usr/include/sys/file.h" 2 # 1 "/usr/include/sys/unistd.h" 1 # 37 "/usr/include/sys/file.h" 2 # 73 "/usr/include/sys/file.h" # 179 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 char *getwd (); # 1 "/usr/include/sys/dir.h" 1 # 1 "/usr/include/dirent.h" 1 struct dirent { u_long d_fileno; u_short d_reclen; u_short d_namlen; char d_name[255 + 1]; }; typedef struct _dirdesc { int dd_fd; long dd_loc; long dd_size; char *dd_buf; int dd_len; long dd_seek; } DIR; # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 88 "/usr/include/dirent.h" 2 DIR *opendir (const char *) ; struct dirent *readdir (DIR *) ; void rewinddir (DIR *) ; int closedir (DIR *) ; long telldir (const DIR *) ; void seekdir (DIR *, long) ; int scandir (const char *, struct dirent ***, int (*)(struct dirent *), int (*)(const void *, const void *)) ; int alphasort (const void *, const void *) ; int getdirentries (int, char *, int, long *) ; # 44 "/usr/include/sys/dir.h" 2 # 208 "/usr/src/gnu/cvs/mkmodules/../lib/system.h" 2 # 3 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/include/stdio.h" 1 # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 42 "/usr/include/stdio.h" 2 # 1 "/usr/include/machine/ansi.h" 1 # 57 "/usr/include/machine/ansi.h" # 44 "/usr/include/stdio.h" 2 typedef long fpos_t; struct __sbuf { unsigned char *_base; int _size; }; typedef struct __sFILE { unsigned char *_p; int _r; int _w; short _flags; short _file; struct __sbuf _bf; int _lbfsize; void *_cookie; int (*_close) (void *) ; int (*_read) (void *, char *, int) ; fpos_t (*_seek) (void *, fpos_t, int) ; int (*_write) (void *, const char *, int) ; struct __sbuf _ub; unsigned char *_up; int _ur; unsigned char _ubuf[3]; unsigned char _nbuf[1]; struct __sbuf _lb; int _blksize; int _offset; } FILE; extern FILE __sF[]; void clearerr (FILE *) ; int fclose (FILE *) ; int feof (FILE *) ; int ferror (FILE *) ; int fflush (FILE *) ; int fgetc (FILE *) ; int fgetpos (FILE *, fpos_t *) ; char *fgets (char *, size_t, FILE *) ; FILE *fopen (const char *, const char *) ; int fprintf (FILE *, const char *, ...) ; int fputc (int, FILE *) ; int fputs (const char *, FILE *) ; int fread (void *, size_t, size_t, FILE *) ; FILE *freopen (const char *, const char *, FILE *) ; int fscanf (FILE *, const char *, ...) ; int fseek (FILE *, long, int) ; int fsetpos (FILE *, const fpos_t *) ; long ftell (const FILE *) ; int fwrite (const void *, size_t, size_t, FILE *) ; int getc (FILE *) ; int getchar (void) ; char *gets (char *) ; extern int sys_nerr; extern char *sys_errlist[]; void perror (const char *) ; int printf (const char *, ...) ; int putc (int, FILE *) ; int putchar (int) ; int puts (const char *) ; int remove (const char *) ; int rename (const char *, const char *) ; void rewind (FILE *) ; int scanf (const char *, ...) ; void setbuf (FILE *, char *) ; int setvbuf (FILE *, char *, int, size_t) ; int sprintf (char *, const char *, ...) ; int sscanf (char *, const char *, ...) ; FILE *tmpfile (void) ; char *tmpnam (char *) ; int ungetc (int, FILE *) ; int vfprintf (FILE *, const char *, char * ) ; int vprintf (const char *, char * ) ; int vsprintf (char *, const char *, char * ) ; char *ctermid (char *) ; FILE *fdopen (int, const char *) ; int fileno (FILE *) ; char *fgetline (FILE *, size_t *) ; int fpurge (FILE *) ; int getw (FILE *) ; int pclose (FILE *) ; FILE *popen (const char *, const char *) ; int putw (int, FILE *) ; void setbuffer (FILE *, char *, int) ; int setlinebuf (FILE *) ; char *tempnam (const char *, const char *) ; int snprintf (char *, size_t, const char *, ...) ; int vsnprintf (char *, size_t, const char *, char * ) ; int vscanf (const char *, char * ) ; int vsscanf (const char *, const char *, char * ) ; FILE *funopen (const void *, int (*)(void *, char *, int), int (*)(void *, const char *, int), fpos_t (*)(void *, fpos_t, int), int (*)(void *)) ; int __srget (FILE *) ; int __svfscanf (FILE *, const char *, char * ) ; int __swbuf (int, FILE *) ; static inline int __sputc(int _c, FILE *_p) { if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) return (*_p->_p++ = _c); else return (__swbuf(_c, _p)); } # 331 "/usr/include/stdio.h" # 4 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/include/ctype.h" 1 extern char _ctype_[]; # 5 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/include/pwd.h" 1 # 1 "/usr/include/sys/types.h" 1 # 135 "/usr/include/sys/types.h" # 39 "/usr/include/pwd.h" 2 struct passwd { char *pw_name; char *pw_passwd; int pw_uid; int pw_gid; time_t pw_change; char *pw_class; char *pw_gecos; char *pw_dir; char *pw_shell; time_t pw_expire; }; # 1 "/usr/include/sys/cdefs.h" 1 # 78 "/usr/include/sys/cdefs.h" # 72 "/usr/include/pwd.h" 2 struct passwd *getpwuid (uid_t) ; struct passwd *getpwnam (const char *) ; struct passwd *getpwent (void) ; int setpassent (int) ; int setpwent (void) ; void endpwent (void) ; # 6 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/include/signal.h" 1 # 222 "/usr/include/signal.h" # 7 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../cvs/hash.h" 1 enum ntype { UNKNOWN, HEADER, ENTRIES, FILES, LIST, RCSNODE, RCSVERS, DIRS, UPDATE, LOCK, NDBMNODE }; typedef enum ntype Ntype; struct node { Ntype type; struct node *next; struct node *prev; struct node *hashnext; struct node *hashprev; char *key; char *data; void (*delproc) (); }; typedef struct node Node; struct list { Node *list; Node *hasharray[151 ]; struct list *next; }; typedef struct list List; struct entnode { char *version; char *timestamp; char *options; char *tag; char *date; }; typedef struct entnode Entnode; List *getlist (void); Node *findnode (List * list, char *key); Node *getnode (void); int addnode (List * list, Node * p); int walklist (List * list, int (*proc) ()); void dellist (List ** listp); void delnode (Node * p); void freenode (Node * p); void sortlist (List * list, int (*comp) ()); # 77 "/usr/src/gnu/cvs/mkmodules/../cvs/hash.h" # 8 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../cvs/rcs.h" 1 struct rcsnode { int refcount; int flags; char *path; char *head; char *branch; List *symbols; List *versions; List *dates; }; typedef struct rcsnode RCSNode; struct rcsversnode { char *version; char *date; char *next; List *branches; }; typedef struct rcsversnode RCSVers; List *RCS_parsefiles (List * files, char *xrepos); RCSNode *RCS_parse (char *file, char *repos); RCSNode *RCS_parsercsfile (char *rcsfile); char *RCS_check_kflag (char *arg); char *RCS_getdate (RCSNode * rcs, char *date, int force_tag_match); char *RCS_gettag (RCSNode * rcs, char *tag, int force_tag_match); char *RCS_getversion (RCSNode * rcs, char *tag, char *date, int force_tag_match); char *RCS_magicrev (RCSNode *rcs, char *rev); int RCS_isbranch (char *file, char *rev, List *srcfiles); char *RCS_whatbranch (char *file, char *tag, List *srcfiles); char *RCS_head (RCSNode * rcs); int RCS_datecmp (char *date1, char *date2); time_t RCS_getrevtime (RCSNode * rcs, char *rev, char *date, int fudge); void RCS_check_tag (char *tag); void freercsnode (RCSNode ** rnodep); # 102 "/usr/src/gnu/cvs/mkmodules/../cvs/rcs.h" # 9 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../lib/regex.h" 1 typedef unsigned reg_syntax_t; extern reg_syntax_t obscure_syntax; typedef enum { REG_NOERROR = 0, REG_NOMATCH, REG_BADPAT, REG_ECOLLATE, REG_ECTYPE, REG_EESCAPE, REG_ESUBREG, REG_EBRACK, REG_EPAREN, REG_EBRACE, REG_BADBR, REG_ERANGE, REG_ESPACE, REG_BADRPT, REG_EEND, REG_ESIZE, REG_ERPAREN } reg_errcode_t; struct re_pattern_buffer { unsigned char *buffer; unsigned long allocated; unsigned long used; reg_syntax_t syntax; char *fastmap; char *translate; size_t re_nsub; unsigned can_be_null : 2; unsigned fastmap_accurate : 1; unsigned no_sub : 1; unsigned not_bol : 1; unsigned not_eol : 1; unsigned newline_anchor : 1; unsigned caller_allocated_regs : 1; }; typedef struct re_pattern_buffer regex_t; typedef int regoff_t; struct re_registers { unsigned num_regs; regoff_t *start; regoff_t *end; }; typedef struct { regoff_t rm_so; regoff_t rm_eo; } regmatch_t; extern reg_syntax_t re_set_syntax (reg_syntax_t syntax); extern const char *re_compile_pattern (const char *pattern, int length, struct re_pattern_buffer *buffer); extern int re_compile_fastmap (struct re_pattern_buffer *buffer); extern int re_search (struct re_pattern_buffer *buffer, const char *string, int length, int start, int range, struct re_registers *regs); extern int re_search_2 (struct re_pattern_buffer *buffer, const char *string1, int length1, const char *string2, int length2, int start, int range, struct re_registers *regs, int stop); extern int re_match (const struct re_pattern_buffer *buffer, const char *string, int length, int start, struct re_registers *regs); extern int re_match_2 (const struct re_pattern_buffer *buffer, const char *string1, int length1, const char *string2, int length2, int start, struct re_registers *regs, int stop); extern int regcomp (regex_t *preg, const char *pattern, int cflags); extern int regexec (const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags); extern size_t regerror (int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size); extern void regfree (regex_t *preg); # 468 "/usr/src/gnu/cvs/mkmodules/../lib/regex.h" # 10 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../lib/fnmatch.h" 1 extern int fnmatch (const char *pattern, const char *string, int flags); # 11 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../lib/getopt.h" 1 extern char *optarg; extern int optind; extern int opterr; struct option { char *name; int has_arg; int *flag; int val; }; extern const struct option *_getopt_long_options; extern int _getopt_long_only; extern int option_index; int gnu_getopt (int argc, char **argv, const char *shortopts); int gnu_getopt_long (int argc, char **argv, const char *shortopts, const struct option *longopts, int *longind); int gnu_getopt_long_only (int argc, char **argv, const char *shortopts, const struct option *longopts, int *longind); # 12 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../lib/wait.h" 1 # 13 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../cvs/config.h" 1 extern void exit (); extern char *getwd (); # 14 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 # 1 "/usr/src/gnu/cvs/mkmodules/../cvs/myndbm.h" 1 typedef struct { List *dbm_list; Node *dbm_next; } DBM; typedef struct { char *dptr; int dsize; } datum; DBM *mydbm_open (char *file, int flags, int mode); void mydbm_close (DBM * db); datum mydbm_fetch (DBM * db, datum key); datum mydbm_firstkey (DBM * db); datum mydbm_nextkey (DBM * db); # 16 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" 2 enum mtype { CHECKOUT, TAG, PATCH }; enum classify_type { T_UNKNOWN = 1, T_CONFLICT, T_NEEDS_MERGE, T_MODIFIED, T_CHECKOUT, T_ADDED, T_REMOVED, T_REMOVE_ENTRY, T_UPTODATE, T_TITLE }; typedef enum classify_type Ctype; struct vers_ts { char *vn_user; char *vn_rcs; char *ts_user; char *ts_rcs; char *options; char *tag; char *date; Entnode *entdata; RCSNode *srcfile; }; typedef struct vers_ts Vers_TS; struct stickydirtag { int aflag; char *tag; char *date; char *options; }; enum direnter_type { R_PROCESS = 1, R_SKIP_FILES, R_SKIP_DIRS, R_SKIP_ALL }; typedef enum direnter_type Dtype; extern char *program_name, *command_name; extern char *Rcsbin, *Editor, *CVSroot; extern char *CurDir; extern int really_quiet, quiet; extern int use_editor; extern int cvswrite; extern int trace; extern int noexec; extern int logoff; int Reader_Lock (char *xrepository); DBM *open_module (void); FILE *Fopen (char *name, char *mode); FILE *open_file (char *name, char *mode); List *Find_Dirs (char *repository, int which); List *ParseEntries (int aflag); char *Make_Date (char *rawdate); char *Name_Repository (char *dir, char *update_dir); char *Short_Repository (char *repository); char *getcaller (void); char *time_stamp (char *file); char *xmalloc (int bytes); char *xrealloc (char *ptr, int bytes); char *xstrdup (char *str); int No_Difference (char *file, Vers_TS * vers, List * entries); int Parse_Info (char *infofile, char *repository, int (*callproc) (), int all); int Reader_Lock (char *xrepository); int SIG_register (int sig, void (*fn) ()); int Writer_Lock (List * list); int gethostname (char *name, int namelen); int ign_name (char *name); int isdir (char *file); int isfile (char *file); int islink (char *file); int isreadable (char *file); int iswritable (char *file); int link_file (char *from, char *to); int numdots (char *s); int run_exec (char *stin, char *stout, char *sterr, int flags); int unlink_file (char *f); int update (int argc, char *argv[]); int xcmp (char *file1, char *file2); int yesno (void); time_t get_date (char *date, struct timeb *now); void Create_Admin (char *dir, char *repository, char *tag, char *date); void Lock_Cleanup (void); void ParseTag (char **tagp, char **datep); void Scratch_Entry (List * list, char *fname); void WriteTag (char *dir, char *tag, char *date); void cat_module (int status); void check_entries (char *dir); void close_module (DBM * db); void copy_file (char *from, char *to); void error (int status, int errnum, char *message,...); void fperror (FILE * fp, int status, int errnum, char *message,...); void free_names (int *pargc, char *argv[]); void freevers_ts (Vers_TS ** versp); void ign_add (char *ign, int hold); void ign_add_file (char *file, int hold); void ign_setup (void); void line2argv (int *pargc, char *argv[], char *line); void make_directories (char *name); void make_directory (char *name); void rename_file (char *from, char *to); void run_arg (char *s); void run_args (char *fmt,...); void run_print (FILE * fp); void run_setup (char *fmt,...); void strip_path (char *path); void update_delproc (Node * p); void usage (char **cpp); void xchmod (char *fname, int writable); int Checkin (int type, char *file, char *repository, char *rcs, char *rev, char *tag, char *message, List * entries); Ctype Classify_File (char *file, char *tag, char *date, char *options, int force_tag_match, int aflag, char *repository, List *entries, List *srcfiles, Vers_TS **versp); List *Find_Names (char *repository, int which, int aflag, List ** optentries); void Register (List * list, char *fname, char *vn, char *ts, char *options, char *tag, char *date); void Update_Logfile (char *repository, char *xmessage, char *xrevision, FILE * xlogfp, List * xchanges); Vers_TS *Version_TS (char *repository, char *options, char *tag, char *date, char *user, int force_tag_match, int set_time, List * entries, List * xfiles); void do_editor (char *dir, char *message, char *repository, List * changes); int do_module (DBM * db, char *mname, enum mtype m_type, char *msg, int (*callback_proc) (), char *where, int shorten, int local_specified, int run_module_prog, char *extra_arg); int do_recursion (int (*xfileproc) (), int (*xfilesdoneproc) (), Dtype (*xdirentproc) (), int (*xdirleaveproc) (), Dtype xflags, int xwhich, int xaflag, int xreadlock, int xdosrcs); int do_update (int argc, char *argv[], char *xoptions, char *xtag, char *xdate, int xforce, int local, int xbuild, int xaflag, int xprune, int xpipeout, int which, char *xjoin_rev1, char *xjoin_rev2, char *preload_update_dir); void history_write (int type, char *update_dir, char *revs, char *name, char *repository); int start_recursion (int (*fileproc) (), int (*filesdoneproc) (), Dtype (*direntproc) (), int (*dirleaveproc) (), int argc, char *argv[], int local, int which, int aflag, int readlock, char *update_preload, int dosrcs); void SIG_beginCrSect (); void SIG_endCrSect (); # 438 "/usr/src/gnu/cvs/mkmodules/../cvs/cvs.h" # 15 "/usr/src/gnu/cvs/mkmodules/mkmodules.c" 2 PATH_MAX +2 static char rcsid[] = "@(#)mkmodules.c 1.39 92/03/31"; char *program_name, *command_name; char *Rcsbin = "" ; int noexec = 0; int trace = 0; static int checkout_file (char *file, char *temp); static void make_tempfile (char *temp); static void mkmodules_usage (void); static void rename_rcsfile (char *temp, char *real); # 60 "/usr/src/gnu/cvs/mkmodules/mkmodules.c" int main (argc, argv) int argc; char *argv[]; { extern char *getenv (); char temp[PATH_MAX +2 ]; char *cp; DBM *db; if ((program_name = rindex (argv[0], '/')) == 0 ) program_name = argv[0]; else program_name++; if (argc != 2) mkmodules_usage (); if ((cp = getenv ("RCSBIN" )) != 0 ) Rcsbin = cp; if (Rcsbin[0] != '\0') { int len = strlen (Rcsbin); char *rcsbin; if (Rcsbin[len - 1] != '/') { rcsbin = Rcsbin; Rcsbin = xmalloc (len + 2); (void) strcpy (Rcsbin, rcsbin); (void) strcat (Rcsbin, "/"); } } if (chdir (argv[1]) < 0) error (1, errno, "cannot chdir to %s", argv[1]); make_tempfile (temp); switch (checkout_file ("modules" , temp)) { case 0: if ((db = mydbm_open (temp, 0x0000 , 0666)) != 0 ) mydbm_close (db); rename_rcsfile (temp, "modules" ); break; case -1: (void) unlink_file (temp); exit (1); default: error (0, 0, "'cvs checkout' is less functional without a %s file", "modules" ); break; } (void) unlink_file (temp); make_tempfile (temp); if (checkout_file ("loginfo" , temp) == 0) rename_rcsfile (temp, "loginfo" ); else error (0, 0, "no logging of 'cvs commit' messages is done without a %s file", "loginfo" ); (void) unlink_file (temp); make_tempfile (temp); if (checkout_file ("rcsinfo" , temp) == 0) rename_rcsfile (temp, "rcsinfo" ); else error (0, 0, "a %s file can be used to configure 'cvs commit' templates", "rcsinfo" ); (void) unlink_file (temp); make_tempfile (temp); if (checkout_file ("editinfo" , temp) == 0) rename_rcsfile (temp, "editinfo" ); else error (0, 0, "a %s file can be used to validate log messages", "editinfo" ); (void) unlink_file (temp); make_tempfile (temp); if (checkout_file ("commitinfo" , temp) == 0) rename_rcsfile (temp, "commitinfo" ); else error (0, 0, "a %s file can be used to configure 'cvs commit' checking", "commitinfo" ); (void) unlink_file (temp); return (0); } static void make_tempfile (temp) char *temp; { static int seed = 0; int fd; if (seed == 0) seed = getpid (); while (1) { (void) sprintf (temp, "%s%d", ".#" , seed++); if ((fd = open (temp, 0x0200 | 0x0800 | 0x0002 , 0666)) != -1) break; if (errno != 17 ) error (1, errno, "cannot create temporary file %s", temp); } if (close(fd) < 0) error(1, errno, "cannot close temporary file %s", temp); } static int checkout_file (file, temp) char *file; char *temp; { char rcs[PATH_MAX +2 ]; int retcode = 0; (void) sprintf (rcs, "%s%s", file, ",v" ); if (!isfile (rcs)) return (1); run_setup ("%s%s -q -p", Rcsbin, "co" ); run_arg (rcs); if ((retcode = run_exec ( (char *)0 , temp, (char *)0 , 0x0000 )) != 0) { error (0, retcode == -1 ? errno : 0, "failed to check out %s file", file); } return (retcode); } # 369 "/usr/src/gnu/cvs/mkmodules/mkmodules.c" static void rename_rcsfile (temp, real) char *temp; char *real; { char bak[50]; if (chmod (temp, 0444) < 0) error (0, errno, "warning: cannot chmod %s", temp); (void) sprintf (bak, "%s%s", ".#" , real); (void) unlink_file (bak); (void) rename (real, bak); (void) rename (temp, real); } void Lock_Cleanup () { } static void mkmodules_usage () { (void) fprintf ((&__sF[2]) , "Usage: %s modules-directory\n", program_name); exit (1); }