From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/todaybak.c | 98 +++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/todaybak.c (limited to 'reference/C/CONTRIB/SNIP/todaybak.c') diff --git a/reference/C/CONTRIB/SNIP/todaybak.c b/reference/C/CONTRIB/SNIP/todaybak.c new file mode 100755 index 0000000..ab3ffb6 --- /dev/null +++ b/reference/C/CONTRIB/SNIP/todaybak.c @@ -0,0 +1,98 @@ +/* +** TODAYBAK.C - Back up today's work to a specified floppy +** +** public domain demo by Bob Stout +*/ + +#include +#include +#include +#include + +#if defined(__ZTC__) && (__ZTC__ < 0x600) + #define _dos_getdate dos_getdate + #define _dos_setdate dos_setdate + #define _dosdate_t dos_date_t +#endif +#ifdef __TURBOC__ + #define _dosdate_t dosdate_t +#endif + +#ifndef SUCCESS + #define SUCCESS 0 +#endif + +#ifndef CAST + #define CAST(new_type,old_object) (*((new_type *)&(old_object))) +#endif + +#define LAST_CHAR(s) (((char *)s)[strlen(s) - 1]) + +struct DOS_DATE { + unsigned int da : 5; + unsigned int mo : 4; + unsigned int yr : 7; + } ; + +struct _dosdate_t today; +struct DOS_DATE ftoday; +char drive; + +void do_dir(char *); +void usage(void); + +int main(int argc, char *argv[]) +{ + int i; + + _dos_getdate(&today); + ftoday.da = today.day; + ftoday.mo = today.month; + ftoday.yr = today.year - 1980; + + if (2 > argc) + usage(); + + drive = *argv[1]; + if (!strchr("AaBb", drive)) + usage(); + + if (3 > argc) + do_dir("."); + else for (i = 2; i < argc; ++i) + do_dir(argv[i]); + + return EXIT_SUCCESS; +} + +void usage(void) +{ + puts("usage: TODAYBAK floppy [dir1] [...dirN]"); + puts(" Copies today's files to the specified floppy."); + puts(" floppy = 'A' | 'B'"); + puts(" with no directories specified, " + "uses current directory"); + exit(EXIT_FAILURE); +} + +void do_dir(char *path) +{ + char search[67]; + struct find_t ff; + + strcat(strcpy(search, path), "\\*.*"); + if (SUCCESS == _dos_findfirst(search, 0xff, &ff)) do + { + if (!(ff.attrib & _A_SUBDIR) && '.' != *ff.name) + { + if (ff.wr_date == CAST(unsigned short, ftoday)) + { + char cmd[128]; + + sprintf(cmd, "COPY %s\\%s %c: > NUL", + path, ff.name, drive); + system(cmd); + } + } + } while (SUCCESS == _dos_findnext(&ff)); +} -- cgit v1.2.3-54-g00ecf