#include #include int main (int argc, char *argv[]) { char c; char urlflag, urlbuf[256]; char *ext = strrchr(argv[1], '.'); if (NULL == ext) { // plain text fputs("
\n", stdout);
    urlflag = -1;
    while (EOF != (c = getchar())) {
      if (urlflag > -1) {
        if ((urlflag == 0 && c == 'h') ||
            (urlflag == 1 && c == 't') ||
            (urlflag == 2 && c == 't') ||
            (urlflag == 3 && c == 'p')) {
          urlbuf[urlflag++] = c;
        } else if (urlflag < 4) { // not an url
          urlbuf[urlflag++] = c;
          urlbuf[urlflag] = 0;
          fputs(urlbuf, stdout);
          urlflag = -1;
        } else { // indeed an url
          urlbuf[urlflag++] = c;
          while ('>' != (c = getchar())) {
            if (c == '\n') {
              fputs("BROKEN README\n
", stdout); return 1; } else { urlbuf[urlflag++] = c; } } urlbuf[urlflag] = 0; printf("%s>", urlbuf, urlbuf); urlflag = -1; } } else { switch (c) { case '<': urlflag++; fputs("<", stdout); break; case '>': fputs(">", stdout); break; case '&': fputs("&", stdout); break; case '"': fputs(""", stdout); break; default: putchar(c); } } } fputs("\n", stdout); } else if (0 == strcmp(".html", ext)) { // html while (EOF != (c = getchar())) { putchar(c); } } return 0; }