1*2f43a3f5Sderaadt /* $OpenBSD: cvs.h,v 1.185 2021/01/27 07:18:17 deraadt Exp $ */ 208f90673Sjfb /* 308f90673Sjfb * Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org> 408f90673Sjfb * All rights reserved. 508f90673Sjfb * 608f90673Sjfb * Redistribution and use in source and binary forms, with or without 708f90673Sjfb * modification, are permitted provided that the following conditions 808f90673Sjfb * are met: 908f90673Sjfb * 1008f90673Sjfb * 1. Redistributions of source code must retain the above copyright 1108f90673Sjfb * notice, this list of conditions and the following disclaimer. 1208f90673Sjfb * 2. The name of the author may not be used to endorse or promote products 1308f90673Sjfb * derived from this software without specific prior written permission. 1408f90673Sjfb * 1508f90673Sjfb * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 1608f90673Sjfb * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 1708f90673Sjfb * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 1808f90673Sjfb * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 1908f90673Sjfb * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 2008f90673Sjfb * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 2108f90673Sjfb * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2208f90673Sjfb * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2308f90673Sjfb * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 2408f90673Sjfb * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2508f90673Sjfb */ 2608f90673Sjfb 2708f90673Sjfb #ifndef CVS_H 2808f90673Sjfb #define CVS_H 2908f90673Sjfb 301f8531bdSotto #include <signal.h> 311f8531bdSotto 321f8531bdSotto #include "config.h" 331f8531bdSotto #include "file.h" 341f8531bdSotto #include "log.h" 351f8531bdSotto #include "worklist.h" 361f8531bdSotto #include "repository.h" 37b034d592Sjoris #include "trigger.h" 383ad3fb45Sjoris #include "util.h" 390dbb72f1Sniallo #include "xmalloc.h" 4008f90673Sjfb 412fb8a869Sjoris #define CVS_VERSION "OpenCVS 4.5" 4208f90673Sjfb 430a7da307Sxsa #define CVS_REV_BUFSZ 32 440a7da307Sxsa #define CVS_TIME_BUFSZ 64 450a7da307Sxsa 4625d9b074Sxsa #define CVS_DATE_FMT "%Y.%m.%d.%H.%M.%S" 4725d9b074Sxsa 4808f90673Sjfb /* operations */ 4982b8a584Sjfb #define CVS_OP_UNKNOWN 0 5008f90673Sjfb #define CVS_OP_ADD 1 51a202d28bSjfb #define CVS_OP_ADMIN 2 52a202d28bSjfb #define CVS_OP_ANNOTATE 3 53a202d28bSjfb #define CVS_OP_CHECKOUT 4 54a202d28bSjfb #define CVS_OP_COMMIT 5 55a202d28bSjfb #define CVS_OP_DIFF 6 56a202d28bSjfb #define CVS_OP_EDIT 7 57a202d28bSjfb #define CVS_OP_EDITORS 8 58a202d28bSjfb #define CVS_OP_EXPORT 9 59a202d28bSjfb #define CVS_OP_HISTORY 10 60a202d28bSjfb #define CVS_OP_IMPORT 11 61a202d28bSjfb #define CVS_OP_INIT 12 62a202d28bSjfb #define CVS_OP_LOG 13 63a202d28bSjfb #define CVS_OP_RANNOTATE 14 64a202d28bSjfb #define CVS_OP_RDIFF 15 65a202d28bSjfb #define CVS_OP_RELEASE 16 66a202d28bSjfb #define CVS_OP_REMOVE 17 67a202d28bSjfb #define CVS_OP_RLOG 18 68a202d28bSjfb #define CVS_OP_RTAG 19 69a202d28bSjfb #define CVS_OP_SERVER 20 70a202d28bSjfb #define CVS_OP_STATUS 21 71a202d28bSjfb #define CVS_OP_TAG 22 72a202d28bSjfb #define CVS_OP_UNEDIT 23 73a202d28bSjfb #define CVS_OP_UPDATE 24 74a202d28bSjfb #define CVS_OP_VERSION 25 75a202d28bSjfb #define CVS_OP_WATCH 26 76a202d28bSjfb #define CVS_OP_WATCHERS 27 7708f90673Sjfb 7808f90673Sjfb /* methods */ 7908f90673Sjfb #define CVS_METHOD_NONE 0 8008f90673Sjfb #define CVS_METHOD_LOCAL 1 /* local access */ 8108f90673Sjfb #define CVS_METHOD_SERVER 2 /* tunnel through CVS_RSH */ 8208f90673Sjfb #define CVS_METHOD_PSERVER 3 /* cvs pserver */ 8308f90673Sjfb #define CVS_METHOD_KSERVER 4 /* kerberos */ 8408f90673Sjfb #define CVS_METHOD_GSERVER 5 /* gssapi server */ 8508f90673Sjfb #define CVS_METHOD_EXT 6 8608f90673Sjfb #define CVS_METHOD_FORK 7 /* local but fork */ 8708f90673Sjfb 8808f90673Sjfb #define CVS_CMD_MAXNAMELEN 16 8908f90673Sjfb #define CVS_CMD_MAXALIAS 2 9008f90673Sjfb #define CVS_CMD_MAXDESCRLEN 64 9108f90673Sjfb 92f331ff59Stobias /* flags */ 93fb3beb6cSjoris #define CVS_USE_WDIR 0x01 94fb3beb6cSjoris #define CVS_LOCK_REPO 0x02 95f331ff59Stobias 9608f90673Sjfb /* defaults */ 973b1aca6bSjfb #define CVS_SERVER_DEFAULT "cvs" 9808f90673Sjfb #define CVS_RSH_DEFAULT "ssh" 9908f90673Sjfb #define CVS_EDITOR_DEFAULT "vi" 100e5cbdd76Sxsa #define CVS_TMPDIR_DEFAULT "/tmp" 10118911d1eSjoris #define CVS_UMASK_DEFAULT 002 10208f90673Sjfb 103665e4805Sxsa /* extensions */ 104665e4805Sxsa #define CVS_DESCR_FILE_EXT ",t" 10508f90673Sjfb 10608f90673Sjfb /* server-side paths */ 10767caf486Sjoris #define CVS_PATH_DEVNULL "/dev/null" 10808f90673Sjfb #define CVS_PATH_ROOT "CVSROOT" 1098c53ed4fSxsa #define CVS_PATH_EMPTYDIR CVS_PATH_ROOT "/Emptydir" 110db68708cSxsa #define CVS_PATH_CHECKOUTLIST CVS_PATH_ROOT "/checkoutlist" 11108f90673Sjfb #define CVS_PATH_COMMITINFO CVS_PATH_ROOT "/commitinfo" 11208f90673Sjfb #define CVS_PATH_CONFIG CVS_PATH_ROOT "/config" 11308f90673Sjfb #define CVS_PATH_CVSIGNORE CVS_PATH_ROOT "/cvsignore" 11408f90673Sjfb #define CVS_PATH_CVSWRAPPERS CVS_PATH_ROOT "/cvswrappers" 11508f90673Sjfb #define CVS_PATH_EDITINFO CVS_PATH_ROOT "/editinfo" 11608f90673Sjfb #define CVS_PATH_HISTORY CVS_PATH_ROOT "/history" 11708f90673Sjfb #define CVS_PATH_LOGINFO CVS_PATH_ROOT "/loginfo" 11808f90673Sjfb #define CVS_PATH_MODULES CVS_PATH_ROOT "/modules" 11984618539Sxsa #define CVS_PATH_NOTIFY_R CVS_PATH_ROOT "/notify" 12008f90673Sjfb #define CVS_PATH_RCSINFO CVS_PATH_ROOT "/rcsinfo" 12108f90673Sjfb #define CVS_PATH_TAGINFO CVS_PATH_ROOT "/taginfo" 122db68708cSxsa #define CVS_PATH_VALTAGS CVS_PATH_ROOT "/val-tags" 12308f90673Sjfb #define CVS_PATH_VERIFYMSG CVS_PATH_ROOT "/verifymsg" 12408f90673Sjfb 12508f90673Sjfb /* client-side paths */ 12608f90673Sjfb #define CVS_PATH_RC ".cvsrc" 12708f90673Sjfb #define CVS_PATH_CVSDIR "CVS" 1285deb5582Sxsa #define CVS_PATH_BASEDIR CVS_PATH_CVSDIR "/Base" 1295deb5582Sxsa #define CVS_PATH_BASEREV CVS_PATH_CVSDIR "/Baserev" 1305deb5582Sxsa #define CVS_PATH_BASEREVTMP CVS_PATH_CVSDIR "/Baserev.tmp" 1315deb5582Sxsa #define CVS_PATH_CHECKINPROG CVS_PATH_CVSDIR "/Checkin.prog" 13208f90673Sjfb #define CVS_PATH_ENTRIES CVS_PATH_CVSDIR "/Entries" 13308f90673Sjfb #define CVS_PATH_STATICENTRIES CVS_PATH_CVSDIR "/Entries.Static" 13408f90673Sjfb #define CVS_PATH_LOGENTRIES CVS_PATH_CVSDIR "/Entries.Log" 135a3864909Sjoris #define CVS_PATH_BACKUPENTRIES CVS_PATH_CVSDIR "/Entries.Backup" 1365deb5582Sxsa #define CVS_PATH_NOTIFY CVS_PATH_CVSDIR "/Notify" 1375deb5582Sxsa #define CVS_PATH_NOTIFYTMP CVS_PATH_CVSDIR "/Notify.tmp" 13808f90673Sjfb #define CVS_PATH_ROOTSPEC CVS_PATH_CVSDIR "/Root" 1392e6997a3Sjfb #define CVS_PATH_REPOSITORY CVS_PATH_CVSDIR "/Repository" 140f5b85944Sxsa #define CVS_PATH_TAG CVS_PATH_CVSDIR "/Tag" 1415deb5582Sxsa #define CVS_PATH_TEMPLATE CVS_PATH_CVSDIR "/Template" 1425deb5582Sxsa #define CVS_PATH_UPDATEPROG CVS_PATH_CVSDIR "/Update.prog" 1438066e34cSjoris #define CVS_PATH_ATTIC "Attic" 14408f90673Sjfb 1453901dfa5Sjoris /* history stuff */ 1463901dfa5Sjoris #define CVS_HISTORY_TAG 0 1473901dfa5Sjoris #define CVS_HISTORY_CHECKOUT 1 1483901dfa5Sjoris #define CVS_HISTORY_EXPORT 2 1493901dfa5Sjoris #define CVS_HISTORY_RELEASE 3 1503901dfa5Sjoris #define CVS_HISTORY_UPDATE_REMOVE 4 1513901dfa5Sjoris #define CVS_HISTORY_UPDATE_CO 5 1523901dfa5Sjoris #define CVS_HISTORY_UPDATE_MERGED 6 1533901dfa5Sjoris #define CVS_HISTORY_UPDATE_MERGED_ERR 7 1543901dfa5Sjoris #define CVS_HISTORY_COMMIT_MODIFIED 8 1553901dfa5Sjoris #define CVS_HISTORY_COMMIT_ADDED 9 1563901dfa5Sjoris #define CVS_HISTORY_COMMIT_REMOVED 10 1573901dfa5Sjoris 1583901dfa5Sjoris void cvs_history_add(int, struct cvs_file *, const char *); 1593901dfa5Sjoris 160d868b2d9Sjoris struct cvs_cmd { 161ec6ed1abSjoris u_int cmd_op; 162f331ff59Stobias u_int cmd_flags; 163d868b2d9Sjoris char cmd_name[CVS_CMD_MAXNAMELEN]; 164d868b2d9Sjoris char cmd_alias[CVS_CMD_MAXALIAS][CVS_CMD_MAXNAMELEN]; 165e4276007Sjfb char cmd_descr[CVS_CMD_MAXDESCRLEN]; 166d868b2d9Sjoris char *cmd_synopsis; 167d868b2d9Sjoris char *cmd_opts; 168d868b2d9Sjoris char *cmd_defargs; 169e4276007Sjfb 1703ad3fb45Sjoris int (*cmd)(int, char **); 171d868b2d9Sjoris }; 17208f90673Sjfb 1733ad3fb45Sjoris struct cvsroot; 1743ad3fb45Sjoris 1753ad3fb45Sjoris struct cvs_recursion { 1763ad3fb45Sjoris void (*enterdir)(struct cvs_file *); 1773ad3fb45Sjoris void (*leavedir)(struct cvs_file *); 178bc5d89feSjoris void (*fileproc)(struct cvs_file *); 1791890abdaSjoris int flags; 1803ad3fb45Sjoris }; 1810c1ec078Sjfb 1821890abdaSjoris #define CR_RECURSE_DIRS 0x01 1831890abdaSjoris #define CR_ATTIC 0x02 1841890abdaSjoris #define CR_REPO 0x04 1851890abdaSjoris 1862d540844Sjfb struct cvs_var { 1872d540844Sjfb char *cv_name; 1882d540844Sjfb char *cv_val; 1892d540844Sjfb TAILQ_ENTRY(cvs_var) cv_link; 1902d540844Sjfb }; 1912d540844Sjfb 192*2f43a3f5Sderaadt extern TAILQ_HEAD(cvs_varhead, cvs_var) cvs_variables; 193b4a9add8Sxsa 1942ecd5aabSjfb #define CVS_ROOT_CONNECTED 0x01 1952ecd5aabSjfb 19608f90673Sjfb struct cvsroot { 1970d5dc07bSjfb char *cr_str; 19808f90673Sjfb u_int cr_method; 19908f90673Sjfb char *cr_buf; 20008f90673Sjfb char *cr_user; 20108f90673Sjfb char *cr_pass; 20208f90673Sjfb char *cr_host; 20308f90673Sjfb char *cr_dir; 20447c33804Sjoris u_int cr_port; 2050d5dc07bSjfb 2060d5dc07bSjfb /* connection data */ 2070d5dc07bSjfb FILE *cr_srvin; 2080d5dc07bSjfb FILE *cr_srvout; 2093b1aca6bSjfb FILE *cr_srverr; 21008f90673Sjfb }; 21108f90673Sjfb 21208f90673Sjfb #define CVS_HIST_ADDED 'A' 21308f90673Sjfb #define CVS_HIST_EXPORT 'E' 21408f90673Sjfb #define CVS_HIST_RELEASE 'F' 21508f90673Sjfb #define CVS_HIST_MODIFIED 'M' 21608f90673Sjfb #define CVS_HIST_CHECKOUT 'O' 21708f90673Sjfb #define CVS_HIST_COMMIT 'R' 21808f90673Sjfb #define CVS_HIST_TAG 'T' 21908f90673Sjfb 220cefff877Sjfb #define CVS_DATE_DUMMY "dummy timestamp" 221cefff877Sjfb #define CVS_DATE_DMSEC (time_t)-1 22270b74753Sjfb 22308f90673Sjfb #define CVS_ENT_NONE 0 22408f90673Sjfb #define CVS_ENT_FILE 1 22508f90673Sjfb #define CVS_ENT_DIR 2 22608f90673Sjfb 2279a795badSjfb #define CVS_ENT_REG 0 2289a795badSjfb #define CVS_ENT_ADDED 1 2299a795badSjfb #define CVS_ENT_REMOVED 2 230a8778568Sjoris #define CVS_ENT_UPTODATE 3 231bf2db54cSjoris #define CVS_ENT_UNKNOWN 4 23270b74753Sjfb 2335190dc2fSxsa #define CVS_ENT_MAXLINELEN 1024 2345190dc2fSxsa 2353ad3fb45Sjoris #define ENT_NOSYNC 0 2363ad3fb45Sjoris #define ENT_SYNC 1 23708bd75e9Sjfb 238869a71f2Sjoris #define STRIP_SLASH(p) \ 239869a71f2Sjoris do { \ 240869a71f2Sjoris size_t _slen; \ 241869a71f2Sjoris _slen = strlen(p); \ 242869a71f2Sjoris while ((_slen > 0) && (p[_slen - 1] == '/')) \ 243869a71f2Sjoris p[--_slen] = '\0'; \ 244869a71f2Sjoris } while (0) 2453ad3fb45Sjoris 24608f90673Sjfb struct cvs_ent { 24708f90673Sjfb char *ce_buf; 2489159bf17Sjoris char *ce_conflict; 24908f90673Sjfb char *ce_name; 25008f90673Sjfb char *ce_opts; 25108f90673Sjfb char *ce_tag; 252694b1da3Sstsp char *ce_time; 253d0a588b9Sjoris time_t ce_date; 2543ad3fb45Sjoris time_t ce_mtime; 2553ad3fb45Sjoris u_int16_t ce_type; 2563ad3fb45Sjoris u_int16_t ce_status; 2573ad3fb45Sjoris RCSNUM *ce_rev; 2583ad3fb45Sjoris }; 259ff117408Sjoris 2603ad3fb45Sjoris struct cvs_ent_line { 2613ad3fb45Sjoris char *buf; 2623ad3fb45Sjoris TAILQ_ENTRY(cvs_ent_line) entries_list; 26308f90673Sjfb }; 26408f90673Sjfb 26508f90673Sjfb typedef struct cvs_entries { 26608f90673Sjfb char *cef_path; 267a3864909Sjoris char *cef_bpath; 2683ad3fb45Sjoris char *cef_lpath; 26908f90673Sjfb 2703ad3fb45Sjoris TAILQ_HEAD(, cvs_ent_line) cef_ent; 27108f90673Sjfb } CVSENTRIES; 27208f90673Sjfb 27302d9e5c9Sjoris extern char *checkout_target_dir; 27425d391d7Sjoris extern char *cvs_join_rev1; 27525d391d7Sjoris extern char *cvs_join_rev2; 276daa36f23Snicm extern int backup_local_changes; 27702d9e5c9Sjoris 278bf6291b7Sjoris extern struct module_checkout *current_module; 279bf6291b7Sjoris extern char *module_repo_root; 280bf6291b7Sjoris 2817fca5395Sjoris extern struct ignore_head checkout_ign_pats; 2827a9e6d11Sray extern struct wklhead temp_files; 2833ad3fb45Sjoris extern volatile sig_atomic_t sig_received; 2843ad3fb45Sjoris extern volatile sig_atomic_t cvs_quit; 2853ad3fb45Sjoris extern struct cvsroot *current_cvsroot; 28618911d1eSjoris extern char *cvs_tagname; 2877364655aSjfb extern char *cvs_editor; 28858cbd44dSxsa extern char *cvs_homedir; 28980365430Sjfb extern char *cvs_rsh; 290e5cbdd76Sxsa extern char *cvs_tmpdir; 2918066e34cSjoris extern char *import_repository; 2929fac60a5Sjoris extern char *cvs_server_path; 293113cb29fStobias extern time_t cvs_specified_date; 294b87788a5Stobias extern time_t cvs_directory_date; 2955dd120b0Sjoris extern char *cvs_specified_tag; 29651ef6581Sjoris extern char *cvs_directory_tag; 297d2aab16aSjfb 29818911d1eSjoris extern int cvs_umask; 29980365430Sjfb extern int verbosity; 30080365430Sjfb extern int cvs_trace; 30180365430Sjfb extern int cvs_nolog; 30280365430Sjfb extern int cvs_compress; 303d2aab16aSjfb extern int cvs_cmdop; 304c68e1832Sjfb extern int cvs_nocase; 3050bda20e2Sxsa extern int cvs_noexec; 30680365430Sjfb extern int cvs_readonly; 3073dcb84b2Sxsa extern int cvs_readonlyfs; 3089fac60a5Sjoris extern int cvs_server_active; 309a10a48e5Stobias extern int reset_option; 310a10a48e5Stobias extern int reset_tag; 31137fdff3fStobias extern int kflag; 31293231021Sjfb 3139d091990Stobias extern struct cvs_cmd *cmdp; 314e4276007Sjfb extern struct cvs_cmd *cvs_cdt[]; 3156e3488e6Sjfb 316e4276007Sjfb extern struct cvs_cmd cvs_cmd_add; 317e4276007Sjfb extern struct cvs_cmd cvs_cmd_admin; 318e4276007Sjfb extern struct cvs_cmd cvs_cmd_annotate; 319e4276007Sjfb extern struct cvs_cmd cvs_cmd_checkout; 320e4276007Sjfb extern struct cvs_cmd cvs_cmd_commit; 321e4276007Sjfb extern struct cvs_cmd cvs_cmd_diff; 322e4276007Sjfb extern struct cvs_cmd cvs_cmd_edit; 323e4276007Sjfb extern struct cvs_cmd cvs_cmd_editors; 324e4276007Sjfb extern struct cvs_cmd cvs_cmd_export; 325e4276007Sjfb extern struct cvs_cmd cvs_cmd_history; 326e4276007Sjfb extern struct cvs_cmd cvs_cmd_import; 327e4276007Sjfb extern struct cvs_cmd cvs_cmd_init; 328e4276007Sjfb extern struct cvs_cmd cvs_cmd_log; 329e9658789Stobias extern struct cvs_cmd cvs_cmd_rannotate; 330e4276007Sjfb extern struct cvs_cmd cvs_cmd_rdiff; 331e4276007Sjfb extern struct cvs_cmd cvs_cmd_release; 332e4276007Sjfb extern struct cvs_cmd cvs_cmd_remove; 333e4276007Sjfb extern struct cvs_cmd cvs_cmd_rlog; 334e4276007Sjfb extern struct cvs_cmd cvs_cmd_rtag; 335e4276007Sjfb extern struct cvs_cmd cvs_cmd_status; 336e4276007Sjfb extern struct cvs_cmd cvs_cmd_tag; 337e4276007Sjfb extern struct cvs_cmd cvs_cmd_update; 338e4276007Sjfb extern struct cvs_cmd cvs_cmd_version; 339e4276007Sjfb extern struct cvs_cmd cvs_cmd_server; 340e4276007Sjfb extern struct cvs_cmd cvs_cmd_unedit; 341e4276007Sjfb extern struct cvs_cmd cvs_cmd_watch; 342e4276007Sjfb extern struct cvs_cmd cvs_cmd_watchers; 343e4276007Sjfb 34445b98c07Stobias /* add.c */ 34545b98c07Stobias void cvs_add_tobranch(struct cvs_file *, char *); 34645b98c07Stobias 3473ad3fb45Sjoris /* cmd.c */ 3486b25dbbaSjfb struct cvs_cmd *cvs_findcmd(const char *); 34908f90673Sjfb 3503ad3fb45Sjoris /* cvs.c */ 35110283864Stobias int cvs_build_cmd(char ***, char **, int); 3522d540844Sjfb int cvs_var_set(const char *, const char *); 3532d540844Sjfb int cvs_var_unset(const char *); 3542d540844Sjfb const char *cvs_var_get(const char *); 3553ad3fb45Sjoris void cvs_cleanup(void); 35608f90673Sjfb 3578c53ed4fSxsa /* date.y */ 3587bb3ddb0Sray time_t date_parse(const char *); 359cefff877Sjfb 3603ad3fb45Sjoris /* entries.c */ 3613ad3fb45Sjoris struct cvs_ent *cvs_ent_parse(const char *); 3623ad3fb45Sjoris struct cvs_ent *cvs_ent_get(CVSENTRIES *, const char *); 3633ad3fb45Sjoris CVSENTRIES *cvs_ent_open(const char *); 3643ad3fb45Sjoris void cvs_ent_add(CVSENTRIES *, const char *); 3653ad3fb45Sjoris void cvs_ent_remove(CVSENTRIES *, const char *); 3663ad3fb45Sjoris void cvs_ent_close(CVSENTRIES *, int); 3673ad3fb45Sjoris void cvs_ent_free(struct cvs_ent *); 368ae83823aSxsa void cvs_ent_line_str(const char *, char *, char *, char *, char *, 369ae83823aSxsa int, int, char *, size_t); 370890ecb5aSxsa void cvs_parse_tagfile(char *, char **, char **, int *); 3712dec954eStobias void cvs_write_tagfile(const char *, char *, char *); 3723ad3fb45Sjoris 3733ad3fb45Sjoris /* root.c */ 3743ad3fb45Sjoris struct cvsroot *cvsroot_get(const char *); 3754dcde513Sjoris int cvsroot_is_local(void); 3764dcde513Sjoris int cvsroot_is_remote(void); 3773ad3fb45Sjoris 378db758d52Sjoris /* logmsg.c */ 379b034d592Sjoris char *cvs_logmsg_read(const char *); 38084920933Stobias char *cvs_logmsg_create(char *, struct cvs_flisthead *, 38184920933Stobias struct cvs_flisthead *, struct cvs_flisthead *); 382b034d592Sjoris int cvs_logmsg_verify(char *); 383db758d52Sjoris 3843ad3fb45Sjoris /* misc stuff */ 3853ad3fb45Sjoris void cvs_update_local(struct cvs_file *); 3863ad3fb45Sjoris void cvs_update_enterdir(struct cvs_file *); 3879f820608Sjoris void cvs_update_leavedir(struct cvs_file *); 3885d320860Sjoris void cvs_checkout_file(struct cvs_file *, RCSNUM *, char *, int); 38925d391d7Sjoris void cvs_remove_local(struct cvs_file *); 39025d391d7Sjoris void cvs_add_local(struct cvs_file *); 391f9872b43Sjoris int update_has_conflict_markers(struct cvs_file *); 392daa36f23Snicm void cvs_backup_file(struct cvs_file *); 393fcdcc3e6Sjoris void cvs_import_ignored(const char *); 394f9872b43Sjoris 395f9872b43Sjoris #define CO_MERGE 0x01 3966fba94e7Sjoris #define CO_SETSTICKY 0x02 397b17342c4Sreyk #define CO_DUMP 0x04 3987fffa3ccSjoris #define CO_COMMIT 0x08 39952979273Sjoris #define CO_REMOVE 0x10 40008f90673Sjfb 4019fac60a5Sjoris /* commands */ 40277a3e292Sxsa int cvs_add(int, char **); 4039e88bdb3Sxsa int cvs_admin(int, char **); 4047d8fc710Sxsa int cvs_annotate(int, char **); 4055219eee5Sjoris int cvs_checkout(int, char **); 406e5c24eacSxsa int cvs_commit(int, char **); 4079fac60a5Sjoris int cvs_diff(int, char **); 40880afc5c5Sxsa int cvs_edit(int, char **); 40980afc5c5Sxsa int cvs_editors(int, char **); 410e5c24eacSxsa int cvs_export(int, char **); 411f8d46fa9Sxsa int cvs_getlog(int, char **); 4123901dfa5Sjoris int cvs_history(int, char **); 4130b1d6edcSxsa int cvs_import(int, char **); 414fd590a3cSxsa int cvs_init(int, char **); 415eb6eca7cSxsa int cvs_release(int, char **); 41677a3e292Sxsa int cvs_remove(int, char **); 4179fac60a5Sjoris int cvs_status(int, char **); 418f8d46fa9Sxsa int cvs_tag(int, char **); 41980afc5c5Sxsa int cvs_unedit(int, char **); 4209fac60a5Sjoris int cvs_update(int, char **); 42153f4be27Sxsa int cvs_version(int, char **); 42280afc5c5Sxsa int cvs_watch(int, char **); 42380afc5c5Sxsa int cvs_watchers(int, char **); 4249fac60a5Sjoris 4251f8531bdSotto 4260450b43bSjoris #endif 427