rcs.h revision 17721
117721Speter/* $CVSid: @(#)rcs.h 1.18 94/09/23 $ */ 217721Speter 317721Speter/* 417721Speter * Copyright (c) 1992, Brian Berliner and Jeff Polk 517721Speter * Copyright (c) 1989-1992, Brian Berliner 617721Speter * 717721Speter * You may distribute under the terms of the GNU General Public License as 817721Speter * specified in the README file that comes with the CVS 1.4 kit. 917721Speter * 1017721Speter * RCS source control definitions needed by rcs.c and friends 1117721Speter */ 1217721Speter 1317721Speter#define RCS "rcs" 1417721Speter#define RCS_CI "ci" 1517721Speter#define RCS_CO "co" 1617721Speter#define RCS_RLOG "rlog" 1717721Speter#define RCS_DIFF "rcsdiff" 1817721Speter#define RCS_RCSMERGE "rcsmerge" 1917721Speter#define RCS_MERGE_PAT "^>>>>>>> " /* runs "grep" with this pattern */ 2017721Speter#define RCSEXT ",v" 2117721Speter#define RCSPAT "*,v" 2217721Speter#define RCSHEAD "head" 2317721Speter#define RCSBRANCH "branch" 2417721Speter#define RCSSYMBOLS "symbols" 2517721Speter#define RCSDATE "date" 2617721Speter#define RCSDESC "desc" 2717721Speter#define RCSEXPAND "expand" 2817721Speter 2917721Speter/* Used by the version of death support which resulted from old 3017721Speter versions of CVS (e.g. 1.5 if you define DEATH_SUPPORT and not 3117721Speter DEATH_STATE). Only a hacked up RCS (used by those old versions of 3217721Speter CVS) will put this into RCS files. Considered obsolete. */ 3317721Speter#define RCSDEAD "dead" 3417721Speter 3517721Speter#define DATEFORM "%02d.%02d.%02d.%02d.%02d.%02d" 3617721Speter#define SDATEFORM "%d.%d.%d.%d.%d.%d" 3717721Speter 3817721Speter/* 3917721Speter * Opaque structure definitions used by RCS specific lookup routines 4017721Speter */ 4117721Speter#define VALID 0x1 /* flags field contains valid data */ 4217721Speter#define INATTIC 0x2 /* RCS file is located in the Attic */ 4317721Speter#define PARTIAL 0x4 /* RCS file not completly parsed */ 4417721Speter 4517721Speterstruct rcsnode 4617721Speter{ 4717721Speter int refcount; 4817721Speter int flags; 4917721Speter char *path; 5017721Speter char *head; 5117721Speter char *branch; 5217721Speter char *symbols_data; 5317721Speter char *expand; 5417721Speter List *symbols; 5517721Speter List *versions; 5617721Speter}; 5717721Speter 5817721Spetertypedef struct rcsnode RCSNode; 5917721Speter 6017721Speterstruct rcsversnode 6117721Speter{ 6217721Speter char *version; 6317721Speter char *date; 6417721Speter char *author; 6517721Speter char *next; 6617721Speter int dead; 6717721Speter List *branches; 6817721Speter}; 6917721Spetertypedef struct rcsversnode RCSVers; 7017721Speter 7117721Speter/* 7217721Speter * CVS reserves all even-numbered branches for its own use. "magic" branches 7317721Speter * (see rcs.c) are contained as virtual revision numbers (within symbolic 7417721Speter * tags only) off the RCS_MAGIC_BRANCH, which is 0. CVS also reserves the 7517721Speter * ".1" branch for vendor revisions. So, if you do your own branching, you 7617721Speter * should limit your use to odd branch numbers starting at 3. 7717721Speter */ 7817721Speter#define RCS_MAGIC_BRANCH 0 7917721Speter 8017721Speter/* 8117721Speter * exported interfaces 8217721Speter */ 8317721SpeterRCSNode *RCS_parse PROTO((const char *file, const char *repos)); 8417721SpeterRCSNode *RCS_parsercsfile PROTO((char *rcsfile)); 8517721Speterchar *RCS_check_kflag PROTO((const char *arg)); 8617721Speterchar *RCS_getdate PROTO((RCSNode * rcs, char *date, int force_tag_match)); 8717721Speterchar *RCS_gettag PROTO((RCSNode * rcs, char *symtag, int force_tag_match, 8817721Speter int return_both)); 8917721Speterchar *RCS_getversion PROTO((RCSNode * rcs, char *tag, char *date, 9017721Speter int force_tag_match, int return_both)); 9117721Speterchar *RCS_magicrev PROTO((RCSNode *rcs, char *rev)); 9217721Speterint RCS_isbranch PROTO((RCSNode *rcs, const char *rev)); 9317721Speterint RCS_nodeisbranch PROTO((RCSNode *rcs, const char *tag)); 9417721Speterchar *RCS_whatbranch PROTO((RCSNode *rcs, const char *tag)); 9517721Speterchar *RCS_head PROTO((RCSNode * rcs)); 9617721Speterint RCS_datecmp PROTO((char *date1, char *date2)); 9717721Spetertime_t RCS_getrevtime PROTO((RCSNode * rcs, char *rev, char *date, int fudge)); 9817721SpeterList *RCS_symbols PROTO((RCSNode *rcs)); 9917721Spetervoid RCS_check_tag PROTO((const char *tag)); 10017721Spetervoid freercsnode PROTO((RCSNode ** rnodep)); 10117721Speterchar *RCS_getbranch PROTO((RCSNode * rcs, char *tag, int force_tag_match)); 10217721Speter 10317721Speterint RCS_isdead PROTO((RCSNode *, const char *)); 10417721Speterchar *RCS_getexpand PROTO ((RCSNode *)); 105