Commit 0bfe7802 authored by Max Kellermann's avatar Max Kellermann

directory: path must not be NULL

For the root directory, let's set path to an empty string. This saves a few checks.
parent 3b6efa99
...@@ -39,7 +39,7 @@ static time_t directory_dbModTime; ...@@ -39,7 +39,7 @@ static time_t directory_dbModTime;
void void
db_init(void) db_init(void)
{ {
music_root = directory_new(NULL, NULL); music_root = directory_new("", NULL);
updateDirectory(music_root); updateDirectory(music_root);
stats.numberOfSongs = countSongsIn(NULL); stats.numberOfSongs = countSongsIn(NULL);
stats.dbPlayTime = sumSongTimesIn(NULL); stats.dbPlayTime = sumSongTimesIn(NULL);
...@@ -240,7 +240,7 @@ db_load(void) ...@@ -240,7 +240,7 @@ db_load(void)
struct stat st; struct stat st;
if (!music_root) if (!music_root)
music_root = directory_new(NULL, NULL); music_root = directory_new("", NULL);
while (!(fp = fopen(dbFile, "r")) && errno == EINTR) ; while (!(fp = fopen(dbFile, "r")) && errno == EINTR) ;
if (fp == NULL) { if (fp == NULL) {
ERROR("unable to open db file \"%s\": %s\n", ERROR("unable to open db file \"%s\": %s\n",
......
...@@ -32,10 +32,11 @@ directory_new(const char *dirname, struct directory *parent) ...@@ -32,10 +32,11 @@ directory_new(const char *dirname, struct directory *parent)
{ {
struct directory *directory; struct directory *directory;
directory = xcalloc(1, sizeof(*directory)); assert(dirname != NULL);
assert((*dirname == 0) == (parent == NULL));
if (dirname && strlen(dirname)) directory = xcalloc(1, sizeof(*directory));
directory->path = xstrdup(dirname); directory->path = xstrdup(dirname);
directory->parent = parent; directory->parent = parent;
return directory; return directory;
...@@ -46,8 +47,7 @@ directory_free(struct directory *directory) ...@@ -46,8 +47,7 @@ directory_free(struct directory *directory)
{ {
dirvec_destroy(&directory->children); dirvec_destroy(&directory->children);
songvec_destroy(&directory->songs); songvec_destroy(&directory->songs);
if (directory->path) free(directory->path);
free(directory->path);
free(directory); free(directory);
/* this resets last dir returned */ /* this resets last dir returned */
/*directory_get_path(NULL); */ /*directory_get_path(NULL); */
...@@ -131,7 +131,7 @@ directory_save(FILE *fp, struct directory *directory) ...@@ -131,7 +131,7 @@ directory_save(FILE *fp, struct directory *directory)
size_t i; size_t i;
int retv; int retv;
if (directory->path) { if (!isRootDirectory(directory->path)) {
retv = fprintf(fp, "%s%s\n", DIRECTORY_BEGIN, retv = fprintf(fp, "%s%s\n", DIRECTORY_BEGIN,
directory_get_path(directory)); directory_get_path(directory));
if (retv < 0) if (retv < 0)
...@@ -151,7 +151,7 @@ directory_save(FILE *fp, struct directory *directory) ...@@ -151,7 +151,7 @@ directory_save(FILE *fp, struct directory *directory)
songvec_save(fp, &directory->songs); songvec_save(fp, &directory->songs);
if (directory->path && if (!isRootDirectory(directory->path) &&
fprintf(fp, DIRECTORY_END "%s\n", fprintf(fp, DIRECTORY_END "%s\n",
directory_get_path(directory)) < 0) directory_get_path(directory)) < 0)
return -1; return -1;
......
...@@ -73,8 +73,6 @@ directory_is_empty(struct directory *directory) ...@@ -73,8 +73,6 @@ directory_is_empty(struct directory *directory)
static inline const char * static inline const char *
directory_get_path(struct directory *directory) directory_get_path(struct directory *directory)
{ {
if (directory->path == NULL)
return "";
return directory->path; return directory->path;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment