#include #include #include /* * Remove empty lines from the beginning and end. * * Turn multiple consecutive empty lines into just one * empty line. */ static void cleanup(char *line) { int len = strlen(line); if (len > 1 && line[len-1] == '\n') { do { unsigned char c = line[len-2]; if (!isspace(c)) break; line[len-2] = '\n'; len--; line[len] = 0; } while (len > 1); } } int main(int argc, char **argv) { int empties = -1; char line[1024]; while (fgets(line, sizeof(line), stdin)) { cleanup(line); /* Not just an empty line? */ if (line[0] != '\n') { if (empties > 0) putchar('\n'); empties = 0; fputs(line, stdout); continue; } if (empties < 0) continue; empties++; } return 0; }