home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 December
/
simtel1292_SIMTEL_1292_Walnut_Creek.iso
/
msdos
/
sysutl
/
picnix32.arc
/
MAKE.ARC
/
TOUCH.C
< prev
Wrap
Text File
|
1986-01-30
|
2KB
|
46 lines
#include <fcntl.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#define ERROR -1
usage(){
puts("usage : touch file ...");
exit (1);
}
main(argc,argv)
char **argv;{
int f,i;
char ch[1];
if (argc == 1) usage();
for (i=1; i<argc; i++) {
if (ERROR != (f = open(argv[i], O_CREAT | O_EXCL, S_IWRITE | S_IREAD))) {
/* we've created it */
if (ERROR != close(f)) continue;
puts("Can't close file"), exit(3);
}
if (ERROR != (f = open(argv[i], O_RDWR | O_BINARY)))
/* we've opened it */
if (1 == read(f,ch,1)) {
/* we've read one character */
lseek(f,0L,0); /* rewind */
if (1 == write(f,ch,1)) { close(f); continue; }
puts("Can't write to file."), exit(5);
}
else {
/* we know the file has length 0 */
close(f);
if (ERROR != (f = open(argv[i], O_TRUNC, S_IWRITE | S_IREAD))) { close(f); continue; }
puts("Can't truncate file"), exit(7);
}
else puts("Can't open file"), exit(4);
}
exit(0);
}
_setenvp(){} /* don't use envp arg */
_nullcheck(){} /* don't check for null pointer assignments */