diff --git a/Makefile.am b/Makefile.am index 809084b3..b48587d2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ bin_PROGRAMS = shairport -shairport_SOURCES = shairport.c daemon.c rtsp.c mdns.c mdns_external.c mdns_tinysvcmdns.c common.c rtp.c player.c alac.c audio.c audio_dummy.c audio_pipe.c tinysvcmdns.c mdns_avahi.c getopt_long.c +shairport_SOURCES = shairport.c daemon.c rtsp.c mdns.c mdns_external.c mdns_tinysvcmdns.c common.c rtp.c player.c alac.c audio.c audio_dummy.c audio_pipe.c tinysvcmdns.c mdns_avahi.c if USE_ALSA shairport_SOURCES += audio_alsa.c diff --git a/getopt_long.c b/getopt_long.c deleted file mode 100644 index cbd20eda..00000000 --- a/getopt_long.c +++ /dev/null @@ -1,197 +0,0 @@ -/* - * getopt_long() -- long options parser - * - * Portions Copyright (c) 1987, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * Portions Copyright (c) 2003 - * PostgreSQL Global Development Group - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include -#include "common.h" -#include "getopt_long.h" - -#define BADCH '?' -#define BADARG ':' -#define EMSG "" - - -/* - * getopt_long - * Parse argc/argv argument vector, with long options. - * - * This implementation does not use optreset. Instead, we guarantee that - * it can be restarted on a new argv array after a previous call returned -1, - * if the caller resets optind to 1 before the first call of the new series. - * (Internally, this means we must be sure to reset "place" to EMSG before - * returning -1.) - */ -int -getopt_long(int argc, char *const argv[], - const char *optstring, - const struct option * longopts, int *longindex) -{ - static char *place = EMSG; /* option letter processing */ - char *oli; /* option letter list index */ - - if (!*place) - { /* update scanning pointer */ - if (optind >= argc) - { - place = EMSG; - return -1; - } - - place = argv[optind]; - - if (place[0] != '-') - { - place = EMSG; - return -1; - } - - place++; - - if (place[0] && place[0] == '-' && place[1] == '\0') - { /* found "--" */ - ++optind; - place = EMSG; - return -1; - } - - if (place[0] && place[0] == '-' && place[1]) - { - /* long option */ - size_t namelen; - int i; - - place++; - - namelen = strcspn(place, "="); - for (i = 0; longopts[i].name != NULL; i++) - { - if (strlen(longopts[i].name) == namelen - && strncmp(place, longopts[i].name, namelen) == 0) - { - if (longopts[i].has_arg) - { - if (place[namelen] == '=') - optarg = place + namelen + 1; - else if (optind < argc - 1) - { - optind++; - optarg = argv[optind]; - } - else - { - if (optstring[0] == ':') - return BADARG; - if (opterr) - warn( - "%s: option requires an argument -- %s\n", - argv[0], place); - place = EMSG; - optind++; - return BADCH; - } - } - else - { - optarg = NULL; - if (place[namelen] != 0) - { - /* XXX error? */ - } - } - - optind++; - - if (longindex) - *longindex = i; - - place = EMSG; - - if (longopts[i].flag == NULL) - return longopts[i].val; - else - { - *longopts[i].flag = longopts[i].val; - return 0; - } - } - } - - if (opterr && optstring[0] != ':') - warn("illegal option -- %s\n", place); - place = EMSG; - optind++; - return BADCH; - } - } - - /* short option */ - optopt = (int) *place++; - - oli = strchr(optstring, optopt); - if (!oli) - { - if (!*place) - ++optind; - if (opterr && *optstring != ':') - warn("illegal option -- %c\n", optopt); - return BADCH; - } - - if (oli[1] != ':') - { /* don't need argument */ - optarg = NULL; - if (!*place) - ++optind; - } - else - { /* need an argument */ - if (*place) /* no white space */ - optarg = place; - else if (argc <= ++optind) - { /* no arg */ - place = EMSG; - if (*optstring == ':') - return BADARG; - if (opterr) - warn("option requires an argument -- %c\n", optopt); - return BADCH; - } - else - /* white space */ - optarg = argv[optind]; - place = EMSG; - ++optind; - } - return optopt; -} diff --git a/getopt_long.h b/getopt_long.h deleted file mode 100644 index 47f095f6..00000000 --- a/getopt_long.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Portions Copyright (c) 1987, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * Portions Copyright (c) 2003-2013, PostgreSQL Global Development Group - * - */ -#ifndef GETOPT_LONG_H -#define GETOPT_LONG_H - -#include "config.h" -#ifdef CONFIG_HAVE_GETOPT_H - -#include - -#else - -/* These are picked up from the system's getopt() facility. */ -extern int opterr; -extern int optind; -extern int optopt; -extern char *optarg; - -struct option -{ - const char *name; - int has_arg; - int *flag; - int val; -}; - -#define no_argument 0 -#define required_argument 1 - -extern int getopt_long(int argc, char *const argv[], - const char *optstring, - const struct option * longopts, int *longindex); - -#endif /* CONFIG_HAVE_GETOPT_H */ - -#endif /* GETOPT_LONG_H */