From af5861c611dd38d68d9c04addc5e3c132ecd7be7 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Wed, 4 Feb 2026 20:42:27 +0000 Subject: [PATCH] Add scripts/helper/format-xml.c --- scripts/helper/.gitignore | 1 + scripts/helper/Makefile | 7 ++++++- scripts/helper/format-xml.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 scripts/helper/format-xml.c 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; +}