Commit | Line | Data |
---|---|---|
3b600ead TL |
1 | # include <sys/param.h> |
2 | # include <stat.h> | |
3 | int status; | |
4 | ||
5 | main(argc, argv) | |
6 | int argc; | |
7 | char **argv; | |
8 | { | |
9 | register i; | |
10 | register char *c1, *c2; | |
11 | char dirname[100]; | |
12 | ||
13 | if(argc < 3) | |
14 | { | |
15 | prs("arg count\n"); | |
16 | exit(1); | |
17 | } | |
18 | argc--; | |
19 | c1 = dirname; | |
20 | c2 = argv[argc]; | |
21 | while(*c1++ = *c2++); | |
22 | c1[-1] = '/'; | |
23 | c1[0] = '.'; | |
24 | c1[1] = '\0'; | |
25 | if(filetype(dirname) != S_IFDIR) | |
26 | { | |
27 | prs(dirname); | |
28 | prs(" is not a directory.\n"); | |
29 | exit(1); | |
30 | } | |
31 | ||
32 | for(i=1; i<argc; i++) | |
33 | { | |
34 | if(filetype(argv[i]) != S_IFREG) | |
35 | { | |
36 | prs(argv[i]); | |
37 | prs(" is not an ordinary file.\n"); | |
38 | } | |
39 | else if(fork() == 0) | |
40 | { | |
41 | execl("/bin/mv", "mv", argv[i], dirname,0); | |
42 | exit(1); | |
43 | } | |
44 | else wait(&status); | |
45 | } | |
46 | } | |
47 | ||
48 | filetype(filename) | |
49 | char *filename; | |
50 | { | |
51 | struct stat buf ; | |
52 | ||
53 | if(stat(filename,&buf) < 0) | |
54 | return(-1); | |
55 | else return(buf.st_mode&S_IFMT); | |
56 | } | |
57 | ||
58 | ||
59 | prs(s) | |
60 | register char *s; | |
61 | { | |
62 | while(*s) | |
63 | write(2, s++, 1); | |
64 | } |