home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / N / TCPIP / NETKIT-B.05 / NETKIT-B / NetKit-B-0.05 / rdist / defs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-07  |  5.4 KB  |  182 lines

  1. /*
  2.  * Copyright (c) 1983, 1993
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    from: @(#)defs.h    8.1 (Berkeley) 6/9/93
  34.  *    $Id: defs.h,v 1.5 1994/03/07 05:05:20 cgd Exp $
  35.  */
  36.  
  37. #include <sys/param.h>
  38. #include <sys/dir.h>
  39. #include <sys/stat.h>
  40. #include <sys/time.h>
  41. #include <sys/file.h>
  42.  
  43. #include <netinet/in.h>
  44.  
  45. #include <errno.h>
  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];
  136.     char    target[BUFSIZ];
  137.     struct    linkbuf *nextp;
  138. };
  139.  
  140. extern int debug;        /* debugging flag */
  141. extern int nflag;        /* NOP flag, don't execute commands */
  142. extern int qflag;        /* Quiet. don't print messages */
  143. extern int options;        /* global options */
  144.  
  145. extern int nerrs;        /* number of errors seen */
  146. extern int rem;            /* remote file descriptor */
  147. extern int iamremote;        /* acting as remote server */
  148. extern char tempfile[];        /* file name for logging changes */
  149. extern struct linkbuf *ihead;    /* list of files with more than one link */
  150. extern struct passwd *pw;    /* pointer to static area used by getpwent */
  151. extern struct group *gr;    /* pointer to static area used by getgrent */
  152. extern char host[];        /* host name of master copy */
  153. extern char buf[];        /* general purpose buffer */
  154.  
  155. int     any __P((int, char *));
  156. char    *colon __P((char *));
  157. void     cleanup __P((int));
  158. void     define __P((char *));
  159. void     docmds __P((char **, int, char **));
  160. void     error __P((const char *, ...));
  161. int     except __P((char *));
  162. struct namelist *
  163.      expand __P((struct namelist *, int));
  164. char    *exptilde __P((char [], char *));
  165. void     fatal __P((const char *, ...));
  166. int     inlist __P((struct namelist *, char *));
  167. void     insert __P((char *,
  168.         struct namelist *, struct namelist *, struct subcmd *));
  169. void     install __P((char *, char *, int, int));
  170. void     log __P((FILE *, const char *, ...));
  171. struct namelist *
  172.      lookup __P((char *, int, struct namelist *));
  173. void     lostconn __P((int));
  174. struct namelist *
  175.      makenl __P((char *));
  176. struct subcmd *
  177.      makesubcmd __P((int));
  178. void     prnames __P((struct namelist *));
  179. void     server __P((void));
  180. void     yyerror __P((char *));
  181. int     yyparse __P((void));
  182.