# 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);
}
|