directory: path must not be NULL
For the root directory, let's set path to an empty string. This saves a few checks.
This commit is contained in:
		| @@ -39,7 +39,7 @@ static time_t directory_dbModTime; | ||||
| void | ||||
| db_init(void) | ||||
| { | ||||
| 	music_root = directory_new(NULL, NULL); | ||||
| 	music_root = directory_new("", NULL); | ||||
| 	updateDirectory(music_root); | ||||
| 	stats.numberOfSongs = countSongsIn(NULL); | ||||
| 	stats.dbPlayTime = sumSongTimesIn(NULL); | ||||
| @@ -240,7 +240,7 @@ db_load(void) | ||||
| 	struct stat st; | ||||
|  | ||||
| 	if (!music_root) | ||||
| 		music_root = directory_new(NULL, NULL); | ||||
| 		music_root = directory_new("", NULL); | ||||
| 	while (!(fp = fopen(dbFile, "r")) && errno == EINTR) ; | ||||
| 	if (fp == NULL) { | ||||
| 		ERROR("unable to open db file \"%s\": %s\n", | ||||
|   | ||||
| @@ -32,10 +32,11 @@ directory_new(const char *dirname, struct directory *parent) | ||||
| { | ||||
| 	struct directory *directory; | ||||
|  | ||||
| 	directory = xcalloc(1, sizeof(*directory)); | ||||
| 	assert(dirname != NULL); | ||||
| 	assert((*dirname == 0) == (parent == NULL)); | ||||
|  | ||||
| 	if (dirname && strlen(dirname)) | ||||
| 		directory->path = xstrdup(dirname); | ||||
| 	directory = xcalloc(1, sizeof(*directory)); | ||||
| 	directory->path = xstrdup(dirname); | ||||
| 	directory->parent = parent; | ||||
|  | ||||
| 	return directory; | ||||
| @@ -46,8 +47,7 @@ directory_free(struct directory *directory) | ||||
| { | ||||
| 	dirvec_destroy(&directory->children); | ||||
| 	songvec_destroy(&directory->songs); | ||||
| 	if (directory->path) | ||||
| 		free(directory->path); | ||||
| 	free(directory->path); | ||||
| 	free(directory); | ||||
| 	/* this resets last dir returned */ | ||||
| 	/*directory_get_path(NULL); */ | ||||
| @@ -131,7 +131,7 @@ directory_save(FILE *fp, struct directory *directory) | ||||
| 	size_t i; | ||||
| 	int retv; | ||||
|  | ||||
| 	if (directory->path) { | ||||
| 	if (!isRootDirectory(directory->path)) { | ||||
| 		retv = fprintf(fp, "%s%s\n", DIRECTORY_BEGIN, | ||||
| 			       directory_get_path(directory)); | ||||
| 		if (retv < 0) | ||||
| @@ -151,7 +151,7 @@ directory_save(FILE *fp, struct directory *directory) | ||||
|  | ||||
| 	songvec_save(fp, &directory->songs); | ||||
|  | ||||
| 	if (directory->path && | ||||
| 	if (!isRootDirectory(directory->path) && | ||||
| 	    fprintf(fp, DIRECTORY_END "%s\n", | ||||
| 		    directory_get_path(directory)) < 0) | ||||
| 		return -1; | ||||
|   | ||||
| @@ -73,8 +73,6 @@ directory_is_empty(struct directory *directory) | ||||
| static inline const char * | ||||
| directory_get_path(struct directory *directory) | ||||
| { | ||||
| 	if (directory->path == NULL) | ||||
| 		return ""; | ||||
| 	return directory->path; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann