#include /* errno */ #include /* strtol(3), size_t */ #if !defined EX_OK || !defined EX_USAGE # include /* EX_OK, EX_USAGE */ #endif CHAR caesar(CHAR c, size_t r); static char *program_name = "rot"; int main(int argc, char *argv[]){ CHAR c; size_t r; if(argc > 2){ fprintf(stderr, "Usage: %s (rotation)\n", argv[0] == NULL ? program_name : argv[0] ); return EX_USAGE; } if(argc == 2){ r = strtol(argv[1], &argv[1], 10); if(*argv[1] != '\0' || errno != 0){ fprintf(stderr, "%s: Invalid rotation\n", argv[0]); return EX_USAGE; } }else r = 13; /* default to rot13 */ while((c = GETC(stdin)) != ENDOFFILE) if(PUTC(caesar(c, r), stdout) == ENDOFFILE) break; return EX_OK; }