1
0

more cleaning!!!

This commit is contained in:
dtb
2022-09-18 20:40:56 -04:00
parent 3b9ff7ddb4
commit 473cbc8123
8 changed files with 62 additions and 90 deletions

9
lowercase/Makefile Normal file
View File

@@ -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

View File

@@ -1,5 +1,4 @@
#include <ascii.h> /* ASCII_MAX_VALUE */
#include <stdbool.h> /* bool */
#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 */
@@ -10,16 +9,10 @@
# include <unicode/uchar.h> /* UCHAR_MAX_VALUE, u_tolower(3) */
# include <unicode/umachine.h> /* UChar32 */
# include <unicode/ustdio.h> /* u_fgetc(3) */
#else
# include <ctype.h> /* 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
}