diff --git a/scripts/helper/.gitignore b/scripts/helper/.gitignore index 3f09a209..6be9783e 100644 --- a/scripts/helper/.gitignore +++ b/scripts/helper/.gitignore @@ -1,2 +1,3 @@ find-idents +format-xml *.o diff --git a/scripts/helper/Makefile b/scripts/helper/Makefile index e04f063f..994279b5 100644 --- a/scripts/helper/Makefile +++ b/scripts/helper/Makefile @@ -1,12 +1,17 @@ CFLAGS += -g -Wall -O0 -std=c11 LDFLAGS += -fsanitize=address -PROGS = find-idents +PROGS = find-idents format-xml all: $(PROGS) find-idents: find-idents.o $(CC) -o $@ $^ +format-xml: CFLAGS += `pkg-config --cflags libxml-2.0` +format-xml: CFLAGS += `pkg-config --libs libxml-2.0` +format-xml: format-xml.o + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + clean : $(RM) $(PROGS) *.o diff --git a/scripts/helper/format-xml.c b/scripts/helper/format-xml.c new file mode 100644 index 00000000..fc6f467f --- /dev/null +++ b/scripts/helper/format-xml.c @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Helper to format XML the way libxml2 does it - because it helps stot + * differences when working labwc-tweaks. + * + * Copyright (C) Johan Malm 2023 + */ +#define _POSIX_C_SOURCE 200809L +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + if (argc != 2) { + fprintf(stderr, "usage: %s \n", argv[0]); + return EXIT_FAILURE; + } + const char *filename = argv[1]; + + /* Use XML_PARSE_NOBLANKS for xmlSaveFormatFile() to indent nicely */ + xmlDoc *doc = xmlReadFile(filename, NULL, XML_PARSE_NOBLANKS); + if (!doc) { + fprintf(stderr, "bad file '%s'\n", filename); + return EXIT_FAILURE; + } + xmlSaveFormatFile(filename, doc, 1); + xmlFreeDoc(doc); + return EXIT_SUCCESS; +}