From d1049476ef9077dddfe5152c30b9d4d0ddfa7c1c Mon Sep 17 00:00:00 2001 From: Justin Maggard Date: Tue, 30 Jun 2009 02:05:32 +0000 Subject: [PATCH] * Add new options to (1) force a rescan at startup, (2) display help text, and (3) bind to a specified network interface. --- minidlna.c | 79 ++++++++++++++++++++++++++++++++++++++++++++------- minidlna.conf | 5 +++- options.c | 3 +- options.h | 7 ++--- 4 files changed, 76 insertions(+), 18 deletions(-) diff --git a/minidlna.c b/minidlna.c index 1f61ae9..7121209 100644 --- a/minidlna.c +++ b/minidlna.c @@ -253,6 +253,15 @@ init(int argc, char * * argv) { switch(ary_options[i].id) { + case UPNPIFNAME: + if(getifaddr(ary_options[i].value, ext_ip_addr, INET_ADDRSTRLEN) >= 0) + { + if( *ext_ip_addr && parselanaddr(&lan_addr[n_lan_addr], ext_ip_addr) == 0 ) + n_lan_addr++; + } + else + fprintf(stderr, "Interface %s not found, ignoring.\n", ary_options[i].value); + break; case UPNPLISTENING_IP: if(n_lan_addr < MAX_LAN_ADDR) { @@ -374,6 +383,11 @@ init(int argc, char * * argv) { fprintf(stderr, "Unknown option: %s\n", argv[i]); } + else if(strcmp(argv[i], "--help")==0) + { + runtime_vars.port = 0; + break; + } else switch(argv[i][1]) { case 't': @@ -449,9 +463,50 @@ init(int argc, char * * argv) else fprintf(stderr, "Option -%c takes one argument.\n", argv[i][1]); break; + case 'i': + if(i+1 < argc) + { + int address_already_there = 0; + int j; + i++; + if( getifaddr(argv[i], ext_ip_addr, INET_ADDRSTRLEN) < 0 ) + { + fprintf(stderr, "Network interface '%s' not found.\n", + argv[i]); + exit(-1); + } + for(j=0; j