summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/touch.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/touch.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/touch.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/touch.c b/reference/C/CONTRIB/SNIP/touch.c
new file mode 100755
index 0000000..0f21d19
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/touch.c
@@ -0,0 +1,63 @@
+/*----------------------------------------------------------------------*
+* Program: touch *
+* Programmer: Ray L. McVay *
+* Started: 8 Aug 91 *
+* Updated: 13 Feb 93 Thad Smith *
+* Updated: 15 Feb 93 Bob Stout *
+*-----------------------------------------------------------------------*
+* Simple touch program to test BC time stamping function. *
+* Public Domain *
+*----------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#ifdef __TURBOC__
+ #include <dos.h>
+ #include <io.h>
+#else
+ #include "ftime.h" /* Borland work-alike in SNIPPETS */
+#endif
+
+void usage(void);
+
+main(int argc, char **argv)
+{
+ time_t tnow;
+ struct tm tmnow;
+ struct ftime ft;
+ FILE *f;
+
+ if (argc < 2)
+ usage();
+
+ tnow = time(NULL);
+ tmnow = *localtime(&tnow);
+
+ ft.ft_year = tmnow.tm_year - 80;
+ ft.ft_month = tmnow.tm_mon + 1;
+ ft.ft_day = tmnow.tm_mday;
+ ft.ft_hour = tmnow.tm_hour;
+ ft.ft_min = tmnow.tm_min;
+ ft.ft_tsec = tmnow.tm_sec/2;
+
+ if ((f = fopen(argv[1], "r+b")) != NULL)
+ setftime(fileno(f), &ft);
+ else if ((f = fopen(argv[1], "w")) != NULL)
+ setftime(fileno(f), &ft);
+ else perror("Can't open file");
+
+ if (f)
+ fclose(f);
+
+ return EXIT_SUCCESS;
+}
+
+void usage(void)
+{
+ puts("Usage: TOUCH filename\n");
+ puts(" The timestamp of filename will be set to the current time.");
+ puts(" A zero-length file will be created if the file doesn't exist.");
+ exit(EXIT_FAILURE);
+}
+