1: #ifndef lint
2: static char sccsid[] = "@(#)cpmv.c 5.1 (Berkeley) 7/2/83";
3: #endif
4:
5: #include "uucp.h"
6: #include <sys/types.h>
7: #include <sys/stat.h>
8:
9:
10: /***
11: * xcp(f1, f2) copy f1 to f2
12: * char *f1, *f2;
13: *
14: * return - 0 ok | FAIL failed
15: */
16:
17: xcp(f1, f2)
18: char *f1, *f2;
19: {
20: char buf[BUFSIZ];
21: register int len;
22: register FILE *fp1, *fp2;
23: char *lastpart();
24: char full[100];
25: struct stat s;
26:
27: if ((fp1 = fopen(subfile(f1), "r")) == NULL)
28: return(FAIL);
29: strcpy(full, f2);
30: if (stat(subfile(f2), &s) == 0) {
31: /* check for directory */
32: if ((s.st_mode & S_IFMT) == S_IFDIR) {
33: strcat(full, "/");
34: strcat(full, lastpart(f1));
35: }
36: }
37: DEBUG(4, "full %s\n", full);
38: if ((fp2 = fopen(subfile(full), "w")) == NULL) {
39: fclose(fp1);
40: return(FAIL);
41: }
42: while((len = fread(buf, sizeof (char), BUFSIZ, fp1)) > 0)
43: fwrite(buf, sizeof (char), len, fp2);
44: fclose(fp1);
45: fclose(fp2);
46: return(0);
47: }
48:
49:
50: /*
51: * xmv(f1, f2) move f1 to f2
52: * char * f1, *f2;
53: *
54: * return 0 ok | FAIL failed
55: */
56:
57: xmv(f1, f2)
58: register char *f1, *f2;
59: {
60: register int ret;
61:
62: if (link(subfile(f1), subfile(f2)) < 0) {
63: /* copy file */
64: ret = xcp(f1, f2);
65: if (ret == 0)
66: unlink(subfile(f1));
67: return(ret);
68: }
69: unlink(subfile(f1));
70: return(0);
71: }
Defined functions
xcp
defined in line
17; used 4 times
xmv
defined in line
57; used 7 times
Defined variables
sccsid
defined in line
2;
never used