Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / config / touch.c
CommitLineData
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
21void
22usage()
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
36int
37main(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}