diff options
author | Max Kellermann <max@duempel.org> | 2008-10-09 15:23:37 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-10-09 15:23:37 +0200 |
commit | a0c044df11825069fc91dbc1ab9b6960886fd125 (patch) | |
tree | 3f13c65eef958641b38f0cb4ab6290f57a7c87b9 /src/directory.c | |
parent | cb12eb8e231cb653ea0f7f96d3de7cdf9e504f8c (diff) | |
download | mpd-a0c044df11825069fc91dbc1ab9b6960886fd125.tar.gz mpd-a0c044df11825069fc91dbc1ab9b6960886fd125.tar.xz mpd-a0c044df11825069fc91dbc1ab9b6960886fd125.zip |
diretory: moved code to directory_save.c, directory_print.c
Remove clutter from directory.c. Everything which saves or loads
to/from the hard disk goes to directory_save.c, and code which sends
directory information to the client is moved into directory_print.c.
Diffstat (limited to '')
-rw-r--r-- | src/directory.c | 106 |
1 files changed, 3 insertions, 103 deletions
diff --git a/src/directory.c b/src/directory.c index 3bafacf7c..7a602c9a9 100644 --- a/src/directory.c +++ b/src/directory.c @@ -17,16 +17,12 @@ */ #include "directory.h" -#include "database.h" -#include "song.h" -#include "log.h" -#include "path.h" #include "utils.h" -#include "client.h" -#include "song_print.h" -#include "song_save.h" #include "dirvec.h" +#include <assert.h> +#include <string.h> + struct directory * directory_new(const char *dirname, struct directory *parent) { @@ -101,102 +97,6 @@ directory_get_directory(struct directory *directory, const char *name) return found; } -static int -dirvec_print(struct client *client, const struct dirvec *dv) -{ - size_t i; - - for (i = 0; i < dv->nr; ++i) { - client_printf(client, DIRECTORY_DIR "%s\n", - directory_get_path(dv->base[i])); - } - - return 0; -} - -int -directory_print(struct client *client, const struct directory *directory) -{ - dirvec_print(client, &directory->children); - songvec_print(client, &directory->songs); - - return 0; -} - -/* TODO error checking */ -int -directory_save(FILE *fp, struct directory *directory) -{ - struct dirvec *children = &directory->children; - size_t i; - int retv; - - if (!isRootDirectory(directory->path)) { - retv = fprintf(fp, "%s%s\n", DIRECTORY_BEGIN, - directory_get_path(directory)); - if (retv < 0) - return -1; - } - - for (i = 0; i < children->nr; ++i) { - struct directory *cur = children->base[i]; - const char *base = mpd_basename(cur->path); - - retv = fprintf(fp, DIRECTORY_DIR "%s\n", base); - if (retv < 0) - return -1; - if (directory_save(fp, cur) < 0) - return -1; - } - - songvec_save(fp, &directory->songs); - - if (!isRootDirectory(directory->path) && - fprintf(fp, DIRECTORY_END "%s\n", - directory_get_path(directory)) < 0) - return -1; - return 0; -} - -void -directory_load(FILE *fp, struct directory *directory) -{ - char buffer[MPD_PATH_MAX * 2]; - int bufferSize = MPD_PATH_MAX * 2; - char key[MPD_PATH_MAX * 2]; - char *name; - - while (myFgets(buffer, bufferSize, fp) - && prefixcmp(buffer, DIRECTORY_END)) { - if (!prefixcmp(buffer, DIRECTORY_DIR)) { - struct directory *subdir; - - strcpy(key, &(buffer[strlen(DIRECTORY_DIR)])); - if (!myFgets(buffer, bufferSize, fp)) - FATAL("Error reading db, fgets\n"); - /* for compatibility with db's prior to 0.11 */ - if (!prefixcmp(buffer, DIRECTORY_MTIME)) { - if (!myFgets(buffer, bufferSize, fp)) - FATAL("Error reading db, fgets\n"); - } - if (prefixcmp(buffer, DIRECTORY_BEGIN)) - FATAL("Error reading db at line: %s\n", buffer); - name = &(buffer[strlen(DIRECTORY_BEGIN)]); - if ((subdir = db_get_directory(name))) { - assert(subdir->parent == directory); - } else { - subdir = directory_new(name, directory); - dirvec_add(&directory->children, subdir); - } - directory_load(fp, subdir); - } else if (!prefixcmp(buffer, SONG_BEGIN)) { - readSongInfoIntoList(fp, &directory->songs, directory); - } else { - FATAL("Unknown line in db: %s\n", buffer); - } - } -} - void directory_sort(struct directory *directory) { |