|
|
1.1 root 1: static char *sccsid = "@(#)touch.c 4.1 (Berkeley) 10/1/80";
2: #include <stdio.h>
3:
4:
5: main(argc,argv)
6: int argc;
7: char *argv[];
8: {
9: int i;
10: static int force = 1;
11:
12: for(i = 1 ; i < argc ; ++i)
13: if( strcmp(argv[i], "-c") )
14: touch(force, argv[i]);
15: else
16: force = 0;
17: }
18:
19:
20:
21:
22: #include <sys/types.h>
23: #include <sys/stat.h>
24:
25:
26: touch(force, name)
27: int force;
28: char *name;
29: {
30: struct stat stbuff;
31: char junk[1];
32: int fd;
33:
34: if( stat(name,&stbuff) < 0)
35: if(force)
36: goto create;
37: else
38: {
39: fprintf(stderr, "touch: file %s does not exist.\n", name);
40: return;
41: }
42:
43: if(stbuff.st_size == 0)
44: goto create;
45:
46: if( (fd = open(name, 2)) < 0)
47: goto bad;
48:
49: if( read(fd, junk, 1) < 1)
50: {
51: close(fd);
52: goto bad;
53: }
54: lseek(fd, 0L, 0);
55: if( write(fd, junk, 1) < 1 )
56: {
57: close(fd);
58: goto bad;
59: }
60: close(fd);
61: return;
62:
63: bad:
64: fprintf(stderr, "Cannot touch %s\n", name);
65: return;
66:
67: create:
68: if( (fd = creat(name, 0666)) < 0)
69: goto bad;
70: close(fd);
71: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.