#include /** @author Ivan Cukic */ int an = 0; // If turned on shows length of line on its end int ai = 0; // Includes CR/LF. If not -i then both CR and LF are treated as space int ab = 0; // If turned on with -b argument, shows bar long 80 chars between every line void dbar(int len) { int i; for (i = 0; i < len; i++) if ((i+1) % 10 == 0) printf("0"); else printf("-"); printf("\n"); } void setargs(int argc, char *argv[]){ int i = 0; for (; i < argc; i++) { if (argv[i][0] == '-') { if (argv[i][1] == 'n') an = 1; else if (argv[i][1] == 'i') ai = 1; else if (argv[i][1] == 'b') ab = 1; } } } main(int argc, char *argv[]) { setargs(argc, argv); char c; char rec[30]; int i = 0, llen = 0; c = getchar(); while (c != EOF) { if ((i > 0) && (ai) && ((c == 13) || (c == 10))) { if (an) printf("%s - %d\n", rec, llen); else printf("%s\n", rec); if (ab) dbar(80); llen = 0; i = 0; rec[0] = '\0'; } else { if ((c == 13) || (c == 10)) c = ' '; if (c != ' ') { rec[i++] = c; rec[i] = '\0'; } else { if (llen + i > 80 - 1) { if (an) printf(" - %d\n", llen); else printf("\n"); if (ab) dbar(80); printf("%s", rec); llen = i; } else if (i > 0) { printf(" %s", rec); llen += i + 1; } i = 0; rec[0] = '\0'; } } c = getchar(); } }