[BACK]Return to defs.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / oldrdist

Annotation of src/usr.bin/oldrdist/defs.h, Revision 1.9

1.9     ! millert     1: /* *   $OpenBSD: defs.h,v 1.8 1999/08/17 09:13:16 millert Exp $*/
1.1       dm          2: /*
                      3:  * Copyright (c) 1983, 1993
                      4:  *     The Regents of the University of California.  All rights reserved.
                      5:  *
                      6:  * Redistribution and use in source and binary forms, with or without
                      7:  * modification, are permitted provided that the following conditions
                      8:  * are met:
                      9:  * 1. Redistributions of source code must retain the above copyright
                     10:  *    notice, this list of conditions and the following disclaimer.
                     11:  * 2. Redistributions in binary form must reproduce the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer in the
                     13:  *    documentation and/or other materials provided with the distribution.
                     14:  * 3. All advertising materials mentioning features or use of this software
                     15:  *    must display the following acknowledgement:
                     16:  *     This product includes software developed by the University of
                     17:  *     California, Berkeley and its contributors.
                     18:  * 4. Neither the name of the University nor the names of its contributors
                     19:  *    may be used to endorse or promote products derived from this software
                     20:  *    without specific prior written permission.
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     23:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     24:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     25:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     26:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     27:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     28:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     29:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     30:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     31:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     32:  * SUCH DAMAGE.
                     33:  *
                     34:  *     from: @(#)defs.h        8.1 (Berkeley) 6/9/93
                     35:  */
                     36:
                     37: #include <sys/param.h>
                     38: #include <sys/dir.h>
                     39: #include <sys/stat.h>
                     40: #include <sys/time.h>
                     41:
                     42: #include <netinet/in.h>
                     43:
                     44: #include <errno.h>
1.8       millert    45: #include <fcntl.h>
1.1       dm         46: #include <pwd.h>
                     47: #include <grp.h>
                     48: #include <stdio.h>
                     49: #include <ctype.h>
                     50: #include <unistd.h>
                     51: #include <string.h>
                     52: #include <stdlib.h>
                     53: #include "pathnames.h"
                     54:
                     55: /*
                     56:  * The version number should be changed whenever the protocol changes.
                     57:  */
                     58: #define VERSION         3
                     59:
                     60:        /* defines for yacc */
                     61: #define EQUAL  1
                     62: #define LP     2
                     63: #define RP     3
                     64: #define SM     4
                     65: #define ARROW  5
                     66: #define COLON  6
                     67: #define DCOLON 7
                     68: #define NAME   8
                     69: #define STRING 9
                     70: #define INSTALL        10
                     71: #define NOTIFY 11
                     72: #define EXCEPT 12
                     73: #define PATTERN        13
                     74: #define SPECIAL        14
                     75: #define OPTION 15
                     76:
                     77:        /* lexical definitions */
                     78: #define        QUOTE   0200            /* used internally for quoted characters */
                     79: #define        TRIM    0177            /* Mask to strip quote bit */
                     80:
                     81:        /* table sizes */
                     82: #define HASHSIZE       1021
                     83: #define INMAX  3500
                     84:
                     85:        /* option flags */
                     86: #define VERIFY 0x1
                     87: #define WHOLE  0x2
                     88: #define YOUNGER        0x4
                     89: #define COMPARE        0x8
                     90: #define REMOVE 0x10
                     91: #define FOLLOW 0x20
                     92: #define IGNLNKS        0x40
                     93:
                     94:        /* expand type definitions */
                     95: #define E_VARS 0x1
                     96: #define E_SHELL        0x2
                     97: #define E_TILDE        0x4
                     98: #define E_ALL  0x7
                     99:
                    100:        /* actions for lookup() */
                    101: #define LOOKUP 0
                    102: #define INSERT 1
                    103: #define REPLACE        2
                    104:
                    105: #define ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
                    106:
                    107: #define ALLOC(x) (struct x *) malloc(sizeof(struct x))
                    108:
                    109: struct namelist {      /* for making lists of strings */
                    110:        char    *n_name;
                    111:        struct  namelist *n_next;
                    112: };
                    113:
                    114: struct subcmd {
                    115:        short   sc_type;        /* type - INSTALL,NOTIFY,EXCEPT,SPECIAL */
                    116:        short   sc_options;
                    117:        char    *sc_name;
                    118:        struct  namelist *sc_args;
                    119:        struct  subcmd *sc_next;
                    120: };
                    121:
                    122: struct cmd {
                    123:        int     c_type;         /* type - ARROW,DCOLON */
                    124:        char    *c_name;        /* hostname or time stamp file name */
                    125:        char    *c_label;       /* label for partial update */
                    126:        struct  namelist *c_files;
                    127:        struct  subcmd *c_cmds;
                    128:        struct  cmd *c_next;
                    129: };
                    130:
                    131: struct linkbuf {
                    132:        ino_t   inum;
                    133:        dev_t   devnum;
                    134:        int     count;
                    135:        char    pathname[BUFSIZ];
1.7       deraadt   136:        char    src[BUFSIZ];
1.1       dm        137:        char    target[BUFSIZ];
                    138:        struct  linkbuf *nextp;
                    139: };
                    140:
                    141: extern int debug;              /* debugging flag */
                    142: extern int nflag;              /* NOP flag, don't execute commands */
                    143: extern int qflag;              /* Quiet. don't print messages */
                    144: extern int options;            /* global options */
                    145:
                    146: extern int nerrs;              /* number of errors seen */
                    147: extern int rem;                        /* remote file descriptor */
                    148: extern int iamremote;          /* acting as remote server */
                    149: extern char tempfile[];                /* file name for logging changes */
                    150: extern struct linkbuf *ihead;  /* list of files with more than one link */
                    151: extern struct passwd *pw;      /* pointer to static area used by getpwent */
                    152: extern struct group *gr;       /* pointer to static area used by getgrent */
                    153: extern char host[];            /* host name of master copy */
1.4       millert   154: extern char buf[BUFSIZ];       /* general purpose buffer */
1.6       deraadt   155: extern char target[BUFSIZ];    /* target/source directory name */
1.1       dm        156:
1.9     ! millert   157: int     any(int, char *);
        !           158: char   *colon(char *);
        !           159: void    cleanup(int);
        !           160: void    define(char *);
        !           161: void    docmds(char **, int, char **);
        !           162: void    error(const char *, ...);
        !           163: int     except(char *);
1.1       dm        164: struct namelist *
1.9     ! millert   165:         expand(struct namelist *, int);
        !           166: char   *exptilde(char [], char *, int);
        !           167: void    fatal(const char *, ...);
        !           168: int     inlist(struct namelist *, char *);
1.1       dm        169: void    insert __P((char *,
                    170:            struct namelist *, struct namelist *, struct subcmd *));
1.9     ! millert   171: void    install(char *, char *, int, int);
        !           172: void    log(FILE *, const char *, ...);
1.1       dm        173: struct namelist *
1.9     ! millert   174:         lookup(char *, int, struct namelist *);
        !           175: void    lostconn(int);
1.1       dm        176: struct namelist *
1.9     ! millert   177:         makenl(char *);
1.1       dm        178: struct subcmd *
1.9     ! millert   179:         makesubcmd(int);
        !           180: void    prnames(struct namelist *);
        !           181: void    server(void);
        !           182: void    yyerror(char *);
        !           183: int     yyparse(void);
        !           184: char   *xbasename(char *);