I separated the changes into multiple patches that each do one thing
and apply on top of each other. In order they are:

sbase-add_test_alias.diff : adds [ hardlink to test on install, adds [
to sbase-box
sbase-use_pe.diff : use parameter expansion instead of basename when
building sbase-box. simpler, shorter, no extra processes
sbase-use_fputs.diff : use a single call to fputs instead of calling
printf then putchar (also good practice to avoid format string woes)
sbase-align_redir.diff : cleanup the redirections for readability,
move them outside of loops

-emg
From 0af9987ba583a96b2cc61a85a553b066c40edf06 Mon Sep 17 00:00:00 2001
From: Evan Gates <evan.ga...@gmail.com>
Date: Fri, 20 Feb 2015 12:08:13 -0800
Subject: [PATCH] add [ alias for test

---
 Makefile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 124bfa4..4665605 100644
--- a/Makefile
+++ b/Makefile
@@ -180,7 +180,7 @@ $(LIBUTIL): $(LIBUTILOBJ)
 install: all
        mkdir -p $(DESTDIR)$(PREFIX)/bin
        cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
-       cd $(DESTDIR)$(PREFIX)/bin && chmod 755 $(BIN)
+       cd $(DESTDIR)$(PREFIX)/bin && ln -f test [ && chmod 755 $(BIN)
        mkdir -p $(DESTDIR)$(MANPREFIX)/man1
        for m in $(MAN); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m" 
> $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
        cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN)
@@ -207,8 +207,10 @@ sbase-box: $(LIB) $(SRC)
        echo '#include "util.h"'   >> build/$@.c
        for f in $(SRC); do echo "int `basename $$f .c`_main(int, char **);" >> 
build/$@.c; done
        echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]); 
if(!strcmp(s,"sbase-box")) { argc--; argv++; s = basename(argv[0]); } if(0) ;' 
>> build/$@.c
+       echo "else if (!strcmp(s, \"[\")) return test_main(argc, argv);" >> 
build/$@.c
        for f in $(SRC); do echo "else if(!strcmp(s, \"`basename $$f .c`\")) 
return `basename $$f .c`_main(argc, argv);" >> build/$@.c; done
        echo 'else {' >> build/$@.c
+       echo "printf(\"[\"); putchar(' ');" >> build/$@.c
        for f in $(SRC); do echo "printf(\"`basename $$f .c`\"); putchar(' ');" 
>> build/$@.c; done
        echo "putchar(0xa); }; return 0; }" >> build/$@.c
        $(LD) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB)
-- 
2.3.0

From 7af3afa1ce09d91a09b2b52c04a1071cfbb8f5d7 Mon Sep 17 00:00:00 2001
From: Evan Gates <evan.ga...@gmail.com>
Date: Fri, 20 Feb 2015 12:12:12 -0800
Subject: [PATCH] use parameter expansion instead of basename in Makefile

---
 Makefile | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 4665605..337b33e 100644
--- a/Makefile
+++ b/Makefile
@@ -199,19 +199,19 @@ dist: clean
 sbase-box: $(LIB) $(SRC)
        mkdir -p build
        cp $(HDR) build
-       for f in $(SRC); do sed "s/^main(/`basename $$f .c`_&/" < $$f > 
build/$$f; done
+       for f in $(SRC); do sed "s/^main(/$${f%.c}_&/" < $$f > build/$$f; done
        echo '#include <libgen.h>'  > build/$@.c
        echo '#include <stdio.h>'  >> build/$@.c
        echo '#include <stdlib.h>' >> build/$@.c
        echo '#include <string.h>' >> build/$@.c
        echo '#include "util.h"'   >> build/$@.c
-       for f in $(SRC); do echo "int `basename $$f .c`_main(int, char **);" >> 
build/$@.c; done
+       for f in $(SRC); do echo "int $${f%.c}_main(int, char **);" >> 
build/$@.c; done
        echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]); 
if(!strcmp(s,"sbase-box")) { argc--; argv++; s = basename(argv[0]); } if(0) ;' 
>> build/$@.c
        echo "else if (!strcmp(s, \"[\")) return test_main(argc, argv);" >> 
build/$@.c
-       for f in $(SRC); do echo "else if(!strcmp(s, \"`basename $$f .c`\")) 
return `basename $$f .c`_main(argc, argv);" >> build/$@.c; done
+       for f in $(SRC); do echo "else if(!strcmp(s, \"$${f%.c}\")) return 
$${f%.c}_main(argc, argv);" >> build/$@.c; done
        echo 'else {' >> build/$@.c
        echo "printf(\"[\"); putchar(' ');" >> build/$@.c
-       for f in $(SRC); do echo "printf(\"`basename $$f .c`\"); putchar(' ');" 
>> build/$@.c; done
+       for f in $(SRC); do echo "printf(\"$${f%.c}\"); putchar(' ');" >> 
build/$@.c; done
        echo "putchar(0xa); }; return 0; }" >> build/$@.c
        $(LD) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB)
        rm -r build
-- 
2.3.0

From 8ebb59f3a5d7d94e5ec896564d4cb72889da4412 Mon Sep 17 00:00:00 2001
From: Evan Gates <evan.ga...@gmail.com>
Date: Fri, 20 Feb 2015 12:14:51 -0800
Subject: [PATCH] replace printf + putchar with fputs

---
 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 337b33e..1339299 100644
--- a/Makefile
+++ b/Makefile
@@ -210,8 +210,8 @@ sbase-box: $(LIB) $(SRC)
        echo "else if (!strcmp(s, \"[\")) return test_main(argc, argv);" >> 
build/$@.c
        for f in $(SRC); do echo "else if(!strcmp(s, \"$${f%.c}\")) return 
$${f%.c}_main(argc, argv);" >> build/$@.c; done
        echo 'else {' >> build/$@.c
-       echo "printf(\"[\"); putchar(' ');" >> build/$@.c
-       for f in $(SRC); do echo "printf(\"$${f%.c}\"); putchar(' ');" >> 
build/$@.c; done
+       echo "fputs(\"[ \", stdout);" >> build/$@.c
+       for f in $(SRC); do echo "fputs(\"$${f%.c} \", stdout);" >> build/$@.c; 
done
        echo "putchar(0xa); }; return 0; }" >> build/$@.c
        $(LD) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB)
        rm -r build
-- 
2.3.0

From 5d779652ac1e9cc822664334505ceeb9047a3a95 Mon Sep 17 00:00:00 2001
From: Evan Gates <evan.ga...@gmail.com>
Date: Fri, 20 Feb 2015 13:55:45 -0800
Subject: [PATCH] align redirections in Makefile for readability

---
 Makefile | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/Makefile b/Makefile
index 1339299..527de2a 100644
--- a/Makefile
+++ b/Makefile
@@ -200,19 +200,19 @@ sbase-box: $(LIB) $(SRC)
        mkdir -p build
        cp $(HDR) build
        for f in $(SRC); do sed "s/^main(/$${f%.c}_&/" < $$f > build/$$f; done
-       echo '#include <libgen.h>'  > build/$@.c
-       echo '#include <stdio.h>'  >> build/$@.c
-       echo '#include <stdlib.h>' >> build/$@.c
-       echo '#include <string.h>' >> build/$@.c
-       echo '#include "util.h"'   >> build/$@.c
-       for f in $(SRC); do echo "int $${f%.c}_main(int, char **);" >> 
build/$@.c; done
-       echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]); 
if(!strcmp(s,"sbase-box")) { argc--; argv++; s = basename(argv[0]); } if(0) ;' 
>> build/$@.c
-       echo "else if (!strcmp(s, \"[\")) return test_main(argc, argv);" >> 
build/$@.c
-       for f in $(SRC); do echo "else if(!strcmp(s, \"$${f%.c}\")) return 
$${f%.c}_main(argc, argv);" >> build/$@.c; done
-       echo 'else {' >> build/$@.c
-       echo "fputs(\"[ \", stdout);" >> build/$@.c
-       for f in $(SRC); do echo "fputs(\"$${f%.c} \", stdout);" >> build/$@.c; 
done
-       echo "putchar(0xa); }; return 0; }" >> build/$@.c
+       echo '#include <libgen.h>'                                              
                              > build/$@.c
+       echo '#include <stdio.h>'                                               
                             >> build/$@.c
+       echo '#include <stdlib.h>'                                              
                             >> build/$@.c
+       echo '#include <string.h>'                                              
                             >> build/$@.c
+       echo '#include "util.h"'                                                
                             >> build/$@.c
+       for f in $(SRC); do echo "int $${f%.c}_main(int, char **);"; done       
                             >> build/$@.c
+       echo 'int main(int argc, char *argv[]) { char *s = basename(argv[0]);'  
                             >> build/$@.c
+       echo 'if(!strcmp(s,"sbase-box")) { argc--; argv++; s = 
basename(argv[0]); } if(0) ;'                 >> build/$@.c
+       echo "else if (!strcmp(s, \"[\")) return test_main(argc, argv);"        
                             >> build/$@.c
+       for f in $(SRC); do echo "else if(!strcmp(s, \"$${f%.c}\")) return 
$${f%.c}_main(argc, argv);"; done >> build/$@.c
+       echo 'else { fputs("[ ", stdout);'                                      
                             >> build/$@.c
+       for f in $(SRC); do echo "fputs(\"$${f%.c} \", stdout);"; done          
                             >> build/$@.c
+       echo 'putchar(0xa); }; return 0; }'                                     
                             >> build/$@.c
        $(LD) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB)
        rm -r build
 
-- 
2.3.0

Reply via email to