From 1f784be8911bd2917e697630de3da05da2814ab4 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Wed, 3 Sep 2008 08:16:54 -0500 Subject: [PATCH] added support for long command line options --- Makefile | 3 +- cli.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ espeakup.c | 46 ------------------------------- espeakup.h | 1 + 4 files changed, 83 insertions(+), 47 deletions(-) create mode 100644 cli.c diff --git a/Makefile b/Makefile index d77b558..1523a6f 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ INSTALL = /usr/bin/install RM = /bin/rm -f SRCS = \ + cli.c \ espeakup.c \ queue.c \ softsynth.c \ @@ -33,7 +34,7 @@ ifeq ("$(origin TAG)", "command line") TIMESTAMP := _p$(shell date +%Y%m%d) endif -VERSION := $(shell grep 'Version.*=' espeakup.c | sed 's/.*"\(.*\)";/\1/') +VERSION := $(shell grep 'Version.*=' cli.c | sed 's/.*"\(.*\)";/\1/') TAG := v$(VERSION) TARPREFIX := espeakup-$(VERSION) TARFILE := $(TARPREFIX)$(TIMESTAMP).tar diff --git a/cli.c b/cli.c new file mode 100644 index 0000000..ce1a18e --- /dev/null +++ b/cli.c @@ -0,0 +1,80 @@ +/* + * espeakup - interface which allows speakup to use espeak + * + * Copyright (C) 2008 William Hubbs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include + +#include "espeakup.h" + +/* program version */ +const char *Version = "0.2"; + +/* command line options */ +const char *shortOptions = "dhv"; +const struct option longOptions[] = { + {"debug", no_argument, NULL, 'd'}, + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'v'}, + {0, 0, 0, 0} +}; + +static void show_help() +{ + printf("Usage: espeakup [options]\n\n"); + printf("Options are as follows:\n"); + printf(" --debug, -d\tDebug mode (stay in the foreground)\n"); + printf(" --help, -h\tShow this help\n"); + printf(" --version, -v\tDisplay the software version.\n"); + exit(0); +} + +static void show_version(void) +{ + printf("espeakup %s\n", Version); + printf("Copyright (C) 2008 William Hubbs\n"); + printf("License GPLv3+: GNU GPL version 3 or later\n"); + printf("You are free to change and redistribute this software.\n"); + exit(0); +} + +void process_cli(int argc, char **argv) +{ + int opt; + + do { + opt = getopt_long(argc, argv, shortOptions, longOptions, NULL); + switch (opt) { + case 'd': + debug = 1; + break; + case 'h': + show_help(); + break; + case 'v': + show_version(); + break; + case -1: + break; + default: + show_help(); + break; + } + } while (opt != -1); +} diff --git a/espeakup.c b/espeakup.c index 406cce3..26e35d1 100644 --- a/espeakup.c +++ b/espeakup.c @@ -26,12 +26,6 @@ #include "espeakup.h" -/* program version */ -const char *Version = "0.2"; - -/* command line options */ -const char *shortOptions = "dhv"; - /* path to our pid file */ const char *pidPath = "/var/run/espeakup.pid"; @@ -90,46 +84,6 @@ void espeakup_sighandler(int sig) exit(0); } -void show_help() -{ - printf("Usage: espeakup [-d] [-h] [-v]\n\n"); - printf("-d\tDebug mode (stay in the foreground)\n"); - printf("-h\tShow this help\n"); - printf("-v\tDisplay the software version.\n"); - exit(0); -} - -void show_version(void) -{ - printf("espeakup %s\n", Version); - printf("Copyright (C) 2008 William Hubbs\n"); - printf("License GPLv3+: GNU GPL version 3 or later\n"); - printf("You are free to change and redistribute this software.\n"); - exit(0); -} - -void process_cli(int argc, char **argv) -{ - int opt; - - while ((opt = getopt(argc, argv, shortOptions)) != -1) { - switch (opt) { - case 'd': - debug = 1; - break; - case 'h': - show_help(); - break; - case 'v': - show_version(); - break; - default: - show_help(); - break; - } - } -} - int main(int argc, char **argv) { struct synth_t s; diff --git a/espeakup.h b/espeakup.h index 0ed695c..0518ed0 100644 --- a/espeakup.h +++ b/espeakup.h @@ -54,6 +54,7 @@ struct synth_t { extern int debug; +extern void process_cli(int argc, char **argv); extern void queue_clear(void); extern void queue_add_cmd(enum command_t cmd, enum adjust_t adj, int value);