diff options
| author | Mattias Andrée <maandree@kth.se> | 2023-07-05 20:28:23 +0200 | 
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2023-07-05 20:28:23 +0200 | 
| commit | bf1ccb7ce4f13deb52013b9cbddfe2ad7cceba00 (patch) | |
| tree | c0213fdb769a77f3aac3c1a0e91794bdaa4812d9 | |
| parent | Improve make config file portability and remove -g from CFLAGS and -s from LDFLAGS (diff) | |
| download | contacts-bf1ccb7ce4f13deb52013b9cbddfe2ad7cceba00.tar.gz contacts-bf1ccb7ce4f13deb52013b9cbddfe2ad7cceba00.tar.bz2 contacts-bf1ccb7ce4f13deb52013b9cbddfe2ad7cceba00.tar.xz | |
Improve multicall-binary: keep dashs as are when printing that a command was not found
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
| -rw-r--r-- | Makefile | 9 | ||||
| -rw-r--r-- | contacts.c.in | 12 | 
2 files changed, 13 insertions, 8 deletions
| @@ -86,9 +86,16 @@ contacts: contacts.o $(BOBJ)  contacts.c: contacts.c.in Makefile  	printf '#define LIST_COMMANDS' > $@ -	printf '\\\n\tX(%s)' $(BIN) | tr - _ >> $@ +	for bin in $(BIN); do\ +		printf '\\\n\tX(%s, %s)' $$bin $$(printf '%s\n' $$bin | tr - _) || exit 1;\ +	done >> $@  	printf '\n\n' >> $@  	cat contacts.c.in >> $@ +# (printf '\\\n\tX(%s)' $(BIN); printf '\n\n') are run together +# because the input of sed must be a text file, and the first +# printf(1) do not generate a text file as text files are by +# definition LF terminated unless they are empty (also no line +# may exceed 2048 bytes including the LF)  add-contact: add-contact.o  	$(CC) -o $@ $@.o $(LDFLAGS) diff --git a/contacts.c.in b/contacts.c.in index b297951..024b94e 100644 --- a/contacts.c.in +++ b/contacts.c.in @@ -2,7 +2,7 @@  #include <stdio.h>  #include <string.h> -#define X(NAM) int main__##NAM(int, char *[]); +#define X(DASH, UNDERSCORE) int main__##UNDERSCORE(int, char *[]);  LIST_COMMANDS  #undef X @@ -11,17 +11,15 @@ char *argv0 = NULL;  int  main(int argc, char *argv[])  { - 	char *name, *p; +	const char *name;        	name = strrchr(*argv, '/');  	if (!name++)  		name = *argv; -	for (p = name; (p = strchr(p, '-'));) -		*p++ = '_'; -#define X(NAM)\ -	if (!strcmp(name, #NAM))\ -		return main__##NAM(argc, argv); +#define X(DASH, UNDERSCORE)\ +	if (!strcmp(name, #DASH))\ +		return main__##UNDERSCORE(argc, argv);  	LIST_COMMANDS;  #undef X | 
