X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fshairplay.c;h=bf269efbe76acbf65e421dc9cb4b6e0b350e3a69;hb=c6e5e8b92e81690133d2f51237fb90c1668bd146;hp=9cccf030d0945d09143e9395e4c6aa2f34c66a1d;hpb=258e9fb821c5ee9b39628d1694e48d5518e28ac3;p=deb_shairplay.git diff --git a/src/shairplay.c b/src/shairplay.c index 9cccf03..bf269ef 100644 --- a/src/shairplay.c +++ b/src/shairplay.c @@ -1,3 +1,26 @@ +/** + * Copyright (C) 2012-2013 Juho Vähä-Herttua + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + #include #include #include @@ -6,7 +29,7 @@ #include #ifdef WIN32 -#include +# include #endif #include @@ -39,6 +62,33 @@ typedef struct { static int running; +#ifndef WIN32 + +#include +static void +signal_handler(int sig) +{ + switch (sig) { + case SIGINT: + case SIGTERM: + running = 0; + break; + } +} +static void +init_signals(void) +{ + struct sigaction sigact; + + sigact.sa_handler = signal_handler; + sigemptyset(&sigact.sa_mask); + sigact.sa_flags = 0; + sigaction(SIGINT, &sigact, NULL); + sigaction(SIGTERM, &sigact, NULL); +} + +#endif + static ao_device * audio_open_device(shairplay_options_t *opt, int bits, int channels, int samplerate) @@ -235,9 +285,14 @@ main(int argc, char *argv[]) dnssd_t *dnssd; raop_t *raop; raop_callbacks_t raop_cbs; + char *password = NULL; int error; +#ifndef WIN32 + init_signals(); +#endif + memset(&options, 0, sizeof(options)); if (parse_options(&options, argc, argv)) { return 0; @@ -268,8 +323,11 @@ main(int argc, char *argv[]) return -1; } + if (strlen(options.password)) { + password = options.password; + } raop_set_log_level(raop, RAOP_LOG_DEBUG); - raop_start(raop, &options.port, hwaddr, sizeof(hwaddr), NULL); + raop_start(raop, &options.port, hwaddr, sizeof(hwaddr), password); error = 0; dnssd = dnssd_init(&error); @@ -278,13 +336,12 @@ main(int argc, char *argv[]) fprintf(stderr, "------------------------------------------\n"); fprintf(stderr, "You could try the following resolutions based on your OS:\n"); fprintf(stderr, "Windows: Try installing http://support.apple.com/kb/DL999\n"); - fprintf(stderr, "Debian/Ubuntu: Try installing libavahi-compat-libdnssd1 package\n"); + fprintf(stderr, "Debian/Ubuntu: Try installing libavahi-compat-libdnssd-dev package\n"); raop_destroy(raop); return -1; } dnssd_register_raop(dnssd, options.apname, options.port, hwaddr, sizeof(hwaddr), 0); - dnssd_register_airplay(dnssd, options.apname, 1234, hwaddr, sizeof(hwaddr)); running = 1; while (running) {