Commit | Line | Data |
---|---|---|
805e021f CE |
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 | } |