home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / tools / touch / touch.c next >
Text File  |  1986-12-07  |  1KB  |  56 lines

  1. /* touch.c -- similar to UNIX command */
  2.  
  3. /* MS-DOS 3.1 & Lattice C 3.1 */
  4.  
  5. #include "dos.h"
  6. #include "fcntl.h"
  7.  
  8. void
  9. main(argc, argv)
  10. int    argc;
  11. char    *argv[];
  12. {
  13.     int      i;
  14.     int      fd;        /* file descriptor */
  15.     unsigned  date, time;    /* system date & time */
  16.     union      REGS regs;    /* register to interrupt */
  17.  
  18.     for (i = 1; i < argc; i++) {
  19.         fd = open(argv[i], O_RDWR | O_CREAT);    /* open file */
  20.  
  21.         /* get system date */
  22.         regs.h.ah = 42;
  23.         int86(0x21, ®s, ®s);
  24.         regs.x.ax = regs.x.cx;
  25.         regs.x.ax -= 1980;
  26.         regs.x.ax <<= 4;
  27.         regs.h.al += regs.h.dh;
  28.         regs.x.ax <<= 5;
  29.         regs.h.al += regs.h.dl;
  30.         date = regs.x.ax;
  31.  
  32.         /* get system time */
  33.         regs.h.ah = 44;
  34.         int86(0x21, ®s, ®s);
  35.         regs.x.ax = 0;
  36.         regs.h.al = regs.h.cl;
  37.         regs.x.ax <<= 5;
  38.         regs.h.ch <<= 3;
  39.         regs.h.ah += regs.h.ch;
  40.         regs.h.dh >>= 1;
  41.         regs.h.al += regs.h.dh;
  42.         time = regs.x.ax;
  43.  
  44.         /* set file date & time */
  45.         regs.h.al = 1;
  46.         regs.h.ah = 0x57;
  47.         regs.x.dx = date;
  48.         regs.x.cx = time;
  49.         regs.x.bx = fd;
  50.         int86(0x21, ®s, ®s);
  51.  
  52.         close(fd);
  53.     }
  54.     exit(0);
  55. }
  56.