Add "stripspace" program to clean up email commentary

Remove multiple empty lines, and empty lines at beginning and end.
This commit is contained in:
Linus Torvalds 2005-04-30 10:58:41 -07:00
parent 50eb31d103
commit 8c7b86632c
4 changed files with 52 additions and 3 deletions

View File

@ -2,7 +2,7 @@ CC=gcc
CFLAGS=-Wall -O2
HOME=$(shell echo $$HOME)
PROGRAMS=mailsplit mailinfo
PROGRAMS=mailsplit mailinfo stripspace
SCRIPTS=dotest applypatch
all: $(PROGRAMS)

View File

@ -32,7 +32,7 @@ if [ -n "$signoff" -a -f "$signoff" ]; then
cat $signoff >> $MSGFILE
fi
(echo "[PATCH] $SUBJECT" ; echo ; cat $MSGFILE ) > $final
(echo "[PATCH] $SUBJECT" ; if [ -s $MSGFILE ]; then echo ; cat $MSGFILE; fi ) > $final
f=0
[ -f $query_apply ] || f=1

3
dotest
View File

@ -20,7 +20,8 @@ mailsplit $1 .dotest || exit 1
for i in .dotest/*
do
mailinfo .dotest/msg .dotest/patch .dotest/file < $i > .dotest/info || exit 1
applypatch .dotest/msg .dotest/patch .dotest/file .dotest/info "$2"
stripspace < .dotest/msg > .dotest/msg-clean
applypatch .dotest/msg-clean .dotest/patch .dotest/file .dotest/info "$2"
ret=$?
if [ $ret -ne 0 ]; then
# 2 is a special exit code from applypatch to indicate that

48
stripspace.c Normal file
View File

@ -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;
}