Import Upstream version 1.8.5
[hcoop/debian/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 }