Make git-stripspace a builtin
authorLukas Sandström <lukass@etek.chalmers.se>
Tue, 13 Jun 2006 20:21:53 +0000 (22:21 +0200)
committerJunio 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>
Makefile
builtin-stripspace.c [moved from stripspace.c with 75% similarity]
builtin.h
git.c

index 18bd94074c13cb6ab5b94be4705e9fd8973dcfc2..2e093af6ae4afa7f296783f3bd37c1f89e92c5e0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -144,7 +144,7 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
 
 # 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 = \
@@ -165,7 +165,7 @@ 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 \
@@ -226,7 +226,7 @@ BUILTIN_OBJS = \
        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
similarity index 75%
rename from stripspace.c
rename to builtin-stripspace.c
index 65a6346452bb924d203724a9bfeb1c4ed98025e1..2ce1264f7b4bfb5baf85f82907e2a8f7219846fa 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <ctype.h>
+#include "builtin.h"
 
 /*
  * Remove empty lines from the beginning and end.
@@ -28,21 +29,21 @@ static int cleanup(char *line)
        return 1;
 }
 
-int main(int argc, char **argv)
+void stripspace(FILE *in, FILE *out)
 {
        int empties = -1;
        int incomplete = 0;
        char line[1024];
 
-       while (fgets(line, sizeof(line), stdin)) {
+       while (fgets(line, sizeof(line), in)) {
                incomplete = cleanup(line);
 
                /* Not just an empty line? */
                if (line[0] != '\n') {
                        if (empties > 0)
-                               putchar('\n');
+                               fputc('\n', out);
                        empties = 0;
-                       fputs(line, stdout);
+                       fputs(line, out);
                        continue;
                }
                if (empties < 0)
@@ -50,6 +51,11 @@ int main(int argc, char **argv)
                empties++;
        }
        if (incomplete)
-               putchar('\n');
+               fputc('\n', out);
+}
+
+int cmd_stripspace(int argc, const char **argv, char **envp)
+{
+       stripspace(stdin, stdout);
        return 0;
 }
index 46671e6eae91008fceb8ee398c4899131616e051..e50379d45a3b4bc6d57ce17f7d80b5fca2fb5aa4 100644 (file)
--- a/builtin.h
+++ b/builtin.h
@@ -56,4 +56,7 @@ extern int split_mbox(const char **mbox, const char *dir, int allow_bare, int nr
 
 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
diff --git a/git.c b/git.c
index 89d4cd2e34121c597abaabff36924a7a6b3ae035..f00a07272a4d20ffe02e5580f7a39a2597d1f6ff 100644 (file)
--- a/git.c
+++ b/git.c
@@ -181,7 +181,8 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
                { "rev-parse", cmd_rev_parse },
                { "write-tree", cmd_write_tree },
                { "mailsplit", cmd_mailsplit },
-               { "mailinfo", cmd_mailinfo }
+               { "mailinfo", cmd_mailinfo },
+               { "stripspace", cmd_stripspace }
        };
        int i;