From 9509ca7d01bb21a6173a8829935aa734b11344d4 Mon Sep 17 00:00:00 2001 From: Andre Paiusco <2374887+Paiusco@users.noreply.github.com> Date: Fri, 3 May 2024 21:52:22 +0200 Subject: [PATCH] Add version/help on ydotool client Seems logical that the client has more those info than the server as the server will be probably be run by an init system It was missing on the client to make sure any user can quickly check the hash (hopefully more tags) that is being used --- Client/ydotool.c | 43 ++++++++++++++++++++++++++++++++++++++----- Daemon/ydotoold.c | 1 + 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/Client/ydotool.c b/Client/ydotool.c index 7c1992b..6665a80 100644 --- a/Client/ydotool.c +++ b/Client/ydotool.c @@ -38,9 +38,14 @@ #include #include +#include #include +#ifndef VERSION +#define VERSION "unknown" +#endif + struct tool_def { char name[16]; void *ptr; @@ -81,7 +86,10 @@ static const struct tool_def tool_list[] = { }; static void show_help() { - puts("Usage: ydotool \n" + puts("Usage: ydotool [OPTION] \n" + "Options:\n" + " -h, --help Display this help and exit\n" + " -V, --version Show version information\n" "Available commands:"); int tool_count = sizeof(tool_list) / sizeof(struct tool_def); @@ -93,6 +101,11 @@ static void show_help() { puts("Use environment variable YDOTOOL_SOCKET to specify daemon socket."); } +static void show_version() { + puts("ydotool version(or hash): "); + puts(VERSION); +} + void uinput_emit(uint16_t type, uint16_t code, int32_t val, bool syn_report) { struct input_event ie = { .type = type, @@ -112,9 +125,29 @@ void uinput_emit(uint16_t type, uint16_t code, int32_t val, bool syn_report) { } int main(int argc, char **argv) { - if (argc < 2 || strncmp(argv[1], "-h", 2) == 0 || strncmp(argv[1], "--h", 3) == 0 || strcmp(argv[1], "help") == 0) { - show_help(); - return 0; + + static struct option long_options[] = { + {"help", no_argument, 0, 'h'}, + {"version", no_argument, 0, 'V'}, + }; + + int opt = getopt_long(argc, argv, "hV", long_options, NULL); + if (opt != -1) + { + switch (opt) { + case 'h': + show_help(); + exit(0); + + case 'V': + show_version(); + exit(0); + + default: + puts("Not a valid option\n"); + show_help(); + exit(1); + } } int (*tool_main)(int argc, char **argv) = NULL; @@ -129,7 +162,7 @@ int main(int argc, char **argv) { if (!tool_main) { printf("ydotool: Unknown command: %s\n" - "Run 'ydotool help' if you want a command list\n", argv[1]); + "Run 'ydotool --help' if you want a command list\n", argv[1]); return 1; } diff --git a/Daemon/ydotoold.c b/Daemon/ydotoold.c index de09904..ff2d05b 100644 --- a/Daemon/ydotoold.c +++ b/Daemon/ydotoold.c @@ -92,6 +92,7 @@ static void show_help() { } static void show_version() { + puts("ydotoold version(or hash): "); puts(VERSION); }