home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / TELECOM / OSKBox.lzh / MAILBOX / CC / crontest.c < prev    next >
C/C++ Source or Header  |  1987-10-04  |  3KB  |  150 lines

  1. #include <ctype.h>
  2.  
  3. #define EVENTNUM 24            /* maximum number of events */
  4.  
  5. #define TERM -1
  6. #define WILD -2
  7. #define RANGE -3            /* followed by start & finish */
  8.  
  9. int event_count;
  10. struct event {
  11.     int ev_pid;
  12.     int ev_time, ev_date;
  13.     char ev_minute[61];
  14.     char ev_hour[25];
  15.     char ev_day[32];
  16.     char ev_month[13];
  17.     char ev_weekday[8];
  18.     char ev_string[256];
  19.     } events[EVENTNUM];
  20.  
  21. main (argc, argv)
  22. char *argv[];
  23. {
  24.     int curtime, curdate, tick;
  25.     short curday;
  26.     int min_wait;
  27.     int i, j, k;
  28.     char buffer[32];
  29.  
  30.     readcron ();
  31.     dumpcron ();
  32.     }
  33.  
  34. /* Read /dd/misc/crontab and build event array. */
  35. readcron ()
  36. {
  37.     int f, len;
  38.     char line[300], field[80], *p;
  39.  
  40.     if ((f = open ("/dd/misc/crontab", 1)) < 0)
  41.         exit (0);
  42.     for (event_count = 0; event_count < EVENTNUM; event_count++) {
  43.         if ((len = readln (f, line, 300)) <= 0)
  44.             break;
  45.         line[len-1] = '\0';
  46.         p = line;
  47.         p += scanword (p, field, 80);
  48.         getvals (field, events[event_count].ev_minute);
  49.         p += scanword (p, field, 80);
  50.         getvals (field, events[event_count].ev_hour);
  51.         p += scanword (p, field, 80);
  52.         getvals (field, events[event_count].ev_day);
  53.         p += scanword (p, field, 80);
  54.         getvals (field, events[event_count].ev_month);
  55.         p += scanword (p, field, 80);
  56.         getvals (field, events[event_count].ev_weekday);
  57.         while (*p && isspace (*p))
  58.             p++;
  59.         strncpy (events[event_count].ev_string, p, 256);
  60.         }
  61.     close (f);
  62.     }
  63.  
  64. getvals (str, vals)
  65. char *str, *vals;
  66. {
  67.     char *i, *p;
  68.  
  69.     i = vals;
  70.     p = str;
  71.     while (*p) {
  72.         if (*p == '*') {
  73.             *i++ = WILD;
  74.             p++;
  75.             }
  76.         else if (*p == '-') {
  77.             *i = *(i-1);
  78.             *(i-1) = RANGE;
  79.             i++;
  80.             p++;
  81.             }
  82.         else if (isdigit (*p)) {
  83.             *i++ = atoi (p);
  84.             while (isdigit (*p))
  85.                 p++;
  86.             }
  87.         else
  88.             p++;
  89.         }
  90.     *i = TERM;
  91.     return;
  92.     }
  93.  
  94. scanword (s, d, len)
  95. char *s, *d;
  96. {
  97.     char *p;
  98.     int num = 0;
  99.  
  100.     while (*s && isspace (*s)) {
  101.         s++;
  102.         num++;
  103.         }
  104.     p = d;
  105.     while (*s && !isspace (*s)) {
  106.         if (p - d < len - 1) *p++ = *s;
  107.         s++;
  108.         num++;
  109.         }
  110.     *p = '\0';
  111.     return (num);
  112.     }
  113.  
  114. strncpy (s1, s2, len)
  115. char *s1, *s2;
  116. {
  117.     while (*s2 && --len)
  118.         *s1++ = *s2++;
  119.     *s1 = '\0';
  120.     }
  121. dumpcron ()
  122. {
  123.     int i, j;
  124.  
  125.     for (i = 0; i < event_count; i++) {
  126.         printf ("event %d\n", i);
  127.         printf ("  minute: ");
  128.         for (j = 0; events[i].ev_minute[j] != TERM; j++)
  129.             printf (" %d", events[i].ev_minute[j]);
  130.         printf ("\n");
  131.         printf ("  hour: ");
  132.         for (j = 0; events[i].ev_hour[j] != TERM; j++)
  133.             printf (" %d", events[i].ev_hour[j]);
  134.         printf ("\n");
  135.         printf ("  day: ");
  136.         for (j = 0; events[i].ev_day[j] != TERM; j++)
  137.             printf (" %d", events[i].ev_day[j]);
  138.         printf ("\n");
  139.         printf ("  month: ");
  140.         for (j = 0; events[i].ev_month[j] != TERM; j++)
  141.             printf (" %d", events[i].ev_month[j]);
  142.         printf ("\n");
  143.         printf ("  weekday: ");
  144.         for (j = 0; events[i].ev_weekday[j] != TERM; j++)
  145.             printf (" %d", events[i].ev_weekday[j]);
  146.         printf ("\n");
  147.         printf ("string: %s\n\n", events[i].ev_string);
  148.         }
  149.     }
  150.