From 09b32b1e1eb60ccec5afac0081ee0da8c956a0fc Mon Sep 17 00:00:00 2001 From: Adriano Oliviero Date: Fri, 23 Apr 2021 18:02:05 +0200 Subject: [PATCH] Changed parse_config(), now it works without json-c --- Makefile | 11 +++--- README.md | 4 +-- uwufetch.c | 96 +++++++++++++++++++++++++------------------------ uwufetch_man.md | 36 +++++++++---------- 4 files changed, 73 insertions(+), 74 deletions(-) diff --git a/Makefile b/Makefile index c90a1f1..82e3825 100644 --- a/Makefile +++ b/Makefile @@ -2,19 +2,16 @@ NAME = uwufetch FILES = uwufetch.c CFLAGS = -O3 CFLAGS_DEBUG = -Wall -Wextra -LIBS = -ljson-c PREFIX = /usr/bin CC = cc MAN_COMPILER = pandoc build: $(FILES) - $(CC) $(CFLAGS) $(LIBS) -o $(NAME) $(FILES) - $(MAN_COMPILER) $(NAME)_man.md -st man -o $(NAME).1 - @gzip $(NAME).1 + $(CC) $(CFLAGS) -o $(NAME) $(FILES) debug: @clear - $(CC) $(CFLAGS_DEBUG) $(LIBS) -o $(NAME) $(FILES) + $(CC) $(CFLAGS_DEBUG) -o $(NAME) $(FILES) ./uwufetch install: @@ -37,6 +34,10 @@ termux_uninstall: rm -rf $(DESTDIR)/data/data/com.termux/files$(PREFIX)/$(NAME) rm -rf $(DESTDIR)/data/data/com.termux/files/usr/lib/uwufetch/ +man: + $(MAN_COMPILER) $(NAME)_man.md -st man -o $(NAME).1 + @gzip $(NAME).1 + man_debug: $(MAN_COMPILER) $(NAME)_man.md -st man -o $(NAME).1 @clear diff --git a/README.md b/README.md index cb25a7b..43a8e97 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Nyalpine, Nyarch Linuwu, Nyartix Linuwu, Debinyan, Fedowa, GentOwO, GnUwU gUwUix #### Partial support (Either no Ascii art, or no image is provided) -endeavOwO, KDE NeOwOn, nixOwOs, Swackwawe, sOwOlus; Plus FweeBSD, OwOpenBSD and macOwOS +endOwO, KDE NeOwOn, nixOwOs, Swackwawe, sOwOlus; Plus FweeBSD, OwOpenBSD and macOwOS ## Building and installation @@ -20,8 +20,6 @@ endeavOwO, KDE NeOwOn, nixOwOs, Swackwawe, sOwOlus; Plus FweeBSD, OwOpenBSD and [lshw](https://github.com/lyonel/lshw) to get gpu info. -[json-c](https://github.com/json-c/json-c) to parse the json config. - ##### Via package manager Right now, the package is only available on the AUR: diff --git a/uwufetch.c b/uwufetch.c index 5483533..641e0bf 100644 --- a/uwufetch.c +++ b/uwufetch.c @@ -19,7 +19,6 @@ #include #include #include -#include #ifdef __APPLE__ #include #include @@ -73,7 +72,7 @@ struct winsize win; int target_width = 0, screen_width = 0, screen_height = 0, ram_total, ram_used = 0, pkgs = 0; long uptime = 0; // all flags available -int ascii_image_flag = 0, +int ascii_image_flag = 0, // when (0) ascii is printed, when (1) image is printed show_user_info = 1, show_os = 1, show_kernel = 1, @@ -85,6 +84,7 @@ int ascii_image_flag = 0, show_pkgs = 1, show_uptime = 1, show_colors = 1; + char user[32], host[256], shell[64], kernel[256], version_name[64], cpu_model[256], gpu_model[8][256] = {{'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}}, pkgman_name[64], image_name[128], *config_directory = NULL; @@ -145,69 +145,73 @@ int main(int argc, char *argv[]) break; } } - parse_config(); + if (argc == 1) + parse_config(); if ((argc == 1 && ascii_image_flag == 0) || (argc > 1 && ascii_image_flag == 0)) print_ascii(); - else if (ascii_image_flag) + else if (ascii_image_flag == 1) print_image(); uwu_name(); print_info(); } void parse_config() -{ // using json-c library to parse the config - // allocating all necessary variables - char buffer[1024]; +{ + char line[256]; char *homedir = getenv("HOME"); - struct json_object *parsed_json, *distributon, *image, *ascii, *user, *os, *kernel, *cpu, *gpu, *ram, *resolution, *shell, *pkgs, *uptime, *colors; // opening and reading the config file FILE *config; if (config_directory == NULL) - config = fopen(strcat(homedir, "/.config/uwufetch/config.json"), "r"); + config = fopen(strcat(homedir, "/.config/uwufetch/config"), "r"); else config = fopen(config_directory, "r"); if (config == NULL) return; - fread(buffer, 1024, 1, config); + while (fgets(line, sizeof(line), config)) + { + char buffer[128] = {0}; + + sscanf(line, "distro=%s", version_name); + if (sscanf(line, "ascii=%[truefalse]", buffer)) + ascii_image_flag = !strcmp(buffer, "false"); + if (sscanf(line, "image=\"%[^\"]\"", image_name)) + { + if (image_name[0] == '~') + { // image name with ~ does not work + memmove(&image_name[0], &image_name[1], strlen(image_name)); + char temp[128] = "/home/"; + strcat(temp, user); + strcat(temp, image_name); + sprintf(image_name, "%s", temp); + } + ascii_image_flag = 1; + } + if (sscanf(line, "user=%[truefalse]", buffer)) + show_user_info = !strcmp(buffer, "true"); + if (sscanf(line, "os=%[truefalse]", buffer)) + show_os = strcmp(buffer, "false"); + if (sscanf(line, "kernel=%[truefalse]", buffer)) + show_kernel = strcmp(buffer, "false"); + if (sscanf(line, "cpu=%[truefalse]", buffer)) + show_cpu = strcmp(buffer, "false"); + if (sscanf(line, "gpu=%[truefalse]", buffer)) + show_gpu = strcmp(buffer, "false"); + if (sscanf(line, "ram=%[truefalse]", buffer)) + show_ram = strcmp(buffer, "false"); + if (sscanf(line, "resolution=%[truefalse]", buffer)) + show_resolution = strcmp(buffer, "false"); + if (sscanf(line, "shell=%[truefalse]", buffer)) + show_shell = strcmp(buffer, "false"); + if (sscanf(line, "pkgs=%[truefalse]", buffer)) + show_pkgs = strcmp(buffer, "false"); + if (sscanf(line, "uptime=%[truefalse]", buffer)) + show_uptime = strcmp(buffer, "false"); + if (sscanf(line, "colors=%[truefalse]", buffer)) + show_colors = strcmp(buffer, "false"); + } fclose(config); - - // parsing json data - parsed_json = json_tokener_parse(buffer); - json_object_object_get_ex(parsed_json, "distribution", &distributon); - json_object_object_get_ex(parsed_json, "image", &image); - json_object_object_get_ex(parsed_json, "ascii", &ascii); - json_object_object_get_ex(parsed_json, "user", &user); - json_object_object_get_ex(parsed_json, "os", &os); - json_object_object_get_ex(parsed_json, "kernel", &kernel); - json_object_object_get_ex(parsed_json, "cpu", &cpu); - json_object_object_get_ex(parsed_json, "gpu", &gpu); - json_object_object_get_ex(parsed_json, "ram", &ram); - json_object_object_get_ex(parsed_json, "resolution", &resolution); - json_object_object_get_ex(parsed_json, "shell", &shell); - json_object_object_get_ex(parsed_json, "pkgs", &pkgs); - json_object_object_get_ex(parsed_json, "uptime", &uptime); - json_object_object_get_ex(parsed_json, "colors", &colors); - - if (json_object_get_string(distributon) != NULL) - sprintf(version_name, "%s", json_object_get_string(distributon)); - if (sprintf(image_name, "%s", json_object_get_string(image)) == 0) - ascii_image_flag = 1; - else // reset image_name var to avoid errors - sprintf(image_name, "%i", 0x0); - ascii_image_flag = !json_object_get_boolean(ascii); - show_user_info = json_object_get_boolean(user); - show_os = json_object_get_boolean(os); - show_kernel = json_object_get_boolean(kernel); - show_cpu = json_object_get_boolean(cpu); - show_gpu = json_object_get_boolean(gpu); - show_ram = json_object_get_boolean(ram); - show_resolution = json_object_get_boolean(resolution); - show_shell = json_object_get_boolean(shell); - show_pkgs = json_object_get_boolean(pkgs); - show_uptime = json_object_get_boolean(uptime); - show_colors = json_object_get_boolean(colors); } int pkgman() diff --git a/uwufetch_man.md b/uwufetch_man.md index f048b0d..a5218f9 100644 --- a/uwufetch_man.md +++ b/uwufetch_man.md @@ -39,27 +39,23 @@ prints a list of all supported distributions # CONFIG FILE -The config file is located in $HOME/.config/uwufetch/config.json (you need to create it), but you can change the path by using the `--config` option. +The config file is located in $HOME/.config/uwufetch/config (you need to create it), but you can change the path by using the `--config` option. -## EXAMPLE -```json -{ - "distribution": "debian", - "image": "/home/user/Pictures/debian.png", - "ascii": false, - "user": true, - "os": true, - "kernel": true, - "cpu": true, - "gpu": true, - "ram": true, - "resolution": true, - "shell": true, - "pkgs": true, - "uptime": true, - "colors": true -} -``` +## EXAMPLE: +distro=arch\ +image="~/Pictures/picture.png"\ +ascii=false\ +user=true\ +os=true\ +kernel=true\ +cpu=true\ +gpu=false\ +ram=true\ +resolution=true\ +shell=true\ +pkgs=true\ +uptime=true\ +colors=true # SUPPORTED DISTRIBUTIONS