|
|
1.1 ! root 1: /* ! 2: * Sleep command ! 3: */ ! 4: ! 5: #include <stdio.h> ! 6: #include <sys/mdata.h> ! 7: ! 8: long numeric(); ! 9: long atol(); ! 10: ! 11: main(argc, argv) ! 12: char *argv[]; ! 13: { ! 14: if (argc > 2) ! 15: usage(); ! 16: if (argc > 1) ! 17: lsleep(numeric(argv[1])); ! 18: return (0); ! 19: } ! 20: ! 21: /* ! 22: * Check if argument is numeric and ! 23: * return it. ! 24: */ ! 25: long ! 26: numeric(s) ! 27: register char *s; ! 28: { ! 29: long n; ! 30: ! 31: n = atol(s); ! 32: for (; *s!='\0'; s++) ! 33: if (*s<'0' || *s>'9') ! 34: usage(); ! 35: return (n); ! 36: } ! 37: ! 38: /* ! 39: * Sleep that takes a long argument. ! 40: */ ! 41: lsleep(n) ! 42: long n; ! 43: { ! 44: register unsigned i; ! 45: ! 46: while (n > 0) { ! 47: i = n>MAXUINT ? MAXUINT : n; ! 48: sleep(i); ! 49: n -= i; ! 50: } ! 51: } ! 52: ! 53: usage() ! 54: { ! 55: fprintf(stderr, "Usage: sleep seconds\n"); ! 56: exit(1); ! 57: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.