1
0
Fork 0

uppercase(1)

This commit is contained in:
dtb 2022-09-23 20:28:10 -04:00
parent 3fdf5b06cd
commit 0194362686
4 changed files with 49 additions and 10 deletions

6
.gitignore vendored
View File

@ -1,6 +1,12 @@
dist/
echo/echo
lowercase/lowercase
lowercase/uppercase
nonzero/nonzero
roll/roll
rot13/rot13
simexec/simexec
str/str
streq/streq
sysexits/sysexits
sysexits/sysexits.h

22
dist/Makefile vendored
View File

@ -1,5 +1,6 @@
.PHONY: dirs
dirs: bin share/man/man1
bin:
mkdir -p bin
share/man/man1:
@ -38,6 +39,20 @@ bin/nonzero: bin ../nonzero/nonzero
../nonzero/nonzero:
$(MAKE) -C ../nonzero sane
.PHONY: simexec
simexec: bin/simexec
bin/simexec: bin ../simexec/simexec
cp ../simexec/simexec bin/simexec
../simexec/simexec:
$(MAKE) -C ../simexec sane
.PHONY: sleep
sleep: bin/sleep
bin/sleep: bin ../sleep/sleep
cp ../sleep/sleep bin/sleep
../sleep/sleep:
$(MAKE) -C ../sleep sane
.PHONY: str
str: bin/str
bin/str: bin ../str/str
@ -52,7 +67,12 @@ bin/streq: bin ../streq/streq
../streq/streq:
$(MAKE) -C ../streq sane
.PHONY: uppercase
uppercase: bin/uppercase ../lowercase/lowercase
bin/uppercase: bin ../lowercase/uppercase
cp ../lowercase/uppercase bin/
.PHONY: volume
volume: bin/volume
volume: bin/volume str
bin/volume: bin ../volume/volume
cp ../volume/volume* bin/

View File

@ -1,9 +1,12 @@
all: lowercase
all: lowercase uppercase
clean:
rm -f lowercase
sane: lowercase
rm -f lowercase uppercase
sane: all
lowercase: ../ascii/ascii.h lowercase.c
$(CC) -I../ascii/ -o lowercase lowercase.c
lowercase: lowercase.c
$(CC) -DLOWERCASE -o lowercase lowercase.c
uppercase: lowercase.c
$(CC) -DUPPERCASE -o uppercase lowercase.c
.PHONY: all clean sane

View File

@ -1,4 +1,3 @@
#include <ascii.h> /* ASCII_MAX_VALUE */
#include <stdio.h> /* fprintf(3), getc(3), putc(3), stderr, stdin, stdout */
#include <stdlib.h> /* exit(3) */
#include <sysexits.h> /* EX_OK, EX_USAGE, EX_SOFTWARE */
@ -6,13 +5,16 @@
/* Enable Unicode support using official Unicode library. */
#ifdef USE_ICU
# include <unicode/uchar.h> /* UCHAR_MAX_VALUE, u_tolower(3) */
# include <unicode/uchar.h>
/* UCHAR_MAX_VALUE, u_tolower(3), u_toupper(3) */
# include <unicode/umachine.h> /* UChar32 */
# include <unicode/ustdio.h> /* u_fgetc(3) */
#else
# include <ctype.h> /* tolower(3) */
# include <ctype.h> /* tolower(3), toupper(3) */
#endif /* USE_ICU */
#define ASCII_MAX_VALUE 0x7F
int main(int argc, char *argv[]){
#ifdef USE_ICU
UChar32
@ -30,14 +32,22 @@ int main(int argc, char *argv[]){
#ifdef USE_ICU
while((c = u_fgetc(stdin)) != U_EOF){
if(c <= UCHAR_MAX_VALUE && c >= 0)
# ifdef LOWERCASE
c = u_tolower(c);
# else
c = u_toupper(c);
# endif /* ifdef LOWERCASE */
u_fputc(c, stdout);
#else
while((c = getc(stdin)) != EOF){
if(c <= ASCII_MAX_VALUE && c >= 0)
# ifdef LOWERCASE
c = tolower(c);
# else
c = toupper(c);
# endif /* ifdef LOWERCASE */
putc(c, stdout);
#endif
#endif /* ifdef USE_ICU */
}
return EX_OK;
}