* Add a verbose logging parameter and playlist skipping, based on SF bug #3395238.

This commit is contained in:
Justin Maggard 2011-09-03 01:54:39 +00:00
parent 4857493e4f
commit cb5ab0b1c6
5 changed files with 25 additions and 7 deletions

View File

@ -340,6 +340,7 @@ init(int argc, char * * argv)
int i; int i;
int pid; int pid;
int debug_flag = 0; int debug_flag = 0;
int verbose_flag = 0;
int options_flag = 0; int options_flag = 0;
struct sigaction sa; struct sigaction sa;
/*const char * logfilename = 0;*/ /*const char * logfilename = 0;*/
@ -351,6 +352,7 @@ init(int argc, char * * argv)
char * path; char * path;
char real_path[PATH_MAX]; char real_path[PATH_MAX];
char ip_addr[INET_ADDRSTRLEN + 3] = {'\0'}; char ip_addr[INET_ADDRSTRLEN + 3] = {'\0'};
char log_str[72] = "general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn";
/* first check if "-f" option is used */ /* first check if "-f" option is used */
for(i=2; i<argc; i++) for(i=2; i<argc; i++)
@ -658,6 +660,11 @@ init(int argc, char * * argv)
break; break;
case 'd': case 'd':
debug_flag = 1; debug_flag = 1;
case 'v':
verbose_flag = 1;
break;
case 'L':
SETFLAG(NO_PLAYLIST_MASK);
break; break;
case 'w': case 'w':
if(i+1 < argc) if(i+1 < argc)
@ -765,7 +772,7 @@ init(int argc, char * * argv)
if( (n_lan_addr==0) || (runtime_vars.port<=0) ) if( (n_lan_addr==0) || (runtime_vars.port<=0) )
{ {
fprintf(stderr, "Usage:\n\t" fprintf(stderr, "Usage:\n\t"
"%s [-d] [-f config_file]\n" "%s [-d] [-v] [-f config_file]\n"
"\t\t[-a listening_ip] [-p port]\n" "\t\t[-a listening_ip] [-p port]\n"
/*"[-l logfile] " not functionnal */ /*"[-l logfile] " not functionnal */
"\t\t[-s serial] [-m model_number] \n" "\t\t[-s serial] [-m model_number] \n"
@ -777,26 +784,29 @@ init(int argc, char * * argv)
"\t-w sets the presentation url. Default is http address on port 80\n" "\t-w sets the presentation url. Default is http address on port 80\n"
"\t-h displays this text\n" "\t-h displays this text\n"
"\t-R forces a full rescan\n" "\t-R forces a full rescan\n"
"\t-L do note create playlists\n"
"\t-V print the version number\n", "\t-V print the version number\n",
argv[0], pidfilename); argv[0], pidfilename);
return 1; return 1;
} }
if( verbose_flag )
strcpy(log_str+65, "debug");
if(debug_flag) if(debug_flag)
{ {
pid = getpid(); pid = getpid();
log_init(NULL, "general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=debug"); log_init(NULL, log_str);
} }
else else
{ {
pid = daemonize(); pid = daemonize();
#ifdef READYNAS #ifdef READYNAS
log_init("/var/log/upnp-av.log", "general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn"); log_init("/var/log/upnp-av.log", log_str);
#else #else
if( access(db_path, F_OK) != 0 ) if( access(db_path, F_OK) != 0 )
make_dir(db_path, S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO); make_dir(db_path, S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO);
sprintf(real_path, "%s/minidlna.log", log_path); sprintf(real_path, "%s/minidlna.log", log_path);
log_init(real_path, "general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn"); log_init(real_path, log_str);
#endif #endif
} }

View File

@ -97,6 +97,8 @@ fill_playlists()
sqlite_int64 plID, detailID; sqlite_int64 plID, detailID;
char sql_buf[] = "SELECT ID, NAME, PATH from PLAYLISTS where ITEMS > FOUND"; char sql_buf[] = "SELECT ID, NAME, PATH from PLAYLISTS where ITEMS > FOUND";
DPRINTF(E_WARN, L_SCANNER, "Parsing playlists...\n");
if( sql_get_table(db, sql_buf, &result, &rows, NULL) != SQLITE_OK ) if( sql_get_table(db, sql_buf, &result, &rows, NULL) != SQLITE_OK )
return -1; return -1;
if( !rows ) if( !rows )
@ -220,6 +222,7 @@ found:
sql_exec(db, "UPDATE PLAYLISTS set FOUND = %d where ID = %lld", found, plID); sql_exec(db, "UPDATE PLAYLISTS set FOUND = %d where ID = %lld", found, plID);
} }
sqlite3_free_table(result); sqlite3_free_table(result);
DPRINTF(E_WARN, L_SCANNER, "Finished parsing playlists.\n");
return 0; return 0;
} }

View File

@ -828,8 +828,12 @@ start_scanner()
* client that uses UPnPSearch on large containers). */ * client that uses UPnPSearch on large containers). */
sql_exec(db, "create INDEX IDX_SEARCH_OPT ON OBJECTS(OBJECT_ID, CLASS, DETAIL_ID);"); sql_exec(db, "create INDEX IDX_SEARCH_OPT ON OBJECTS(OBJECT_ID, CLASS, DETAIL_ID);");
fill_playlists(); if( GETFLAG(NO_PLAYLIST_MASK) )
DPRINTF(E_WARN, L_SCANNER, "Playlist creation disabled\n");
else
fill_playlists();
DPRINTF(E_DEBUG, L_SCANNER, "Initial file scan completed\n", DB_VERSION);
//JM: Set up a db version number, so we know if we need to rebuild due to a new structure. //JM: Set up a db version number, so we know if we need to rebuild due to a new structure.
sql_exec(db, "pragma user_version = %d;", DB_VERSION); sql_exec(db, "pragma user_version = %d;", DB_VERSION);
} }

View File

@ -61,7 +61,7 @@
time_t startup_time = 0; time_t startup_time = 0;
struct runtime_vars_s runtime_vars; struct runtime_vars_s runtime_vars;
int runtime_flags = INOTIFY_MASK; uint32_t runtime_flags = INOTIFY_MASK;
const char * pidfilename = "/var/run/minidlna.pid"; const char * pidfilename = "/var/run/minidlna.pid";

View File

@ -175,10 +175,11 @@ extern time_t startup_time;
extern struct runtime_vars_s runtime_vars; extern struct runtime_vars_s runtime_vars;
/* runtime boolean flags */ /* runtime boolean flags */
extern int runtime_flags; extern uint32_t runtime_flags;
#define INOTIFY_MASK 0x0001 #define INOTIFY_MASK 0x0001
#define TIVO_MASK 0x0002 #define TIVO_MASK 0x0002
#define DLNA_STRICT_MASK 0x0004 #define DLNA_STRICT_MASK 0x0004
#define NO_PLAYLIST_MASK 0x0008
#define SETFLAG(mask) runtime_flags |= mask #define SETFLAG(mask) runtime_flags |= mask
#define GETFLAG(mask) runtime_flags & mask #define GETFLAG(mask) runtime_flags & mask