home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)defs.h 5.9 (Berkeley) 8/27/90
- */
-
- #include <sys/param.h>
- #include <sys/dir.h>
- #include <sys/stat.h>
- #include <sys/time.h>
- #include <sys/file.h>
- #include <netinet/in.h>
- #include <stdio.h>
- #include <ctype.h>
- #include <errno.h>
- #include <pwd.h>
- #include <grp.h>
- #include "pathnames.h"
-
- /*
- * The version number should be changed whenever the protocol changes.
- */
- #define VERSION 3
-
- /* defines for yacc */
- #define EQUAL 1
- #define LP 2
- #define RP 3
- #define SM 4
- #define ARROW 5
- #define COLON 6
- #define DCOLON 7
- #define NAME 8
- #define STRING 9
- #define INSTALL 10
- #define NOTIFY 11
- #define EXCEPT 12
- #define PATTERN 13
- #define SPECIAL 14
- #define OPTION 15
-
- /* lexical definitions */
- #define QUOTE 0200 /* used internally for quoted characters */
- #define TRIM 0177 /* Mask to strip quote bit */
-
- /* table sizes */
- #define HASHSIZE 1021
- #define INMAX 3500
-
- /* option flags */
- #define VERIFY 0x1
- #define WHOLE 0x2
- #define YOUNGER 0x4
- #define COMPARE 0x8
- #define REMOVE 0x10
- #define FOLLOW 0x20
- #define IGNLNKS 0x40
-
- /* expand type definitions */
- #define E_VARS 0x1
- #define E_SHELL 0x2
- #define E_TILDE 0x4
- #define E_ALL 0x7
-
- /* actions for lookup() */
- #define LOOKUP 0
- #define INSERT 1
- #define REPLACE 2
-
- #define ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-
- #define ALLOC(x) (struct x *) malloc(sizeof(struct x))
-
- struct namelist { /* for making lists of strings */
- char *n_name;
- struct namelist *n_next;
- };
-
- struct subcmd {
- short sc_type; /* type - INSTALL,NOTIFY,EXCEPT,SPECIAL */
- short sc_options;
- char *sc_name;
- struct namelist *sc_args;
- struct subcmd *sc_next;
- };
-
- struct cmd {
- int c_type; /* type - ARROW,DCOLON */
- char *c_name; /* hostname or time stamp file name */
- char *c_label; /* label for partial update */
- struct namelist *c_files;
- struct subcmd *c_cmds;
- struct cmd *c_next;
- };
-
- struct linkbuf {
- ino_t inum;
- dev_t devnum;
- int count;
- char pathname[BUFSIZ];
- char target[BUFSIZ];
- struct linkbuf *nextp;
- };
-
- extern int debug; /* debugging flag */
- extern int nflag; /* NOP flag, don't execute commands */
- extern int qflag; /* Quiet. don't print messages */
- extern int options; /* global options */
-
- extern int nerrs; /* number of errors seen */
- extern int rem; /* remote file descriptor */
- extern int iamremote; /* acting as remote server */
- extern char tempfile[]; /* file name for logging changes */
- extern struct linkbuf *ihead; /* list of files with more than one link */
- extern struct passwd *pw; /* pointer to static area used by getpwent */
- extern struct group *gr; /* pointer to static area used by getgrent */
- extern char host[]; /* host name of master copy */
- extern char buf[]; /* general purpose buffer */
- extern int errno; /* system error number */
-
- char *makestr();
- struct namelist *makenl();
- struct subcmd *makesubcmd();
- struct namelist *lookup();
- struct namelist *expand();
- char *exptilde();
- char *malloc();
- char *rindex();
- char *index();
-