bozo: Introduce bnode_Wait()
[openafs.git] / src / config / touch.c
1 /* touch.c : Defines the entry point for the console application.*/
2 /* Copyright 2000, International Business Machines Corporation and others.
3         All Rights Reserved.
4
5         This software has been released under the terms of the IBM Public
6         License.  For details, see the LICENSE file in the top-level source
7         directory or online at http://www.openafs.org/dl/license10.html
8 */
9
10 #include <windows.h>
11 #include "io.h"
12 #include <stdio.h>
13 #include <fcntl.h>
14 #include <sys/stat.h>
15 #include <process.h>
16
17 #ifndef intptr_t
18 #define intptr_t INT_PTR
19 #endif
20
21 void
22 usage()
23 {
24     printf("touch filename/Wildcard \n");
25     exit(1);
26 }
27
28 /*
29  * Construct the mask explicitly.  Later versions of windows start filling
30  * in higher bits and that doesn't affect the operation
31  */
32
33 #define ATTRIBUTE_MASK (_A_RDONLY | _A_HIDDEN | _A_SYSTEM | _A_SUBDIR)
34
35
36 int
37 main(int argc, char *argv[])
38 {
39     int fh;
40     intptr_t fs;
41     long pos;
42     char buffer[1];
43     struct _finddata_t finfo;
44     if (argc < 2)
45         usage();
46     fs = _findfirst(argv[1], &finfo);
47     if (fs == -1)
48         return 0;
49     do {
50
51         if ((finfo.attrib & ATTRIBUTE_MASK) != _A_NORMAL)
52             continue;
53         fh = _open(finfo.name, _S_IWRITE | _O_BINARY | _S_IREAD | _O_RDWR);
54         pos = _lseek(fh, 0L, SEEK_END);
55         buffer[0] = 0;
56         _write(fh, buffer, 1);
57         _chsize(fh, pos);
58         _close(fh);
59     } while (_findnext(fs, &finfo) == 0);
60     return 0;
61 }