diff --git a/battery/Makefile b/battery/Makefile index 2478775..f378636 100644 --- a/battery/Makefile +++ b/battery/Makefile @@ -1,20 +1,4 @@ all: ; clean: ; sane: ; - -dist: ../dist/battery.tar.gz - -../dist/battery: battery - mkdir -p ../dist/battery.tmp/bin/ - cp battery* ../dist/battery.tmp/bin/ - mv ../dist/battery.tmp ../dist/battery - -../dist/battery.tar: ../dist/battery - cd ../dist/battery && pax -w -x ustar . >../battery.tar.tmp - mv ../dist/battery.tar.tmp ../dist/battery.tar - -../dist/battery.tar.gz: ../dist/battery.tar - gzip -c <../dist/battery.tar >../dist/battery.tar.gz.tmp - mv ../dist/battery.tar.gz.tmp ../dist/battery.tar.gz - .PHONY: all clean sane diff --git a/dist/Makefile b/dist/Makefile index 6f7e33d..0d2367f 100644 --- a/dist/Makefile +++ b/dist/Makefile @@ -1,19 +1,28 @@ +.PHONY: dirs +dirs: bin share/man/man1 bin: mkdir -p bin +share/man/man1: + mkdir -p share/man/man1 .PHONY: battery battery: bin/battery bin/battery: bin ../battery/battery cp ../battery/battery* bin/ -../battery/battery: - $(MAKE) -C ../battery sane .PHONY: data data: bin/data battery lowercase nonzero str streq bin/data: bin ../data/data cp ../data/data bin/ -../data/data: - $(MAKE) -C ../data sane + +.PHONY: echo +echo: bin/echo +bin/echo: dirs ../echo/echo + cp ../echo/echo bin/ +share/man/man1/echo.1: dirs ../echo/echo.1 + cp ../echo/echo.1 share/man/man1/ +../echo/echo: + $(MAKE) -C ../echo sane .PHONY: lowercase lowercase: bin/lowercase @@ -47,5 +56,3 @@ bin/streq: bin ../streq/streq volume: bin/volume bin/volume: bin ../volume/volume cp ../volume/volume* bin/ -../volume/volume: - $(MAKE) -C ../volume/volume sane diff --git a/echo/Makefile b/echo/Makefile index d41bf7b..b8c8c33 100644 --- a/echo/Makefile +++ b/echo/Makefile @@ -1,28 +1,17 @@ -all: echo +TARGETS = echo + +all: $(TARGETS) + +%: %.c + $(CC) -o $@ $@.c clean: - rm -rf ../dist/echo ../dist/echo.tar ../dist/echo.tar.gz echo + rm -f $(TARGETS) -dist: ../dist/echo.tar.gz - -sane: echo.c ../include/sysexits.h +sane: echo.c ../sysexits/sysexits.h $(CC) -DDONT_USE_SYSTEM_SYSEXITS -o echo echo.c -echo: echo.c - $(CC) -o echo echo.c - -../dist/echo: echo - mkdir -p ../dist/echo.tmp/bin/ ../dist/echo.tmp/share/man/man1/ - cp echo ../dist/echo.tmp/bin/echo - cp echo.1 ../dist/echo.tmp/share/man/man1/echo.1 - mv ../dist/echo.tmp ../dist/echo - -../dist/echo.tar: ../dist/echo - cd ../dist/echo && pax -w -x ustar . >../echo.tar.tmp - mv ../dist/echo.tar.tmp ../dist/echo.tar - -../dist/echo.tar.gz: ../dist/echo.tar - gzip -c <../dist/echo.tar >../dist/echo.tar.gz.tmp - mv ../dist/echo.tar.gz.tmp ../dist/echo.tar.gz +../sysexits/sysexits.h: + $(MAKE) -C ../sysexits sysexits.h .PHONY: all clean sane diff --git a/lowercase/Makefile b/lowercase/Makefile new file mode 100644 index 0000000..83854c9 --- /dev/null +++ b/lowercase/Makefile @@ -0,0 +1,9 @@ +all: lowercase +clean: + rm -f lowercase +sane: lowercase + +lowercase: ../ascii/ascii.h lowercase.c + $(CC) -I../ascii/ -o lowercase lowercase.c + +.PHONY: all clean sane diff --git a/lowercase/lowercase.c b/lowercase/lowercase.c index 9bbf97b..40e93ef 100644 --- a/lowercase/lowercase.c +++ b/lowercase/lowercase.c @@ -1,5 +1,4 @@ #include /* ASCII_MAX_VALUE */ -#include /* bool */ #include /* fprintf(3), getc(3), putc(3), stderr, stdin, stdout */ #include /* exit(3) */ #include /* EX_OK, EX_USAGE, EX_SOFTWARE */ @@ -10,16 +9,10 @@ # include /* UCHAR_MAX_VALUE, u_tolower(3) */ # include /* UChar32 */ # include /* u_fgetc(3) */ +#else +# include /* tolower(3) */ #endif /* USE_ICU */ -#define PROGRAM_NAME "lowercase" - -void -usage(char *name){ - fprintf(stderr, "Usage: %s (-f)\n", name); - exit(EX_USAGE); -} - int main(int argc, char *argv[]){ #ifdef USE_ICU UChar32 @@ -27,45 +20,22 @@ int main(int argc, char *argv[]){ int #endif c; /* iterating over character stream */ - int d; /* iterating over getopt */ - bool force; - force = false; - while((d = getopt(argc, argv, "f")) != -1) - switch(d){ - case 'f': - force = true; - break; - case '?': - usage(argv[0] != NULL ? argv[0] : PROGRAM_NAME); - break; - } - if(argv[optind] != NULL) /* don't accept arguments */ - usage(argv[0] != NULL ? argv[0] : PROGRAM_NAME); + if(argc > 1){ + fprintf(stderr, "Usage: %s\n", argv[0]); + return EX_USAGE; + } + #ifdef USE_ICU while((c = u_fgetc(stdin)) != U_EOF){ -#else - while((c = getc(stdin)) != EOF){ -#endif - if(c <= ASCII_MAX_VALUE) - c += ('a' - 'A') * (c >= 'A' && c <= 'Z'); -#ifdef USE_ICU - else if(c <= UCHAR_MAX_VALUE) + if(c <= UCHAR_MAX_VALUE && c >= 0) c = u_tolower(c); -#endif - else if(!force){ /* past supported */ - fprintf( - stderr, - "%s: Sorry, extra-ASCII characters are not yet" - " supported!\n", - argv[0] != NULL ? argv[0] : PROGRAM_NAME - ); - return EX_SOFTWARE; - } -#ifdef USE_ICU u_fputc(c, stdout); #else + while((c = getc(stdin)) != EOF){ + if(c <= ASCII_MAX_VALUE && c >= 0) + c = tolower(c); putc(c, stdout); #endif } diff --git a/streq/streq.1 b/streq/streq.1 index 1a24d7d..830d5cd 100644 --- a/streq/streq.1 +++ b/streq/streq.1 @@ -7,6 +7,7 @@ streq \(en compare strings .SH SYNOPSIS streq +.RM [ string ] .RB [ strings... ] .SH DESCRIPTION diff --git a/sysexits/Makefile b/sysexits/Makefile new file mode 100644 index 0000000..5cc1974 --- /dev/null +++ b/sysexits/Makefile @@ -0,0 +1,13 @@ +TARGETS = sysexits sysexits.h +CFLAGS = -I.. + +all: $(TARGETS) + +clean: + rm -f $(TARGETS) + +%: %.c + $(CC) $(CFLAGS) -o $@ $@.c + +sysexits.h: sysexits + ./sysexits >sysexits.h diff --git a/sysexits/sysexits.c b/sysexits/sysexits.c index 6fa6b02..438cbab 100644 --- a/sysexits/sysexits.c +++ b/sysexits/sysexits.c @@ -1,15 +1,14 @@ -#include #include #include -#include "usefulmacros.h" +#include "arraylen.h" /* Thanks to u/smcameron on Reddit. */ #define TAB_WIDTH 8 /* Changing ENUM to DEFINE will make this output the traditional BSD header - * verbatim, without copyright notice. I don't have any fucking idea if that's - * a copyright violation, but let's keep this as ENUM to skirt by that little + * verbatim, without copyright notice. I don't have any idea if that's a + * copyright violation, but let's keep this as ENUM to skirt by that little * technicality. * I implemented sysexits(3) in the enum method before reading the BSD 4.0 * source to see how they did it. */ @@ -17,7 +16,7 @@ static char *program_name = "sysexits"; -//static const char comment_prefix[] = "/* "; +static const char comment_prefix[] = "/* "; static const char comment_prefix_ongoing[] = " * "; static const char comment_suffix[] = " */\n"; @@ -168,7 +167,7 @@ static void output_header(void){ ); #endif /* ifdef DEFINE */ } - fflush(stdout); /* Fixes actual issue. */ + fflush(stdout); write(1, header_suffix, ARRAYLEN(header_suffix) - 1); }