Change the Ubuntu libdns_sd package name to be correct
[deb_shairplay.git] / src / shairplay.c
index 6ee23bad4b4ca81096d61219fab081d9edc01393..64cc864a33cd4e393e327144738af23eaeb995c6 100644 (file)
@@ -6,7 +6,7 @@
 #include <assert.h>
 
 #ifdef WIN32
-#include <windows.h>
+# include <windows.h>
 #endif
 
 #include <shairplay/dnssd.h>
@@ -37,6 +37,36 @@ typedef struct {
 } shairplay_session_t;
 
 
+static int running;
+
+#ifndef WIN32
+
+#include <signal.h>
+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,6 +265,10 @@ main(int argc, char *argv[])
 
        int error;
 
+#ifndef WIN32
+       init_signals();
+#endif
+
        memset(&options, 0, sizeof(options));
        if (parse_options(&options, argc, argv)) {
                return 0;
@@ -275,19 +309,21 @@ 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) {
 #ifndef WIN32
-       sleep(100);
+               sleep(1);
 #else
-       Sleep(100*1000);
+               Sleep(1000);
 #endif
+       }
 
        dnssd_unregister_raop(dnssd);
        dnssd_destroy(dnssd);