home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- int i;
- static int force = 1;
-
- for(i = 1 ; i < argc ; ++i)
- if( strcmp(argv[i], "-c") )
- touch(force, argv[i]);
- else
- force = 0;
- }
-
-
-
-
- #include <sys/types.h>
- #include <sys/stat.h>
-
-
- touch(force, name)
- int force;
- char *name;
- {
- struct stat stbuff;
- char junk[1];
- int fd;
-
- if( stat(name,&stbuff) < 0)
- if(force)
- goto create;
- else
- {
- fprintf(stderr, "touch: file %s does not exist.\n", name);
- return;
- }
-
- if(stbuff.st_size == 0)
- goto create;
-
- if( (fd = open(name, 2)) < 0)
- goto bad;
-
- if( read(fd, junk, 1) < 1)
- {
- close(fd);
- goto bad;
- }
- lseek(fd, 0L, 0);
- if( write(fd, junk, 1) < 1 )
- {
- close(fd);
- goto bad;
- }
- close(fd);
- return;
-
- bad:
- fprintf(stderr, "Cannot touch %s\n", name);
- return;
-
- create:
- if( (fd = creat(name, 0666)) < 0)
- goto bad;
- close(fd);
- }
-