# HG changeset patch # User Mychaela Falconia # Date 1589508129 0 # Node ID 8123259c7f14e780427526fa484361c617bb1df6 # Parent 14f8a71286c5b83a77ce0a2a96bfc2b1e4472943 helpers/makeline imported from Selenite diff -r 14f8a71286c5 -r 8123259c7f14 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Fri May 15 02:02:09 2020 +0000 @@ -0,0 +1,5 @@ +syntax: regexp + +^build- + +^helpers/makeline$ diff -r 14f8a71286c5 -r 8123259c7f14 helpers/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/helpers/Makefile Fri May 15 02:02:09 2020 +0000 @@ -0,0 +1,11 @@ +CC= gcc +CFLAGS= -O2 +PROGS= makeline + +all: ${PROGS} + +makeline: makeline.c + ${CC} ${CFLAGS} -o $@ $@.c + +clean: + rm -f ${PROGS} diff -r 14f8a71286c5 -r 8123259c7f14 helpers/makeline.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/helpers/makeline.c Fri May 15 02:02:09 2020 +0000 @@ -0,0 +1,76 @@ +/* + * This helper utility for the FreeCalypso Selenite build system + * emits potentially long generated Makefile lines, breaking them into + * multiple lines with backslashes. + */ + +#include +#include +#include +#include + +int is_cmd, equ_or_colon, extra_indent; +int linelen; + +main(argc, argv) + char **argv; +{ + char **ap; + + if (argc < 4) { + fprintf(stderr, "error: too few arguments\n", argv[0]); + exit(1); + } + if (!strcmp(argv[1], "def")) { + is_cmd = 0; + equ_or_colon = '='; + extra_indent = 0; + } else if (!strcmp(argv[1], "dep")) { + is_cmd = 0; + equ_or_colon = ':'; + extra_indent = 1; + } else if (!strcmp(argv[1], "cmd")) { + is_cmd = 1; + extra_indent = 1; + } else { + fprintf(stderr, "error: line type \"%s\" not known\n", argv[1]); + exit(1); + } + if (is_cmd) { + putchar('\t'); + linelen = 8; + } else + linelen = 0; + fputs(argv[2], stdout); + linelen += strlen(argv[2]); + if (is_cmd) { + putchar(' '); + linelen++; + } else { + putchar(equ_or_colon); + linelen++; + putchar('\t'); + do + linelen++; + while (linelen & 7); + } + fputs(argv[3], stdout); + linelen += strlen(argv[3]); + for (ap = argv + 4; *ap; ap++) { + if (linelen + 1 + strlen(*ap) <= 78) { + putchar(' '); + linelen++; + } else { + fputs(" \\\n\t", stdout); + linelen = 8; + if (extra_indent) { + fputs(" ", stdout); + linelen += 4; + } + } + fputs(*ap, stdout); + linelen += strlen(*ap); + } + putchar('\n'); + exit(0); +}