1: #define     MAINLINE
   2: #include    "parms.h"
   3: #include    "structs.h"
   4: 
   5: #ifdef  RCSIDENT
   6: static char rcsid[] = "$Header: nfaccess.c,v 1.7 85/01/18 15:40:27 notes Rel $";
   7: #endif	RCSIDENT
   8: 
   9: /*
  10:  *	This program works sort of chmod by adding/deleting
  11:  *	permissions to the specified access lists.
  12:  *
  13:  *	Any normal user can run this program. It only allows changes
  14:  *	to notesfiles the user is a director in.
  15:  *
  16:  *	Ray Essick		February 1984
  17:  */
  18: 
  19: 
  20: 
  21: #define     MAXADD      1           /* simultaneous adds */
  22: struct perm_f   Newmodes[MAXADD];           /* inserted modes */
  23: static int  nmodes = 0;                 /* active slots */
  24: 
  25: #include    <pwd.h>
  26: #include    <grp.h>
  27: extern struct passwd   *getpwnam ();
  28: extern struct group *getgrnam ();
  29: 
  30: 
  31: main (argc, argv)
  32: int     argc;
  33: char  **argv;
  34: {
  35:     struct io_f io;
  36:     int     argn;
  37:     struct nflist_f *nfptr;
  38: 
  39:     startup (argc, argv);               /* common init code */
  40: 
  41:     if (parsemode (argv[1], &Newmodes[nmodes++], 1))    /* grab a mode */
  42:     {
  43:     usage (argv[0]);                /* incorrect */
  44:     }
  45: 
  46:     for (argn = 2; argn < argc; argn++)
  47:     {
  48:     expand (argv[argn]);                /* load it */
  49:     }
  50: 
  51:     while ((nfptr = nextgroup ()) != (struct nflist_f *) NULL)
  52:     {
  53:     if (init (&io, nfptr -> nf_name) < 0)       /* open */
  54:     {
  55:         printf ("%s:	couldn't open\n", nfptr -> nf_name);
  56:         continue;
  57:     }
  58:     if (!allow (&io, DRCTOK))           /* a director? */
  59:     {
  60:         printf ("%s:	Not a director\n", nfptr -> nf_name);
  61:         closenf (&io);
  62:         continue;
  63:     }
  64: 
  65:     addmodes (&io, nmodes, &Newmodes, 1);       /* add permissions */
  66:     closenf (&io);
  67:     }
  68:     exit (0);                       /* all done */
  69: }
  70: 
  71: usage (name)                        /* how to invoke */
  72: char   *name;
  73: {
  74:     fprintf (stderr,
  75:         "Usage: %s <permission> <notesfile> [<notesfile>...]\n",
  76:         name);
  77:     exit (1);
  78: }

Defined functions

main defined in line 31; never used
usage defined in line 71; used 1 times
  • in line 43

Defined variables

Newmodes defined in line 22; used 2 times
nmodes defined in line 23; used 2 times
rcsid defined in line 6; never used

Defined macros

MAINLINE defined in line 1; never used
MAXADD defined in line 21; used 1 times
  • in line 22
Last modified: 1985-01-19
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2356
Valid CSS Valid XHTML 1.0 Strict