From 3910c341bd67b7c1ff20142f4aa683d904d2d292 Mon Sep 17 00:00:00 2001 From: DTB Date: Fri, 3 May 2024 21:04:10 -0600 Subject: [PATCH] remove str(1) --- Makefile | 7 +---- docs/str.1 | 58 ----------------------------------------- src/str.c | 75 ------------------------------------------------------ 3 files changed, 1 insertion(+), 139 deletions(-) delete mode 100644 docs/str.1 delete mode 100644 src/str.c diff --git a/Makefile b/Makefile index b2e3a1a..dd318e3 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ RUSTLIBS = --extern getopt=build/o/libgetopt.rlib \ CFLAGS += -I$(SYSEXITS) .PHONY: all -all: dj false fop hru intcmp mm npc rpn scrut str strcmp stris swab true +all: dj false fop hru intcmp mm npc rpn scrut strcmp stris swab true build: # keep build/include until bindgen(1) has stdin support @@ -118,11 +118,6 @@ scrut: build/bin/scrut build/bin/scrut: src/scrut.c build $(CC) $(CFLAGS) -o $@ src/scrut.c -.PHONY: str -str: build/bin/str -build/bin/str: src/str.c build - $(CC) $(CFLAGS) -o $@ src/str.c - .PHONY: stris stris: build/bin/stris build/bin/stris: src/stris.rs build build/o/libgetopt.rlib \ diff --git a/docs/str.1 b/docs/str.1 deleted file mode 100644 index ecf71ee..0000000 --- a/docs/str.1 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Copyright (c) 2023–2024 DTB -.\" Copyright (c) 2023 Emma Tebibyte -.\" -.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license, -.\" visit . - -.TH STR 1 - -.SH NAME - -str \(en test the character types of string arguments - -.SH SYNOPSIS - -str -.RB [ type ] -.RB [ string... ] - -.SH DESCRIPTION - -Str tests each character in an arbitrary quantity of string arguments against -the function of the same name within ctype(3). - -.SH DIAGNOSTICS - -Str exits successfully if all tests pass and unsuccessfully if a test failed. -.PP -Str will exit unsuccessfully if a string is empty, as none of its contents -passed the test. -.PP -Str will print a message to standard error and exit unsuccessfully if used -improperly. - -.SH DEPRECATED FEATURES - -Str used to have an "isvalue" type as an extension to ctype(3). This was -removed in favor of using strcmp(1) to compare strings against the empty string -(''). - -.SH BUGS - -There's no way of knowing which argument failed the test without re-testing -arguments individually. -.PP -If a character in a string isn't valid ASCII str will exit unsuccessfully. - -.SH AUTHOR - -Written by DTB . - -.SH COPYRIGHT - -Copyright © 2023 DTB. License AGPLv3+: GNU AGPL version 3 or later -. - -.SH SEE ALSO - -ctype(3p), strcmp(1), ascii(7) diff --git a/src/str.c b/src/str.c deleted file mode 100644 index ae03b1d..0000000 --- a/src/str.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2023 DTB - * Copyright (c) 2023 Marceline Cramer - * SPDX-License-Identifier: AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify it under - * the terms of the GNU Affero General Public License as published by the Free - * Software Foundation, either version 3 of the License, or (at your option) any - * later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more - * details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see https://www.gnu.org/licenses/. - */ - -#include -#include /* NULL */ -#include /* fprintf(3) */ -#include /* EXIT_FAILURE */ -#include /* strcmp(3) */ -#include - -static char *program_name = "str"; - -static struct { - char *name; - int (*f)(int); -}ctypes[] = { - { "isalnum", isalnum }, - { "isalpha", isalpha }, - { "isblank", isblank }, - { "iscntrl", iscntrl }, - { "isdigit", isdigit }, - { "isxdigit", isxdigit }, - { "isgraph", isgraph }, - { "islower", islower }, - { "isprint", isprint }, - { "ispunct", ispunct }, - { "isspace", isspace }, - { "isupper", isupper } -}; - -int main(int argc, char *argv[]){ - int ctype; - int i; - int r; - - if(argc >= 3){ - for(ctype = 0; ctype < (sizeof ctypes) / (sizeof *ctypes); - ++ctype) - if(strcmp(argv[1], ctypes[ctype].name) == 0) - goto pass; - } - - fprintf(stderr, "Usage: %s [type] [string...]\n", - argv[0] == NULL ? program_name : argv[0]); - - return EX_USAGE; - -pass: for(argv += 2, r = 1; *argv != NULL; ++argv) - for(i = 0; argv[0][i] != '\0'; ++i) - /* First checks if argv[0][i] is valid ASCII; ctypes(3) - * don't handle non-ASCII. - * This is bad. */ - if((unsigned char)argv[0][i] < 0x80 && !ctypes[ctype].f(argv[0][i])) - return 1; - else - r = 0; - - return r; -}