* Add a verbose logging parameter and playlist skipping, based on SF bug #3395238.
This commit is contained in:
parent
4857493e4f
commit
cb5ab0b1c6
18
minidlna.c
18
minidlna.c
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user