summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 34488e3)
raw | patch | inline | side by side (parent: 34488e3)
author | Lukas Sandström <lukass@etek.chalmers.se> | |
Tue, 13 Jun 2006 20:21:53 +0000 (22:21 +0200) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Mon, 19 Jun 2006 05:12:16 +0000 (22:12 -0700) |
Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Makefile | patch | blob | history | |
builtin-stripspace.c | [new file with mode: 0644] | patch | blob |
builtin.h | patch | blob | history | |
git.c | patch | blob | history | |
stripspace.c | [deleted file] | patch | blob | history |
diff --git a/Makefile b/Makefile
index 18bd94074c13cb6ab5b94be4705e9fd8973dcfc2..2e093af6ae4afa7f296783f3bd37c1f89e92c5e0 100644 (file)
--- a/Makefile
+++ b/Makefile
# The ones that do not have to link with lcrypto, lz nor xdiff.
SIMPLE_PROGRAMS = \
- git-stripspace$X git-daemon$X
+ git-daemon$X
# ... and all the rest that could be moved out of bindir to gitexecdir
PROGRAMS = \
BUILT_INS = git-log$X git-whatchanged$X git-show$X \
git-count-objects$X git-diff$X git-push$X git-mailsplit$X \
- git-grep$X git-add$X git-rm$X git-rev-list$X \
+ git-grep$X git-add$X git-rm$X git-rev-list$X git-stripspace$X \
git-check-ref-format$X git-rev-parse$X git-mailinfo$X \
git-init-db$X git-tar-tree$X git-upload-tar$X git-format-patch$X \
git-ls-files$X git-ls-tree$X git-get-tar-commit-id$X \
builtin-read-tree.o builtin-commit-tree.o builtin-mailinfo.o \
builtin-apply.o builtin-show-branch.o builtin-diff-files.o \
builtin-diff-index.o builtin-diff-stages.o builtin-diff-tree.o \
- builtin-cat-file.o builtin-mailsplit.o
+ builtin-cat-file.o builtin-mailsplit.o builtin-stripspace.o
GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
LIBS = $(GITLIBS) -lz
diff --git a/builtin-stripspace.c b/builtin-stripspace.c
--- /dev/null
+++ b/builtin-stripspace.c
@@ -0,0 +1,61 @@
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include "builtin.h"
+
+/*
+ * Remove empty lines from the beginning and end.
+ *
+ * Turn multiple consecutive empty lines into just one
+ * empty line. Return true if it is an incomplete line.
+ */
+static int cleanup(char *line)
+{
+ int len = strlen(line);
+
+ if (len && line[len-1] == '\n') {
+ if (len == 1)
+ return 0;
+ do {
+ unsigned char c = line[len-2];
+ if (!isspace(c))
+ break;
+ line[len-2] = '\n';
+ len--;
+ line[len] = 0;
+ } while (len > 1);
+ return 0;
+ }
+ return 1;
+}
+
+void stripspace(FILE *in, FILE *out)
+{
+ int empties = -1;
+ int incomplete = 0;
+ char line[1024];
+
+ while (fgets(line, sizeof(line), in)) {
+ incomplete = cleanup(line);
+
+ /* Not just an empty line? */
+ if (line[0] != '\n') {
+ if (empties > 0)
+ fputc('\n', out);
+ empties = 0;
+ fputs(line, out);
+ continue;
+ }
+ if (empties < 0)
+ continue;
+ empties++;
+ }
+ if (incomplete)
+ fputc('\n', out);
+}
+
+int cmd_stripspace(int argc, const char **argv, char **envp)
+{
+ stripspace(stdin, stdout);
+ return 0;
+}
diff --git a/builtin.h b/builtin.h
index 46671e6eae91008fceb8ee398c4899131616e051..e50379d45a3b4bc6d57ce17f7d80b5fca2fb5aa4 100644 (file)
--- a/builtin.h
+++ b/builtin.h
extern int cmd_mailinfo(int argc, const char **argv, char **envp);
extern int mailinfo(FILE *in, FILE *out, int ks, const char *encoding, const char *msg, const char *patch);
+
+extern int cmd_stripspace(int argc, const char **argv, char **envp);
+extern void stripspace(FILE *in, FILE *out);
#endif
index 89d4cd2e34121c597abaabff36924a7a6b3ae035..f00a07272a4d20ffe02e5580f7a39a2597d1f6ff 100644 (file)
--- a/git.c
+++ b/git.c
{ "rev-parse", cmd_rev_parse },
{ "write-tree", cmd_write_tree },
{ "mailsplit", cmd_mailsplit },
- { "mailinfo", cmd_mailinfo }
+ { "mailinfo", cmd_mailinfo },
+ { "stripspace", cmd_stripspace }
};
int i;
diff --git a/stripspace.c b/stripspace.c
--- a/stripspace.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#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. Return true if it is an incomplete line.
- */
-static int cleanup(char *line)
-{
- int len = strlen(line);
-
- if (len && line[len-1] == '\n') {
- if (len == 1)
- return 0;
- do {
- unsigned char c = line[len-2];
- if (!isspace(c))
- break;
- line[len-2] = '\n';
- len--;
- line[len] = 0;
- } while (len > 1);
- return 0;
- }
- return 1;
-}
-
-int main(int argc, char **argv)
-{
- int empties = -1;
- int incomplete = 0;
- char line[1024];
-
- while (fgets(line, sizeof(line), stdin)) {
- incomplete = 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++;
- }
- if (incomplete)
- putchar('\n');
- return 0;
-}