diff --git a/configure.ac b/configure.ac index 58ff067..79e55af 100644 --- a/configure.ac +++ b/configure.ac @@ -24,19 +24,7 @@ if test "$build" != "$host" -a "${PKG_CONFIG_LIBDIR}" = ""; then export PKG_CONFIG_LIBDIR=/dev/null fi -AC_CHECK_HEADERS(getopt.h sys/ioctl.h) - -ac_cv_have_getopt_long="no" -AC_CHECK_FUNCS(getopt_long, - [ac_cv_have_getopt_long="yes"], - [AC_CHECK_LIB(gnugetopt, getopt_long, - [ac_cv_have_getopt_long="yes" - GETOPT_LIBS="${GETOPT_LIBS} -lgnugetopt"])]) -if test "$ac_cv_have_getopt_long" != "no"; then - AC_DEFINE(HAVE_GETOPT_LONG, 1, Define to 1 if you have the ‘getopt_long’ function.) -fi -AM_CONDITIONAL(NEED_GETOPT_LONG, test "$ac_cv_have_getopt_long" = "no") -AC_SUBST(GETOPT_LIBS) +AC_CHECK_HEADERS(sys/ioctl.h) AC_CACHE_CHECK([for TIOCGWINSZ], [ac_cv_have_tiocgwinsz], @@ -51,10 +39,10 @@ if test "${ac_cv_have_tiocgwinsz}" = "yes"; then fi CUCUL="no" -PKG_CHECK_MODULES(CACA, caca >= 0.99.beta17, +PKG_CHECK_MODULES(CACA, caca >= 0.99.beta18, [CUCUL="yes"], [AC_MSG_RESULT(no) - AC_MSG_ERROR([you need libcaca version 0.99.beta17 or later])]) + AC_MSG_ERROR([you need libcaca version 0.99.beta18 or later])]) AC_MSG_CHECKING([for release date]) tmp="${stamp%-*}" diff --git a/src/Makefile.am b/src/Makefile.am index 4c3bdb9..51d9f4d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -5,16 +5,11 @@ toilet_SOURCES = main.c toilet.h \ render.c render.h \ filter.c filter.h \ export.c export.h \ - term.c figlet.c \ - $(GETOPT) + term.c figlet.c toilet_CPPFLAGS = -DFONTDIR=\"$(datadir)/figlet\" toilet_CFLAGS = @CACA_CFLAGS@ -toilet_LDADD = @CACA_LIBS@ @GETOPT_LIBS@ - -if NEED_GETOPT_LONG -GETOPT = mygetopt.c mygetopt.h -endif +toilet_LDADD = @CACA_LIBS@ echo-sources: ; echo $(SOURCES) diff --git a/src/main.c b/src/main.c index 01b1aeb..1d0d6e1 100644 --- a/src/main.c +++ b/src/main.c @@ -19,11 +19,6 @@ #if defined HAVE_INTTYPES_H # include #endif -#if !defined HAVE_GETOPT_LONG -# include "mygetopt.h" -#elif defined HAVE_GETOPT_H -# include -#endif #if defined HAVE_SYS_IOCTL_H && defined HAVE_TIOCGWINSZ # include #endif @@ -37,13 +32,6 @@ #include "filter.h" #include "export.h" -#if defined HAVE_GETOPT_LONG -# define mygetopt getopt_long -# define myoptind optind -# define myoptarg optarg -# define myoption option -#endif - static void version(void); static void usage(void); @@ -69,7 +57,7 @@ int main(int argc, char *argv[]) { #define MOREINFO "Try `%s --help' for more information.\n" int option_index = 0; - static struct myoption long_options[] = + static struct caca_option long_options[] = { /* Long option, needs arg, flag, short option */ { "font", 1, NULL, 'f' }, @@ -88,8 +76,8 @@ int main(int argc, char *argv[]) { NULL, 0, NULL, 0 } }; - int c = mygetopt(argc, argv, "f:d:w:tsSkWoF:E:hI:v", - long_options, &option_index); + int c = caca_getopt(argc, argv, "f:d:w:tsSkWoF:E:hI:v", + long_options, &option_index); if(c == -1) break; @@ -99,21 +87,21 @@ int main(int argc, char *argv[]) usage(); return 0; case 'I': /* --infocode */ - infocode = atoi(myoptarg); + infocode = atoi(caca_optarg); break; case 'v': /* --version */ version(); return 0; case 'f': /* --font */ - cx->font = myoptarg; + cx->font = caca_optarg; break; case 'd': /* --directory */ - cx->dir = myoptarg; + cx->dir = caca_optarg; break; case 'F': /* --filter */ - if(!strcmp(myoptarg, "list")) + if(!strcmp(caca_optarg, "list")) return filter_list(); - if(filter_add(cx, myoptarg) < 0) + if(filter_add(cx, caca_optarg) < 0) return -1; break; case 130: /* --gay */ @@ -123,7 +111,7 @@ int main(int argc, char *argv[]) filter_add(cx, "metal"); break; case 'w': /* --width */ - cx->term_width = atoi(myoptarg); + cx->term_width = atoi(caca_optarg); break; case 't': /* --termwidth */ { @@ -153,9 +141,9 @@ int main(int argc, char *argv[]) cx->hmode = H_OVERLAP; break; case 'E': /* --export */ - if(!strcmp(myoptarg, "list")) + if(!strcmp(caca_optarg, "list")) return export_list(); - if(export_set(cx, myoptarg) < 0) + if(export_set(cx, caca_optarg) < 0) return -1; break; case 140: /* --irc */ @@ -200,10 +188,10 @@ int main(int argc, char *argv[]) if(render_init(cx) < 0) return -1; - if(myoptind >= argc) + if(caca_optind >= argc) render_stdin(cx); else - render_list(cx, argc - myoptind, argv + myoptind); + render_list(cx, argc - caca_optind, argv + caca_optind); render_end(cx); filter_end(cx); diff --git a/src/mygetopt.c b/src/mygetopt.c deleted file mode 100644 index 423739d..0000000 --- a/src/mygetopt.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * TOIlet The Other Implementation’s letters - * Copyright (c) 2002-2010 Sam Hocevar - * All Rights Reserved - * - * This program is free software. It comes without any warranty, to - * the extent permitted by applicable law. You can redistribute it - * and/or modify it under the terms of the Do What The Fuck You Want - * To Public License, Version 2, as published by Sam Hocevar. See - * http://sam.zoy.org/wtfpl/COPYING for more details. - */ - -/* - * mygetopt.c: getopt_long reimplementation - */ - -#include "config.h" - -#if defined HAVE_STDINT_H -# include -#elif defined HAVE_INTTYPES_H -# include -#endif - -#include -#include - -#include "mygetopt.h" - -int myoptind = 1; -char *myoptarg = NULL; - -/* XXX: this getopt_long implementation should not be trusted for other - * applications without any serious peer reviewing. It “just works” with - * zzuf but may fail miserably in other programs. */ -int mygetopt(int argc, char * const _argv[], const char *optstring, - const struct myoption *longopts, int *longindex) -{ - char **argv = (char **)(uintptr_t)_argv; - char *flag; - int i; - - if(myoptind >= argc) - return -1; - - flag = argv[myoptind]; - - if(flag[0] == '-' && flag[1] != '-') - { - char *tmp; - int ret = flag[1]; - - if(ret == '\0') - return -1; - - tmp = strchr(optstring, ret); - if(!tmp || ret == ':') - return '?'; - - myoptind++; - if(tmp[1] == ':') - { - if(flag[2] != '\0') - myoptarg = flag + 2; - else - myoptarg = argv[myoptind++]; - return ret; - } - - if(flag[2] != '\0') - { - flag[1] = '-'; - myoptind--; - argv[myoptind]++; - } - - return ret; - } - - if(flag[0] == '-' && flag[1] == '-') - { - if(flag[2] == '\0') - return -1; - - for(i = 0; longopts[i].name; i++) - { - size_t l = strlen(longopts[i].name); - - if(strncmp(flag + 2, longopts[i].name, l)) - continue; - - switch(flag[2 + l]) - { - case '=': - if(!longopts[i].has_arg) - goto bad_opt; - if(longindex) - *longindex = i; - myoptind++; - myoptarg = flag + 2 + l + 1; - return longopts[i].val; - case '\0': - if(longindex) - *longindex = i; - myoptind++; - if(longopts[i].has_arg) - myoptarg = argv[myoptind++]; - return longopts[i].val; - default: - break; - } - } - bad_opt: - fprintf(stderr, "%s: unrecognized option `%s'\n", argv[0], flag); - return '?'; - } - - return -1; -} - diff --git a/src/mygetopt.h b/src/mygetopt.h deleted file mode 100644 index 254b72f..0000000 --- a/src/mygetopt.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * TOIlet The Other Implementation’s letters - * Copyright (c) 2002-2010 Sam Hocevar - * All Rights Reserved - * - * This program is free software. It comes without any warranty, to - * the extent permitted by applicable law. You can redistribute it - * and/or modify it under the terms of the Do What The Fuck You Want - * To Public License, Version 2, as published by Sam Hocevar. See - * http://sam.zoy.org/wtfpl/COPYING for more details. - */ - -/* - * mygetopt.h: getopt_long reimplementation - */ - -struct myoption -{ - const char *name; - int has_arg; - int *flag; - int val; -}; - -extern int myoptind; -extern char *myoptarg; - -int mygetopt(int, char * const[], const char *, const struct myoption *, int *); -