diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-30 12:51:00 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-30 12:51:00 -0700 |
commit | a3e870f2e2bcacc80d5b81d7b77c15a7928a9082 (patch) | |
tree | 58f726b5db2132fe3c76e92253c3504dd80272e1 /stripspace.c | |
parent | f345b0a066572206aac4a4f9a57d746e213b6bff (diff) | |
download | git-a3e870f2e2bcacc80d5b81d7b77c15a7928a9082.tar.gz |
Add "commit" helper script
This is meant to make raw git not hugely less usable than something
like raw CVS. I want to make a 1.0 release of the plumbing, and the
actual commit part was just too intimidating.
Diffstat (limited to 'stripspace.c')
-rw-r--r-- | stripspace.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/stripspace.c b/stripspace.c new file mode 100644 index 0000000000..96cd0a88f0 --- /dev/null +++ b/stripspace.c @@ -0,0 +1,48 @@ +#include <stdio.h> +#include <string.h> +#include <ctype.h> + +/* + * 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; +} |