1: static char *rcsid = "$Header$";
   2: /*
   3:  * pmv - move or rename files
   4:  *
   5:  * Author: Peter J. Nicklin
   6:  */
   7: #include "bin.h"
   8: #include "macro.h"
   9: #include "null.h"
  10: #include "path.h"
  11: #include "yesno.h"
  12: 
  13: char *PGN = "pmv";          /* program name */
  14: 
  15: main(argc, argv)
  16:     int argc;
  17:     char **argv;
  18: {
  19:     extern int PPDEBUG;     /* project pathname debug flag */
  20:     char **nargv;           /* new argument list */
  21:     char *strsav();         /* save string somewhere */
  22:     int filecount = 0;      /* # of valid files or directories */
  23:     int nargi = 0;          /* new argument list index */
  24:     int xppath();           /* expand project pathname */
  25:     PATH pathbuf;           /* pathname struct buffer */
  26: 
  27:     nargv = argv;
  28:     nargv[nargi++] = "mv";
  29: 
  30:     {
  31:     register char *s;       /* option pointer */
  32:     while (--argc > 0 && **++argv == '-')
  33:         {
  34:         s = argv[0]+1;
  35:         if (*s == '\0')     /* special kludge to handle `-' flag */
  36:             {
  37:             nargv[nargi++] = *argv++;
  38:             break;
  39:             }
  40:         else    {
  41:             for (; *s != '\0'; s++)
  42:                 switch (*s)
  43:                     {
  44:                     case 'D':
  45:                         PPDEBUG = YES;
  46:                         break;
  47:                     default:
  48:                         nargv[nargi++] = *argv;
  49:                         break;
  50:                     }
  51:             }
  52:         }
  53:     }
  54:     if (argc < 2)
  55:         fatal("usage: %s f1 f2; or %s f1 ... f2 d1", PGN, PGN);
  56: 
  57:     /* expand project pathnames and attach to new argument list */
  58:     for (; argc > 1; argc--, argv++)
  59:         if (xppath(*argv, &pathbuf) == -1)
  60:             patherr(*argv);
  61:         else switch (pathbuf.p_mode & P_IFMT)
  62:             {
  63:             case P_IFNEW:
  64:                 patherr(*argv);
  65:                 break;
  66:             case P_IFPDIR:
  67:                 warn("can't move project directory %s", *argv);
  68:                 break;
  69:             case P_IFHOME:
  70:             case P_IFPROOT:
  71:                 warn("can't move project %s", *argv);
  72:                 break;
  73:             default:
  74:                 nargv[nargi++] = strsav(pathbuf.p_path);
  75:                 filecount++;
  76:             }
  77: 
  78:     if (filecount == 0)
  79:         exit(1);
  80:     else if (xppath(*argv, &pathbuf) == -1)
  81:         {
  82:         patherr(*argv);
  83:         exit(1);
  84:         }
  85:     else    {
  86:         nargv[nargi++] = strsav(pathbuf.p_path);
  87:         nargv[nargi] = NULL;
  88:         }
  89: 
  90:     /* execute "mv" command */
  91:     execv(MV, nargv);
  92:     fatal("can't exec %s", MV);
  93: }

Defined functions

main defined in line 15; never used

Defined variables

PGN defined in line 13; used 2 times
  • in line 55(2)
rcsid defined in line 1; never used
Last modified: 1985-07-03
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 757
Valid CSS Valid XHTML 1.0 Strict