From d45f0cb4eecd504ccaa42b579be9a82f27e9cc77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ortega=20Froysa?= Date: Thu, 23 Jan 2025 14:36:28 +0100 Subject: [PATCH] Initial commit. --- .gitignore | 1 + LICENSE | 17 ++++++++++ Makefile | 57 ++++++++++++++++++++++++++++++++ README.md | 10 ++++++ src/main.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 182 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 src/main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f32fec --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/dbus-prettifier diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b472728 --- /dev/null +++ b/LICENSE @@ -0,0 +1,17 @@ +Copyright (C) [year] Nicolás A. Ortega Froysa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1ba52cc --- /dev/null +++ b/Makefile @@ -0,0 +1,57 @@ +# Copyright (C) 2025 Nicolás Ortega Froysa All rights reserved. +# Author: Nicolás Ortega Froysa +# +# This software is provided 'as-is', without any express or implied +# warranty. In no event will the authors be held liable for any damages +# arising from the use of this software. +# +# Permission is granted to anyone to use this software for any purpose, +# including commercial applications, and to alter it and redistribute it +# freely, subject to the following restrictions: +# +# 1. The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. If you use this software +# in a product, an acknowledgment in the product documentation would be +# appreciated but is not required. +# +# 2. Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# 3. This notice may not be removed or altered from any source +# distribution. + +DEBUG=0 +INCFLAGS= +LDFLAGS= +DEFS= +CFLAGS=$(INCFLAGS) -std=gnu99 -Wall -Wextra -Wfatal-errors -Werror +HDRS= +OBJS=src/main.o +VERSION=1.0 + +ifeq ($(PREFIX),) + PREFIX := /usr/local +endif + +ifeq ($(DEBUG),1) + CFLAGS+=-g -O0 +else + CFLAGS+=-O2 -DNDEBUG +endif + +%.o:%.cpp $(HDRS) + $(CC) -c -o $@ $< $(CFLAGS) -DVERSION=\"$(VERSION)\" + +dbus-prettifier: $(OBJS) + $(CC) -o $@ $^ $(LDFLAGS) + +.PHONY: clean distclean install + +clean: + $(RM) $(OBJS) + +distclean: clean + $(RM) dbus-prettifier + +install: dbus-prettifier + install -Dm755 dbus-prettifier $(PREFIX)/bin/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..63eb935 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# DBus Prettifier + +## Usage + +## Building + +## License + +This program is licensed under the terms & conditions of the [Zlib +License](LICENSE). diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..c087b38 --- /dev/null +++ b/src/main.c @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2025 Nicolás Ortega Froysa All rights reserved. + * Author: Nicolás Ortega Froysa + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ + +#include +#include + +int main(int argc, char *argv[]) { + const char *in_file_path = argv[1], *out_file_path = argv[2]; + FILE *in_file = NULL, *out_file = NULL; + int ret = EXIT_SUCCESS; + int tab_num = 0; + char ch, last_ch = 0; + + if(argc != 3) { + printf("Usage: %s \n", argv[0]); + return EXIT_FAILURE; + } + + in_file = fopen(in_file_path, "r"); + if(!in_file) { + fprintf(stderr, "Failed to open file '%s'.", in_file_path); + ret = EXIT_FAILURE; + goto exit_err; + } + out_file = fopen(out_file_path, "w"); + if(!out_file) { + fprintf(stderr, "Failed to open file '%s'.", out_file_path); + ret = EXIT_FAILURE; + goto exit_err; + } + + ch = fgetc(in_file); + + while(ch != EOF) { + switch(ch) { + case '[': + case '{': + tab_num++; + fprintf(out_file, "%c\n", ch); + for(int i = 0; i < tab_num; ++i) + fprintf(out_file, " "); + last_ch = ' '; + break; + case ']': + case '}': + tab_num--; + fputc('\n', out_file); + for(int i = 0; i < tab_num; ++i) + fprintf(out_file, " "); + fputc(ch, out_file); + break; + case ',': + fprintf(out_file, "%c\n", ch); + for(int i = 0; i < tab_num; ++i) + fprintf(out_file, " "); + last_ch = ' '; + break; + default: + if(ch != ' ' || last_ch != ' ') { + fputc(ch, out_file); + last_ch = ch; + } + break; + } + + ch = fgetc(in_file); + } + +exit_err: + if(in_file) + fclose(in_file); + if(out_file) + fclose(out_file); + + return ret; +}