Annotation of src/usr.bin/cvs/file.h, Revision 1.53
1.53 ! joris 1: /* $OpenBSD: file.h,v 1.52 2009/03/25 21:50:33 joris Exp $ */
1.1 jfb 2: /*
1.34 joris 3: * Copyright (c) 2006 Joris Vink <joris@openbsd.org>
1.1 jfb 4: * Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
1.11 tedu 5: * All rights reserved.
1.1 jfb 6: *
1.11 tedu 7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
1.1 jfb 10: *
1.11 tedu 11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
1.1 jfb 13: * 2. The name of the author may not be used to endorse or promote products
1.11 tedu 14: * derived from this software without specific prior written permission.
1.1 jfb 15: *
16: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
17: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
18: * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
19: * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
1.11 tedu 25: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1.1 jfb 26: */
27:
28: #ifndef FILE_H
29: #define FILE_H
1.43 otto 30:
31: #include <sys/queue.h>
1.52 joris 32: #include <sys/tree.h>
1.43 otto 33:
34: #include <dirent.h>
35: #include <stdio.h>
1.1 jfb 36:
1.16 jfb 37: #include "rcs.h"
38:
1.34 joris 39: struct cvs_file {
40: char *file_name;
41: char *file_wd;
42: char *file_path;
43: char *file_rpath;
44:
45: int fd;
46: int repo_fd;
47: int file_type;
48: int file_status;
49: int file_flags;
1.44 niallo 50: int in_attic;
1.34 joris 51:
1.37 joris 52: RCSNUM *file_rcsrev;
1.34 joris 53: RCSFILE *file_rcs;
54: struct cvs_ent *file_ent;
55: };
56:
57: #define FILE_UNKNOWN 0
58: #define FILE_ADDED 1
59: #define FILE_REMOVED 2
60: #define FILE_MODIFIED 3
61: #define FILE_UPTODATE 4
62: #define FILE_LOST 5
63: #define FILE_CHECKOUT 6
64: #define FILE_MERGE 7
65: #define FILE_PATCH 8
66: #define FILE_REMOVE_ENTRY 9
67: #define FILE_CONFLICT 10
68: #define FILE_UNLINK 11
69:
70: #define DIR_CREATE 12
1.36 joris 71:
72: #define FILE_SKIP 100
1.46 joris 73:
74: #define FILE_HAS_TAG 0x01
1.50 joris 75: #define FILE_USER_SUPPLIED 0x02
76: #define FILE_INSIDE_ATTIC 0x04
1.51 joris 77: #define FILE_ON_DISK 0x08
1.34 joris 78:
79: struct cvs_filelist {
1.52 joris 80: RB_ENTRY(cvs_filelist) flist;
1.34 joris 81: char *file_path;
1.50 joris 82: int flags;
1.53 ! joris 83: int type;
1.34 joris 84: };
85:
1.52 joris 86: RB_HEAD(cvs_flisthead, cvs_filelist);
87: RB_PROTOTYPE(cvs_flisthead, cvs_filelist, flist, cvs_filelist_cmp);
1.34 joris 88:
89: struct cvs_recursion;
90:
91: #define CVS_DIR 1
92: #define CVS_FILE 2
93:
94: TAILQ_HEAD(cvs_flist, cvs_file);
95:
96: struct cvs_ignpat {
97: char ip_pat[MAXNAMLEN];
98: int ip_flags;
99: TAILQ_ENTRY(cvs_ignpat) ip_list;
100: };
101:
102: TAILQ_HEAD(ignore_head, cvs_ignpat);
103:
104: void cvs_file_init(void);
105: void cvs_file_ignore(const char *, struct ignore_head *);
1.41 joris 106: void cvs_file_classify(struct cvs_file *, const char *);
1.34 joris 107: void cvs_file_free(struct cvs_file *);
108: void cvs_file_run(int, char **, struct cvs_recursion *);
109: void cvs_file_walklist(struct cvs_flisthead *, struct cvs_recursion *);
110: void cvs_file_walkdir(struct cvs_file *, struct cvs_recursion *);
111: void cvs_file_freelist(struct cvs_flisthead *);
1.53 ! joris 112: struct cvs_filelist *cvs_file_get(char *, int, struct cvs_flisthead *, int);
1.1 jfb 113:
1.52 joris 114: int cvs_filelist_cmp(struct cvs_filelist *, struct cvs_filelist *);
1.34 joris 115: int cvs_file_chkign(const char *);
1.39 xsa 116: int cvs_file_cmpname(const char *, const char *);
1.38 xsa 117: int cvs_file_cmp(const char *, const char *);
1.40 xsa 118: int cvs_file_copy(const char *, const char *);
1.1 jfb 119:
1.49 joris 120: struct cvs_file *cvs_file_get_cf(const char *, const char *, const char *,
121: int, int, int);
1.1 jfb 122:
1.26 xsa 123: #endif /* FILE_H */