summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 50eb31d)
raw | patch | inline | side by side (parent: 50eb31d)
author | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Sat, 30 Apr 2005 17:58:41 +0000 (10:58 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Sat, 30 Apr 2005 17:58:41 +0000 (10:58 -0700) |
Remove multiple empty lines, and empty lines at beginning and end.
Makefile | patch | blob | history | |
applypatch | patch | blob | history | |
dotest | patch | blob | history | |
stripspace.c | [new file with mode: 0644] | patch | blob |
diff --git a/Makefile b/Makefile
index eca3a5d5256cca06d86ebb85ec9d3218752ffcd2..b5be0c94ef1a3a569955f21b3ce438b7b3621421 100644 (file)
--- a/Makefile
+++ b/Makefile
CFLAGS=-Wall -O2
HOME=$(shell echo $$HOME)
-PROGRAMS=mailsplit mailinfo
+PROGRAMS=mailsplit mailinfo stripspace
SCRIPTS=dotest applypatch
all: $(PROGRAMS)
diff --git a/applypatch b/applypatch
index 6e21409682bd858a3f63bdbaeacce29138be56a6..97274a158ef9ae7ead580ac7811f44221256d8fa 100755 (executable)
--- a/applypatch
+++ b/applypatch
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
index a3e3d35ae0afa358f01b49eecb358d64c616c3e4..ccc1f0304f10b58975705de256d8e23df82ec535 100755 (executable)
--- a/dotest
+++ b/dotest
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
diff --git a/stripspace.c b/stripspace.c
--- /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;
+}