|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: *
17: * @(#)defs.h 5.4 (Berkeley) 6/29/88
18: */
19:
20: #include <stdio.h>
21: #include <ctype.h>
22: #include <errno.h>
23: #include <pwd.h>
24: #include <grp.h>
25: #include <sys/param.h>
26: #include <sys/dir.h>
27: #include <sys/stat.h>
28: #include <sys/time.h>
29: #include <netinet/in.h>
30:
31: /*
32: * The version number should be changed whenever the protocol changes.
33: */
34: #define VERSION 3
35:
36: #define MAILCMD "/usr/lib/sendmail -oi -t"
37:
38: /* defines for yacc */
39: #define EQUAL 1
40: #define LP 2
41: #define RP 3
42: #define SM 4
43: #define ARROW 5
44: #define COLON 6
45: #define DCOLON 7
46: #define NAME 8
47: #define STRING 9
48: #define INSTALL 10
49: #define NOTIFY 11
50: #define EXCEPT 12
51: #define PATTERN 13
52: #define SPECIAL 14
53: #define OPTION 15
54:
55: /* lexical definitions */
56: #define QUOTE 0200 /* used internally for quoted characters */
57: #define TRIM 0177 /* Mask to strip quote bit */
58:
59: /* table sizes */
60: #define HASHSIZE 1021
61: #define INMAX 3500
62:
63: /* option flags */
64: #define VERIFY 0x1
65: #define WHOLE 0x2
66: #define YOUNGER 0x4
67: #define COMPARE 0x8
68: #define REMOVE 0x10
69: #define FOLLOW 0x20
70: #define IGNLNKS 0x40
71:
72: /* expand type definitions */
73: #define E_VARS 0x1
74: #define E_SHELL 0x2
75: #define E_TILDE 0x4
76: #define E_ALL 0x7
77:
78: /* actions for lookup() */
79: #define LOOKUP 0
80: #define INSERT 1
81: #define REPLACE 2
82:
83: #define ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
84:
85: #define ALLOC(x) (struct x *) malloc(sizeof(struct x))
86:
87: struct namelist { /* for making lists of strings */
88: char *n_name;
89: struct namelist *n_next;
90: };
91:
92: struct subcmd {
93: short sc_type; /* type - INSTALL,NOTIFY,EXCEPT,SPECIAL */
94: short sc_options;
95: char *sc_name;
96: struct namelist *sc_args;
97: struct subcmd *sc_next;
98: };
99:
100: struct cmd {
101: int c_type; /* type - ARROW,DCOLON */
102: char *c_name; /* hostname or time stamp file name */
103: char *c_label; /* label for partial update */
104: struct namelist *c_files;
105: struct subcmd *c_cmds;
106: struct cmd *c_next;
107: };
108:
109: struct linkbuf {
110: ino_t inum;
111: dev_t devnum;
112: int count;
113: char pathname[BUFSIZ];
114: char target[BUFSIZ];
115: struct linkbuf *nextp;
116: };
117:
118: extern int debug; /* debugging flag */
119: extern int nflag; /* NOP flag, don't execute commands */
120: extern int qflag; /* Quiet. don't print messages */
121: extern int options; /* global options */
122:
123: extern int nerrs; /* number of errors seen */
124: extern int rem; /* remote file descriptor */
125: extern int iamremote; /* acting as remote server */
126: extern char tmpfile[]; /* file name for logging changes */
127: extern struct linkbuf *ihead; /* list of files with more than one link */
128: extern struct passwd *pw; /* pointer to static area used by getpwent */
129: extern struct group *gr; /* pointer to static area used by getgrent */
130: extern char host[]; /* host name of master copy */
131: extern char buf[]; /* general purpose buffer */
132: extern int errno; /* system error number */
133: extern char *sys_errlist[];
134:
135: char *makestr();
136: struct namelist *makenl();
137: struct subcmd *makesubcmd();
138: struct namelist *lookup();
139: struct namelist *expand();
140: char *exptilde();
141: char *malloc();
142: char *rindex();
143: char *index();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.