# 2.11BSD#431 - /usr/src/new/notes/src/rmnf.c

##### Functions

    main              X

##### Macros

    MAINLINE          X

       1: #define MAINLINE
       2: #ifdef  RCSIDENT
       3: static char rcsid[] = "$Header: rmnf.c,v 1.7 85/01/18 15:39:00 notes Rel $";
       4: #endif	RCSIDENT
       5:
       6: /*
       7:  *	rmnf - remove notefiles
       8:  *	rmnf removes the notefiles specified on the control card.
       9:  *	It also goes through and cleans out the sequencer files
      10:  *	that had entries for that notefile.
      11:  *
      12:  *	Since this can sort of destroy a lot of information, we
      13:  *	ask for confirmation of the removal.
      14:  *
      15:  *	Original Coding: Ray Essick	December 1981
      16:  */
      17: #include "parms.h"
      18: #include "structs.h"
      19:
      20: main (argc, argv)
      21: char  **argv;
      22: {
      23:     int     i;
      24:     int     c;
      25:     int     start = 1;                  /* argv to start at */
      26:     int     forced = 0;                 /* -f flag */
      27:     struct nflist_f *nfptr;
      28:
      29:     startup (argc, argv);               /* common initialization */
      30:
      31:     if (globuid != Notesuid)
      32:     {
      33:     printf ("You are not allowed to remove notefiles\n");
      34:     exit (BAD);
      35:     }
      36:
      37:     if (argc == 1)
      38:     {
      39:     printf ("Usage: %s [-f] notefile [notefile ...]\n", argv[0]);
      40:     exit (BAD);
      41:     }
      42:
      43:     if (!strcmp (argv[start], "-f"))            /* don't ask him */
      44:     {
      45:     forced++;
      46:     start++;
      47:     }
      48:
      49:     for (i = start; i < argc; i++)
      50:     {
      51:     if (argv[i][0] == '/')              /* explicit names */
      52:     {
      53:         printf ("%s: Won't remove %s\n", argv[0], argv[i]);
      54:         continue;
      55:     }
      56:     expand (argv[i]);               /* expand it */
      57:     }
      58:
      59:     while ((nfptr = nextgroup ()) != (struct nflist_f *) NULL)
      60:     {
      61:     if (chkpath (nfptr -> nf_name) == -1)
      62:     {
      63:         printf ("%s: Bad notefile name\n", nfptr -> nf_name);
      64:         continue;
      65:     }
      66:     if (forced == 0)
      67:     {
      68:         printf ("Really remove notesfile %s? ", nfptr -> nf_name);
      69:         c = getchar ();             /* grab 1 from the tty */
      70:         if (c != '\n')
      71:         while (getchar () != '\n');     /* suck to eol */
      72:         if (c != 'y')
      73:         continue;               /* don't delete */
      74:     }
      75:     x (chdir (Mstdir) < 0, "rmnf: bad chdir to MSTDIR");
      76:     if (chdir (nfptr -> nf_name) < 0)
      77:     {
      78:         printf ("%s: Can't delete or non-existent\n", nfptr -> nf_name);
      79:         continue;
      80:     }
      81:
      82: #ifndef FASTFORK
      83:     dounix ("rm -f *", 0, 0);           /* remove the files */
      84: #else
      85:     dounix (0, 0, hisshell, "-c", "rm -f *", 0, 0);
      86: #endif
      87:
      88:     x (chdir ("..") < 0, "rmnf: bad chdir ..");
      89:
      90: #ifndef FASTFORK
      91:     {
      92:         char    cmdline[CMDLEN];
      93:         sprintf (cmdline, "rmdir %s", nfptr -> nf_name);/* remove directory */
      94:         dounix (cmdline, 0, 0);         /* execute command */
      95:     }
      96: #else
      97:     dounix (0, 0, "/bin/rmdir", nfptr -> nf_name, 0, 0, 0);
      98: #endif
      99:
     100:     printf ("%s: Deleted\n", nfptr -> nf_name);
     101:
     102: /*	now we get to remove the sequencer entries
     103:  *	This is a little complicated for sitting and typing from the tope
     104:  *	of my head, so I will write it out later and type it in.
     105:  *	Have to do stuff which include opening the sequencer directory
     106:  *	and reading all the names from it to get the file names..
     107:  *	Then have to sequence through each file doing
     108:  *	 while ( more) { read; if (not one deleting) {write;count++} }
     109:  *	Also if don't write any - unlink the file.
     110:  *
     111:  */
     112:     }
     113:     exit (GOOD);
     114: }

#### Defined functions

main defined in line 20; never used

#### Defined variables

rcsid defined in line 3; never used

#### Defined macros

MAINLINE defined in line 1; never used

Last modified: 1985-01-19 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 630 |