static void sig_shutdown(int foo, siginfo_t *bar, void *baz) { debug(1, "shutdown requested..."); shairport_shutdown(); // daemon_log(LOG_NOTICE, "exit..."); daemon_retval_send(255); daemon_pid_file_remove(); exit(0); }
void die(char *format, ...) { char s[1024]; s[0] = 0; va_list args; va_start(args, format); vsprintf(s, format, args); va_end(args); daemon_log(LOG_EMERG, "%s", s); shairport_shutdown(); exit(1); }
void die(char *format, ...) { fprintf(stderr, "FATAL: "); va_list args; va_start(args, format); vfprintf(stderr, format, args); if (config.daemonise) daemon_fail(format, args); // Send error message to parent va_end(args); fprintf(stderr, "\n"); shairport_shutdown(1); }
int main(int argc, char **argv) { signal_setup(); memset(&config, 0, sizeof(config)); // set defaults config.buffer_start_fill = 220; config.port = 5002; char hostname[100]; gethostname(hostname, 100); config.apname = malloc(20 + 100); snprintf(config.apname, 20 + 100, "Shairport on %s", hostname); // parse arguments into config int audio_arg = parse_options(argc, argv); // mDNS supports maximum of 63-character names (we append 13). if (strlen(config.apname) > 50) die("Supplied name too long (max 50 characters)"); if (config.daemonise) { daemon_init(); } log_setup(); config.output = audio_get_output(config.output_name); if (!config.output) { audio_ls_outputs(); die("Invalid audio output specified!"); } config.output->init(argc-audio_arg, argv+audio_arg); uint8_t ap_md5[16]; MD5_CTX ctx; MD5_Init(&ctx); MD5_Update(&ctx, config.apname, strlen(config.apname)); MD5_Final(ap_md5, &ctx); memcpy(config.hw_addr, ap_md5, sizeof(config.hw_addr)); rtsp_listen_loop(); // should not. shairport_shutdown(1); return 1; }
static void sig_shutdown(int foo, siginfo_t *bar, void *baz) { shairport_shutdown(0); }
int main(int argc, char **argv) { /* struct mpd_connection *conn = NULL; conn = mpd_connection_new(NULL, 0, 3000); if (conn == NULL) {printf("%s", "Out of memory"); return -1;} mpd_run_stop(conn); mpd_connection_free(conn); */ signal_setup(); memset(&config, 0, sizeof(config)); // set defaults config.buffer_start_fill = 220; config.port = 5002; char hostname[100]; gethostname(hostname, 100); config.apname = malloc(20 + 100); snprintf(config.apname, 20 + 100, "%s", hostname); // parse arguments into config int audio_arg = parse_options(argc, argv); // mDNS supports maximum of 63-character names (we append 13). if (strlen(config.apname) > 50) die("Supplied name too long (max 50 characters)"); if (config.daemonise) { daemon_init(); } if(ggshutdown) { if (kill(0, SIGTERM)) { printf("kill(0, SIGTERM))"); } die("shairport shutted down...!"); } printf("stop mpc:\n"); system("mpc stop"); printf("mpc stopped\n"); printf("Starting Shairport %s\n", version); log_setup(); config.output = audio_get_output(config.output_name); if (!config.output) { audio_ls_outputs(); die("Invalid audio output specified!"); } config.output->init(argc-audio_arg, argv+audio_arg); uint8_t ap_md5[16]; MD5_CTX ctx; MD5_Init(&ctx); MD5_Update(&ctx, config.apname, strlen(config.apname)); MD5_Final(ap_md5, &ctx); memcpy(config.hw_addr, ap_md5, sizeof(config.hw_addr)); if (config.meta_dir) metadata_open(); rtsp_listen_loop(); // should not. shairport_shutdown(1); return 1; }