Add "stripspace" program to clean up email commentary
Remove multiple empty lines, and empty lines at beginning and end.maint
parent
50eb31d103
commit
8c7b86632c
2
Makefile
2
Makefile
|
|
@ -2,7 +2,7 @@ CC=gcc
|
||||||
CFLAGS=-Wall -O2
|
CFLAGS=-Wall -O2
|
||||||
HOME=$(shell echo $$HOME)
|
HOME=$(shell echo $$HOME)
|
||||||
|
|
||||||
PROGRAMS=mailsplit mailinfo
|
PROGRAMS=mailsplit mailinfo stripspace
|
||||||
SCRIPTS=dotest applypatch
|
SCRIPTS=dotest applypatch
|
||||||
|
|
||||||
all: $(PROGRAMS)
|
all: $(PROGRAMS)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ if [ -n "$signoff" -a -f "$signoff" ]; then
|
||||||
cat $signoff >> $MSGFILE
|
cat $signoff >> $MSGFILE
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(echo "[PATCH] $SUBJECT" ; echo ; cat $MSGFILE ) > $final
|
(echo "[PATCH] $SUBJECT" ; if [ -s $MSGFILE ]; then echo ; cat $MSGFILE; fi ) > $final
|
||||||
|
|
||||||
f=0
|
f=0
|
||||||
[ -f $query_apply ] || f=1
|
[ -f $query_apply ] || f=1
|
||||||
|
|
|
||||||
3
dotest
3
dotest
|
|
@ -20,7 +20,8 @@ mailsplit $1 .dotest || exit 1
|
||||||
for i in .dotest/*
|
for i in .dotest/*
|
||||||
do
|
do
|
||||||
mailinfo .dotest/msg .dotest/patch .dotest/file < $i > .dotest/info || exit 1
|
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=$?
|
ret=$?
|
||||||
if [ $ret -ne 0 ]; then
|
if [ $ret -ne 0 ]; then
|
||||||
# 2 is a special exit code from applypatch to indicate that
|
# 2 is a special exit code from applypatch to indicate that
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue