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
rcsid
defined in line
1;
never used