/* Last edited on 2024-12-25 10:17:50 by stolfi */ /* Repeat a string endlessly */ #include #include #include #include static char* usage = "pour [-c STRING | -n NUM]"; void error(char *msg); int main(int ARGC, char *ARGV[]); int main(int argc, char *argv[]) { char buf[2] = "?"; char *string = buf; int i = 1; while (i < argc) { if ((i+1 < argc) && (strcmp(argv[i],"-c")==0)) { string = argv[i+1]; if (strlen(string)==0){ error("cannot pour an empty string"); } i += 2; } else if ((i+1 < argc) && (strcmp(argv[i],"-n")==0)) { long v = atol(argv[i+1]); if ((v < 0)||(v > 255)){ error("byte value out of range"); } buf[0] = (v < 128 ? v : v - 256); buf[1] = '\0'; string = buf; i += 2; } else { error("unrecognized option"); } } char *p = string; while(1){ putchar(*p); p++; if (*p == '\0') p = string; } } void error(char *msg) { fprintf(stderr, "%s\n", msg); fprintf(stderr, "usage: %s\n", usage); exit(1); }