Main Page | Class List | Directories | File List | Class Members | File Members

globals.c

Go to the documentation of this file.
00001 /* cfengine for GNU
00002  
00003         Copyright (C) 1995/6
00004         Free Software Foundation, Inc.
00005  
00006    This file is part of GNU cfengine - written and maintained 
00007    by Mark Burgess, Dept of Computing and Engineering, Oslo College,
00008    Dept. of Theoretical physics, University of Oslo
00009  
00010    This program is free software; you can redistribute it and/or modify it
00011    under the terms of the GNU General Public License as published by the
00012    Free Software Foundation; either version 2, or (at your option) any
00013    later version.
00014  
00015    This program is distributed in the hope that it will be useful,
00016    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018    GNU General Public License for more details.
00019  
00020   You should have received a copy of the GNU General Public License
00021   along with this program; if not, write to the Free Software
00022   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
00023 
00024 */
00025  
00026 
00027 /*******************************************************************/
00028 /*                                                                 */
00029 /*  GLOBAL variables for cfengine                                  */
00030 /*                                                                 */
00031 /*  Although these are global in C, they are layed out in          */
00032 /*  terms of their ownership to certain logical "objects",         */
00033 /*  to illustrate the object oriented structure.                   */
00034 /*                                                                 */
00035 /*******************************************************************/
00036 
00037 #include "../pub/getopt.h"
00038 #include "cf.defs.h"
00039 
00040 #define PUBLIC     /* Just for fun */
00041 #define PRIVATE
00042 #define PROTECTED
00043 
00044 /*******************************************************************/
00045 /*                                                                 */
00046 /* Global : Truly global variables here                            */
00047 /*                                                                 */
00048 /*                                                                 */
00049 /*******************************************************************/
00050 
00051 char VBUFF[bufsize]; /* General workspace, contents not guaranteed */
00052 char OUTPUT[bufsize*2];
00053 int AUTHENTICATED = false;
00054 int CHECKSUMUPDATES = false;
00055 
00056 char *CHECKSUMDB;
00057 char PADCHAR = ' ';
00058 char CONTEXTID[32];
00059 
00060 char CFPUBKEYFILE[bufsize];
00061 char CFPRIVKEYFILE[bufsize];
00062 char AVDB[1024];
00063 
00064 RSA *PRIVKEY = NULL, *PUBKEY = NULL;
00065 
00066 /*******************************************************************/
00067 /*                                                                 */
00068 /* cfd.main object : the root application object                   */
00069 /*                                                                 */
00070 /*                                                                 */
00071 /*******************************************************************/
00072 
00073   PROTECTED  struct Auth *VADMIT = NULL;
00074   PROTECTED  struct Auth *VADMITTOP = NULL;
00075   PROTECTED  struct Auth *VDENY = NULL;
00076   PROTECTED  struct Auth *VDENYTOP = NULL;
00077 
00078 /*******************************************************************/
00079 /*                                                                 */
00080 /* cfengine.main object : the root application object              */
00081 /*                                                                 */
00082 /*                                                                 */
00083 /*******************************************************************/
00084 
00085   PUBLIC char *COPYRIGHT = "Free Software Foundation 1994-\nDonated by Mark Burgess, Faculty of Engineering,\nOslo University College, 0254 Oslo, Norway";
00086 
00087   PRIVATE char *VPRECONFIG = "cf.preconf";
00088   PRIVATE char *VRCFILE = "cfrc";
00089 
00090   PUBLIC char *VSETUIDLOG = NULL;
00091   PUBLIC char *VARCH = NULL;
00092   PUBLIC char *VARCH2 = NULL;
00093   PUBLIC char *VREPOSITORY = NULL;
00094   PUBLIC char *COMPRESSCOMMAND = NULL;
00095 
00096   PUBLIC char VPREFIX[maxvarsize];
00097 
00098   PUBLIC char VINPUTFILE[bufsize];
00099   PUBLIC char VCURRENTFILE[bufsize];
00100   PUBLIC char VLOGFILE[bufsize];
00101   PUBLIC char ALLCLASSBUFFER[bufsize];
00102   PUBLIC char ELSECLASSBUFFER[bufsize];
00103   PUBLIC char FAILOVERBUFFER[bufsize];
00104   PUBLIC char CHROOT[bufsize];
00105 
00106   PUBLIC char EDITBUFF[bufsize];
00107 
00108   PUBLIC short DEBUG = false;
00109   PUBLIC short D1 = false;
00110   PUBLIC short D2 = false;
00111   PUBLIC short D3 = false;
00112   PUBLIC short VERBOSE = false;
00113   PUBLIC short INFORM = false;
00114   PUBLIC short CHECK = false;
00115   PUBLIC short EXCLAIM = true;
00116   PUBLIC short COMPATIBILITY_MODE = false;
00117   PUBLIC short LOGGING = false;
00118   PUBLIC short INFORM_save;
00119   PUBLIC short LOGGING_save;
00120   PUBLIC short CFPARANOID = false;
00121   PUBLIC short SHOWACTIONS = false;
00122   PUBLIC short LOGTIDYHOMEFILES = true;
00123   PUBLIC short UPDATEONLY = false;
00124 
00125   PUBLIC char FORK = 'n';
00126 
00127   PRIVATE   int RPCTIMEOUT = 60;          /* seconds */
00128   PROTECTED int SENSIBLEFILECOUNT = 2;
00129   PROTECTED int SENSIBLEFSSIZE = 1000;
00130 
00131   PUBLIC time_t CFSTARTTIME;
00132   PUBLIC time_t CFINITSTARTTIME;
00133 
00134   PUBLIC enum classes VSYSTEMHARDCLASS;
00135 
00136   PUBLIC struct Item VDEFAULTBINSERVER =      /* see GetNameInfo(), main.c */
00137       {
00138       'n',
00139       NULL,
00140       NULL,
00141       NULL
00142       };
00143 
00144   PUBLIC struct utsname VSYSNAME;                           /* For uname (2) */
00145 
00146   PUBLIC mode_t DEFAULTMODE = (mode_t) 0755;
00147   PUBLIC mode_t DEFAULTSYSTEMMODE = (mode_t) 0644;
00148 
00149   PROTECTED int VIFELAPSED = 1;
00150   PROTECTED int VEXPIREAFTER = 120;
00151   PROTECTED int VDEFAULTIFELAPSED = 1;     
00152   PROTECTED int VDEFAULTEXPIREAFTER = 120; /* minutes */
00153 
00154   PUBLIC struct cfagent_connection *CONN = NULL;
00155   PUBLIC struct Item *VEXCLUDECACHE = NULL;
00156 
00157   PUBLIC struct cfObject *OBJECTLIST = NULL;
00158 
00159 /*******************************************************************/
00160  /* Data structures - root pointers                                 */
00161  /*******************************************************************/
00162 
00163   PROTECTED  struct Item *VTIMEZONE = NULL;
00164   PROTECTED  struct Item *VMOUNTLIST = NULL;
00165   PROTECTED  struct Item *VEXCLUDECOPY = NULL;
00166   PROTECTED  struct Item *VAUTODEFINE = NULL;
00167   PROTECTED  struct Item *VSINGLECOPY = NULL;
00168   PROTECTED  struct Item *VEXCLUDELINK = NULL;
00169   PROTECTED  struct Item *VCOPYLINKS = NULL;
00170   PROTECTED  struct Item *VLINKCOPIES = NULL;
00171   PROTECTED  struct Item *VEXCLUDEPARSE = NULL;
00172   PROTECTED  struct Item *VCPLNPARSE = NULL;
00173   PROTECTED  struct Item *VINCLUDEPARSE = NULL;
00174   PROTECTED  struct Item *VIGNOREPARSE = NULL;
00175   PROTECTED  struct Item *VSERVERLIST = NULL;
00176   PROTECTED  struct Item *VREDEFINES = NULL;
00177 
00178   PROTECTED  struct Item *VHEAP = NULL;      /* Points to the base of the attribute heap */
00179   PROTECTED  struct Item *VNEGHEAP = NULL;
00180 
00181 
00182   PROTECTED  struct Mountables *VMOUNTABLES = NULL;         /* Points to the list of mountables */
00183   PROTECTED  struct Mountables *VMOUNTABLESTOP = NULL;
00184 
00185   PUBLIC struct cfObject *VOBJTOP = NULL;
00186   PUBLIC struct cfObject *VOBJ = NULL;
00187 
00188   PROTECTED  struct Item *VALERTS = NULL;
00189   PROTECTED  struct Item *VMOUNTED = NULL;
00190   PROTECTED  struct Tidy *VTIDY = NULL;               /* Points to the list of tidy specs */
00191   PROTECTED  struct Tidy *VTIDYTOP = NULL;
00192   PROTECTED  struct Item *VPROCESSES = NULL;                       /* Points to proc list */
00193   PROTECTED  struct Disk *VREQUIRED = NULL;              /* List of required file systems */
00194   PROTECTED  struct Disk *VREQUIREDTOP = NULL;
00195   PROTECTED  struct ShellComm *VSCRIPT = NULL;              /* List of scripts to execute */
00196   PROTECTED  struct ShellComm *VSCRIPTTOP = NULL;
00197   PROTECTED  struct Interface *VIFLIST = NULL;
00198   PROTECTED  struct Interface *VIFLISTTOP = NULL;
00199   PROTECTED  struct Mounted *MOUNTED = NULL;             /* Files systems already mounted */
00200   PROTECTED  struct MiscMount *VMISCMOUNT = NULL;
00201   PROTECTED  struct MiscMount *VMISCMOUNTTOP = NULL;
00202   PROTECTED  struct Item *VBINSERVERS = &VDEFAULTBINSERVER;
00203   PROTECTED  struct Link *VLINK = NULL;
00204   PROTECTED  struct Link *VLINKTOP = NULL;
00205   PROTECTED  struct File *VFILE = NULL;
00206   PROTECTED  struct File *VFILETOP = NULL;
00207   PROTECTED  struct Image *VIMAGE = NULL;
00208   PROTECTED  struct Image *VIMAGETOP=NULL;
00209   PROTECTED  struct Item *VHOMESERVERS = NULL;
00210   PROTECTED  struct Item *VSETUIDLIST = NULL;
00211   PROTECTED  struct Disable *VDISABLELIST = NULL;
00212   PROTECTED  struct Disable *VDISABLETOP = NULL;
00213   PROTECTED  struct File *VMAKEPATH = NULL;
00214   PROTECTED  struct File *VMAKEPATHTOP = NULL;
00215   PROTECTED  struct Link *VCHLINK = NULL;
00216   PROTECTED  struct Link *VCHLINKTOP = NULL;
00217   PROTECTED  struct Item *VIGNORE = NULL;
00218   PROTECTED  struct Item *VHOMEPATLIST = NULL;
00219   PROTECTED  struct Item *EXTENSIONLIST = NULL;
00220   PROTECTED  struct Item *SUSPICIOUSLIST = NULL;
00221   PROTECTED  struct Item *SCHEDULE = NULL;
00222   PROTECTED  struct Item *SPOOLDIRLIST = NULL;
00223   PROTECTED  struct Item *NONATTACKERLIST = NULL;
00224   PROTECTED  struct Item *MULTICONNLIST = NULL;
00225   PROTECTED  struct Item *TRUSTKEYLIST = NULL;
00226   PROTECTED  struct Item *DHCPLIST = NULL;
00227   PROTECTED  struct Item *ALLOWUSERLIST = NULL;
00228   PROTECTED  struct Item *SKIPVERIFY = NULL;
00229   PROTECTED  struct Item *ATTACKERLIST = NULL;
00230   PROTECTED  struct Item *MOUNTOPTLIST = NULL;
00231   PROTECTED  struct Item *VRESOLVE = NULL;
00232   PROTECTED  struct Item *VIMPORT = NULL;
00233   PROTECTED  struct Item *VACTIONSEQ=NULL;
00234   PROTECTED  struct Item *VACCESSLIST=NULL;
00235   PROTECTED  struct Item *VADDCLASSES=NULL;           /* Action sequence defs  */
00236   PROTECTED  struct Item *VALLADDCLASSES=NULL;        /* All classes */
00237   PROTECTED  struct Item *VJUSTACTIONS=NULL;
00238   PROTECTED  struct Item *VAVOIDACTIONS=NULL;
00239   PROTECTED  struct UnMount *VUNMOUNT=NULL;
00240   PROTECTED  struct UnMount *VUNMOUNTTOP=NULL;
00241   PROTECTED  struct Edit *VEDITLIST=NULL;
00242   PROTECTED  struct Edit *VEDITLISTTOP=NULL;
00243   PROTECTED  struct Filter *VFILTERLIST=NULL;
00244   PROTECTED  struct Filter *VFILTERLISTTOP=NULL;
00245   PROTECTED  struct CFACL  *VACLLIST=NULL;
00246   PROTECTED  struct CFACL  *VACLLISTTOP=NULL;
00247   PROTECTED  struct Strategy *VSTRATEGYLIST=NULL;
00248   PROTECTED  struct Strategy *VSTRATEGYLISTTOP=NULL;
00249 
00250   PROTECTED  struct Item *VCLASSDEFINE=NULL;
00251   PROTECTED  struct Process *VPROCLIST=NULL;
00252   PROTECTED  struct Process *VPROCTOP=NULL;
00253   PROTECTED  struct Item *VREPOSLIST=NULL;
00254 
00255 
00256  /*********************************************************************/
00257  /* Resource names                                                    */
00258  /*********************************************************************/
00259 
00260   PRIVATE char *VRESOURCES[] = /* one for each major variable in class.c */
00261      {
00262      "mountcomm",
00263      "unmountcomm",
00264      "ethernet",
00265      "mountopts",
00266      "unused",
00267      "fstab",
00268      "maildir",
00269      "netstat",
00270      "pscomm",
00271      "psopts",
00272      NULL
00273      };
00274 
00275 
00276  /*******************************************************************/
00277  /* Reserved variables                                              */
00278  /*******************************************************************/
00279 
00280  PROTECTED char   VMAILSERVER[bufsize];
00281 
00282  PROTECTED char      VFACULTY[maxvarsize];
00283  PROTECTED char       VDOMAIN[maxvarsize];
00284  PROTECTED char       VSYSADM[maxvarsize];
00285  PROTECTED char      VNETMASK[maxvarsize];
00286  PROTECTED char    VBROADCAST[maxvarsize];
00287  PROTECTED char VDEFAULTROUTE[maxvarsize];
00288  PROTECTED char      VNFSTYPE[maxvarsize];
00289  PROTECTED char       VFQNAME[maxvarsize];
00290  PROTECTED char       VUQNAME[maxvarsize];
00291  PROTECTED char       LOGFILE[maxvarsize];
00292 
00293  PROTECTED char         VYEAR[5];
00294  PROTECTED char         VDAY[3];
00295  PROTECTED char         VMONTH[4];
00296  PROTECTED char         VHR[3];
00297  PROTECTED char         VMINUTE[3];
00298  PROTECTED char         VSEC[3];
00299 
00300 
00301  /*******************************************************************/
00302  /* Command line options                                            */
00303  /*******************************************************************/
00304 
00305   /* GNU STUFF FOR LATER #include "getopt.h" */
00306  
00307  
00308  PRIVATE struct option OPTIONS[] =
00309       {
00310       { "help",no_argument,0,'h' },
00311       { "debug",optional_argument,0,'d' }, 
00312       { "verbose",no_argument,0,'v' },
00313       { "traverse-links",no_argument,0,'l' },
00314       { "recon",no_argument,0,'n' },
00315       { "dry-run",no_argument,0,'n'},
00316       { "just-print",no_argument,0,'n'},
00317       { "no-ifconfig",no_argument,0,'i' },
00318       { "file",required_argument,0,'f' },
00319       { "parse-only",no_argument,0,'p' },
00320       { "no-mount",no_argument,0,'m' },
00321       { "no-check-files",no_argument,0,'c' },
00322       { "no-check-mounts",no_argument,0,'C' },
00323       { "no-tidy",no_argument,0,'t' },
00324       { "no-commands",no_argument,0,'s' },
00325       { "sysadm",no_argument,0,'a' },
00326       { "version",no_argument,0,'V' },
00327       { "define",required_argument,0,'D' },
00328       { "negate",required_argument,0,'N' },
00329       { "undefine",required_argument,0,'N' },
00330       { "delete-stale-links",no_argument,0,'L' },
00331       { "no-warn",no_argument,0,'w' },
00332       { "silent",no_argument,0,'S' },
00333       { "quiet",no_argument,0,'w' },
00334       { "no-preconf",no_argument,0,'x' },
00335       { "no-links",no_argument,0,'X'},
00336       { "no-edits",no_argument,0,'e'},
00337       { "enforce-links",no_argument,0,'E'},
00338       { "no-copy",no_argument,0,'k'},
00339       { "use-env",no_argument,0,'u'},
00340       { "no-processes",no_argument,0,'P'},
00341       { "underscore-classes",no_argument,0,'U'},
00342       { "no-hard-classes",no_argument,0,'H'},
00343       { "no-splay",no_argument,0,'q'},
00344       { "no-lock",no_argument,0,'K'},
00345       { "auto",no_argument,0,'A'},
00346       { "inform",no_argument,0,'I'},
00347       { "no-modules",no_argument,0,'M'},
00348       { "force-net-copy",no_argument,0,'b'},
00349       { "secure-input",no_argument,0,'Y'},
00350       { "zone-info",no_argument,0,'z'},
00351       { "update-only",no_argument,0,'B'},
00352       { "check-contradictions",no_argument,0,'g'},
00353       { "just",required_argument,0,'j'},
00354       { "avoid",required_argument,0,'o'},
00355       { NULL,0,0,0 }
00356       };
00357 
00358 
00359  /*********************************************************************/
00360  /* Actions                                                           */
00361  /*********************************************************************/
00362 
00363 
00364  PRIVATE char *ACTIONTEXT[] =
00365       {
00366       "",
00367       "Control Defintions:",
00368       "Alerts:",
00369       "Groups:",
00370       "File Imaging:",
00371       "Resolve:",
00372       "Processes:",
00373       "Files:",
00374       "Tidy:",
00375       "Home Servers:",
00376       "Binary Servers:",
00377       "Mail Server:",
00378       "Required Filesystems",
00379       "Disks (Required)",
00380       "Reading Mountables",
00381       "Links:",
00382       "Import files:",
00383       "User Shell Commands:",
00384       "Disable Files:",
00385       "Make Directory Path:",
00386       "Ignore File Paths:",
00387       "Broadcast Mode:",
00388       "Default Packet Route:",
00389       "Miscellaneous Mountables:",
00390       "Edit Simple Text File:",
00391       "Unmount filesystems:",
00392       "Admit network access:",
00393       "Deny network access:",
00394       "Access control lists:",
00395       "Additional network interfaces:",
00396       "Search filter objects:",
00397       "Strategies:",
00398       NULL
00399       };
00400 
00401 
00402  PRIVATE char *ACTIONID[] =    /* The actions which may be specified as indexed */
00403       {                        /* macros in the "special" section of the file   */
00404       "",
00405       "control",
00406       "alerts",
00407       "groups",
00408       "copy",
00409       "resolve",
00410       "processes",
00411       "files",
00412       "tidy",
00413       "homeservers",
00414       "binservers",
00415       "mailserver",
00416       "required",
00417       "disks",
00418       "mountables",
00419       "links",
00420       "import",
00421       "shellcommands",
00422       "disable",
00423       "directories",
00424       "ignore",
00425       "broadcast",
00426       "defaultroute",
00427       "miscmounts",
00428       "editfiles",
00429       "unmount",
00430       "admit",
00431       "deny",
00432       "acl",
00433       "interfaces",
00434       "filters",
00435       "strategies",
00436       NULL
00437       };
00438 
00439  PRIVATE char *BUILTINS[] =    /* The actions which may be specified as indexed */
00440       {
00441       "",
00442       "randomint",
00443       "isnewerthan",
00444       "accessedbefore",
00445       "changedbefore",
00446       "fileexists",
00447       "isdir",
00448       "islink",
00449       "isplain",
00450       "execresult",
00451       "returnszero",
00452       "iprange",
00453       "isdefined",
00454       "strcmp",
00455       "showstate",
00456       NULL
00457       };
00458 
00459   /*********************************************************************/
00460   /* file/image actions                                                */
00461   /*********************************************************************/
00462 
00463   PROTECTED char *FILEACTIONTEXT[] = 
00464       {
00465       "warnall",
00466       "warnplain",
00467       "warndirs",
00468       "fixall",
00469       "fixplain",
00470       "fixdirs",
00471       "touch",
00472       "linkchildren",
00473       "create",
00474       "compress",
00475       "alert",
00476       NULL
00477       };
00478 
00479   /*********************************************************************/
00480 
00481   PRIVATE char *ACTIONSEQTEXT[] =
00482       {
00483       "directories",
00484       "links",
00485       "mailcheck",
00486       "required",
00487       "disks",
00488       "tidy",
00489       "shellcommands",
00490       "files",
00491       "disable",
00492       "addmounts",
00493       "editfiles",
00494       "mountall",
00495       "unmount",
00496       "resolve",
00497       "copy",
00498       "netconfig",
00499       "checktimezone",
00500       "mountinfo",
00501       "processes",
00502       "none",
00503       NULL
00504       };
00505 
00506 
00507 /*******************************************************************/
00508 /*                                                                 */
00509 /* parse object : variables belonging to the Parse object          */
00510 /*                                                                 */
00511 /*                                                                 */
00512 /*******************************************************************/
00513 
00514   PUBLIC short ISCFENGINE;  /* for re-using parser code in cfd */
00515 
00516   PUBLIC  short PARSING = false;
00517   PRIVATE short TIDYDIRS = false;
00518   PRIVATE short TRAVLINKS = false;
00519   PRIVATE short PTRAVLINKS = false;
00520   PRIVATE short DEADLINKS = true;
00521   PRIVATE short DONTDO = false;
00522   PRIVATE short IFCONF = true;
00523   PRIVATE short PARSEONLY = false;
00524   PRIVATE short GOTMOUNTINFO = true;
00525   PRIVATE short NOMOUNTS = false;
00526   PRIVATE short NOMODULES = false;
00527   PRIVATE short NOFILECHECK = false;
00528   PRIVATE short NOTIDY = false;
00529   PRIVATE short NOSCRIPTS = false;
00530   PRIVATE short PRSYSADM = false;
00531   PRIVATE short PRMAILSERVER = false;
00532   PRIVATE short MOUNTCHECK = false;
00533   PRIVATE short NOPROCS = false;
00534   PRIVATE short NOEDITS = false;
00535   PRIVATE short KILLOLDLINKS = false;
00536   PRIVATE short IGNORELOCK = false;
00537   PRIVATE short NOPRECONFIG = false;
00538   PRIVATE short WARNINGS = true;
00539   PRIVATE short NONALPHAFILES = false;
00540   PRIVATE short MINUSF = false;
00541   PRIVATE short NOLINKS = false;
00542   PRIVATE short ENFORCELINKS = false;
00543   PRIVATE short NOCOPY = false;
00544   PRIVATE short FORCENETCOPY = false;
00545   PRIVATE short SILENT=false;
00546   PRIVATE short EDITVERBOSE=false;
00547   PRIVATE short LINKSILENT;
00548 
00549   PRIVATE short ROTATE=0;
00550   PRIVATE short USEENVIRON=false;
00551   PRIVATE short PROMATCHES=-1;
00552   PRIVATE short EDABORTMODE=false;
00553   PRIVATE short UNDERSCORE_CLASSES=false;
00554   PRIVATE short NOHARDCLASSES=false;
00555   PRIVATE short NOSPLAY = false;
00556   PRIVATE short DONESPLAY = false;
00557 
00558   PROTECTED  struct Item *VACLBUILD = NULL;
00559   PROTECTED  struct Item *VFILTERBUILD = NULL;
00560   PROTECTED  struct Item *VSTRATEGYBUILD = NULL;
00561 
00562   PRIVATE char IMAGEBACKUP='y';
00563   PRIVATE char TRUSTKEY = 'n';
00564   PRIVATE char PRESERVETIMES = 'n';
00565   PRIVATE char TYPECHECK = 'y';
00566   PRIVATE char LINKTYPE = 's';
00567   PRIVATE char AGETYPE = 'a';
00568   PRIVATE char COPYTYPE = 't';
00569   PRIVATE char DEFAULTCOPYTYPE = 't';
00570   PRIVATE char REPOSCHAR = '_';
00571   PRIVATE char LISTSEPARATOR = ':';
00572   PRIVATE char LINKDIRS = 'k';
00573   PRIVATE char DISCOMP = '=';
00574   PRIVATE char USESHELL = 'y';  /* yes or no or dumb */
00575   PRIVATE char PREVIEW = 'n';  /* yes or no */
00576   PRIVATE char PURGE = 'n';
00577   PRIVATE char LOGP = 'd';  /* y,n,d=default*/
00578   PRIVATE char INFORMP = 'd';
00579   PRIVATE char MOUNTMODE = 'w';   /* o or w for rw/ro*/
00580   PRIVATE char DELETEDIR = 'y';   /* t=true */
00581   PRIVATE char DELETEFSTAB = 'y';
00582   PRIVATE char FORCE = 'n';
00583   PRIVATE char FORCEIPV4 = 'n';
00584   PRIVATE char FORCELINK = 'n';
00585   PRIVATE char FORCEDIRS = 'n';
00586   PRIVATE char STEALTH = 'n';
00587   PRIVATE char CHECKSUM = 'n'; /* n,m,s */
00588   PRIVATE char COMPRESS = 'n';
00589 
00590   PRIVATE char *VUIDNAME;
00591   PRIVATE char *VGIDNAME;
00592   PRIVATE char *FILTERNAME;
00593   PRIVATE char *STRATEGYNAME;
00594   PRIVATE char *CURRENTITEM;
00595   PRIVATE char *GROUPBUFF;
00596   PRIVATE char *ACTIONBUFF;
00597   PRIVATE char *CURRENTPATH;
00598   PRIVATE char *CLASSBUFF;
00599   PRIVATE char *LINKFROM;
00600   PRIVATE char *LINKTO;
00601   PRIVATE char *ERROR;
00602   PRIVATE char *MOUNTFROM;
00603   PRIVATE char *MOUNTONTO;
00604   PRIVATE char *MOUNTOPTS;
00605   PRIVATE char *DESTINATION;
00606   PRIVATE char *IMAGEACTION;
00607   PRIVATE char *VIFNAME[16];
00608   PRIVATE char *VIFNAMEOVERRIDE[16];
00609   PRIVATE char *CHDIR;
00610   PRIVATE char *LOCALREPOS;
00611   PRIVATE char *EXPR;
00612   PRIVATE char *CURRENTAUTHPATH;
00613   PRIVATE char *RESTART;
00614   PRIVATE char *FILTERDATA;
00615   PRIVATE char *STRATEGYDATA;
00616 
00617   PRIVATE short PROSIGNAL;
00618   PRIVATE char  PROACTION;
00619 
00620   PRIVATE char PROCOMP;
00621   PRIVATE char IMGCOMP;
00622   PRIVATE int IMGSIZE;
00623 
00624   PUBLIC int ERRORCOUNT = 0;
00625   PUBLIC int LINENUMBER = 1;
00626 
00627   PRIVATE int HAVEUID = 0;
00628   PRIVATE int DISABLESIZE=99999999;
00629   PRIVATE int TIDYSIZE=0;
00630   PRIVATE int VRECURSE;
00631   PRIVATE int VAGE;
00632   PRIVATE int VTIMEOUT=0;
00633 
00634   PRIVATE mode_t UMASK=0;
00635   PRIVATE mode_t PLUSMASK;
00636   PRIVATE mode_t MINUSMASK;
00637 
00638   PRIVATE u_long PLUSFLAG;
00639   PRIVATE u_long MINUSFLAG;
00640 
00641  /* Parsing flags etc */
00642 
00643   PUBLIC enum actions ACTION = none;
00644   PRIVATE enum vnames CONTROLVAR = nonexistentvar;
00645   PRIVATE enum fileactions FILEACTION = warnall;
00646 
00647   PRIVATE flag ACTION_IS_LINK = false;
00648   PRIVATE flag ACTION_IS_LINKCHILDREN = false;
00649   PRIVATE flag MOUNT_ONTO = false;
00650   PRIVATE flag MOUNT_FROM = false;
00651   PRIVATE flag HAVE_RESTART = false;
00652   PRIVATE flag ACTIONPENDING = false;
00653   PRIVATE flag HOMECOPY = false;
00654   PRIVATE char ENCRYPT = 'n';
00655   PRIVATE char VERIFY = 'n';
00656   PRIVATE char COMPATIBILITY = 'n';
00657 
00658   /*
00659    * HvB: Bas van der Vlies
00660   */
00661   PRIVATE flag MOUNT_RO = false;
00662 
00663   PRIVATE char *COMMATTRIBUTES[] =
00664      {
00665      "recurse",
00666      "mode",
00667      "owner",
00668      "group",
00669      "age",
00670      "action",
00671      "pattern",
00672      "links",
00673      "type",
00674      "destination",
00675      "force",
00676      "forcedirs",
00677      "forceipv4",
00678      "backup",
00679      "rotate",
00680      "size",
00681      "matches",
00682      "signal",
00683      "exclude",
00684      "copy",
00685      "symlink",
00686      "copytype",
00687      "linktype",
00688      "include",
00689      "dirlinks",
00690      "rmdirs",
00691      "server",
00692      "define",
00693      "elsedefine",
00694      "failover",
00695      "timeout",
00696      "freespace",
00697      "nofile",
00698      "acl",
00699      "purge",
00700      "useshell",
00701      "syslog",
00702      "inform",
00703      "netmask",
00704      "broadcast",
00705      "ignore",
00706      "deletedir",
00707      "deletefstab",
00708      "stealth",
00709      "checksum",
00710      "flags",
00711      "encrypt",
00712      "verify",
00713      "root",
00714      "typecheck",
00715      "umask",
00716      "compress",
00717      "filter",
00718      "background",
00719      "chdir",
00720      "chroot",
00721      "preview",
00722      "repository",
00723      "timestamps",
00724      "trustkey",
00725      "oldserver",
00726      "mountoptions",      /* HvB : Bas van der Vlies */
00727      "readonly",          /* HvB : Bas van der Vlies */
00728      NULL
00729      };
00730 
00731 
00732 
00733   PUBLIC char *VFILTERNAMES[] =
00734      {
00735      "Result", /* quoted string of combinatorics, classes of each result */
00736      "Owner",
00737      "Group",
00738      "Mode",
00739      "Type",
00740      "FromCtime",
00741      "ToCtime",
00742      "FromMtime",
00743      "ToMtime",
00744      "FromAtime",
00745      "ToAtime",
00746      "FromSize",
00747      "ToSize",
00748      "ExecRegex",
00749      "NameRegex",
00750      "DefineClasses",
00751      "ElseDefineClasses",
00752      "ExecProgram",
00753      "IsSymLinkTo",
00754      "PID",
00755      "PPID",
00756      "PGID",
00757      "RSize",
00758      "VSize",
00759      "Status",
00760      "Command",
00761      "FromTTime",
00762      "ToTTime",
00763      "FromSTime",
00764      "ToSTime",
00765      "TTY",
00766      "Priority",
00767      "Threads",
00768      "NoFilter",
00769      NULL
00770      };
00771 
00772 /*******************************************************************/
00773 /*                                                                 */
00774 /* editfiles object : variables belonging to Editfiles             */
00775 /*                    editfiles uses Item