db/simple: use StringAfterPrefix() instead of StringStartsWith()

This commit is contained in:
Max Kellermann 2015-11-11 15:27:56 +01:00
parent a944927b56
commit c513478c31
2 changed files with 20 additions and 21 deletions

View File

@ -86,8 +86,10 @@ db_load_internal(TextFile &file, Directory &music_root, Error &error)
while ((line = file.ReadLine()) != nullptr && while ((line = file.ReadLine()) != nullptr &&
strcmp(line, DIRECTORY_INFO_END) != 0) { strcmp(line, DIRECTORY_INFO_END) != 0) {
if (StringStartsWith(line, DB_FORMAT_PREFIX)) { const char *p;
format = atoi(line + sizeof(DB_FORMAT_PREFIX) - 1);
if ((p = StringAfterPrefix(line, DB_FORMAT_PREFIX))) {
format = atoi(p);
} else if (StringStartsWith(line, DIRECTORY_MPD_VERSION)) { } else if (StringStartsWith(line, DIRECTORY_MPD_VERSION)) {
if (found_version) { if (found_version) {
error.Set(db_domain, "Duplicate version line"); error.Set(db_domain, "Duplicate version line");
@ -95,9 +97,7 @@ db_load_internal(TextFile &file, Directory &music_root, Error &error)
} }
found_version = true; found_version = true;
} else if (StringStartsWith(line, DIRECTORY_FS_CHARSET)) { } else if ((p = StringAfterPrefix(line, DIRECTORY_FS_CHARSET))) {
const char *new_charset;
if (found_charset) { if (found_charset) {
error.Set(db_domain, "Duplicate charset line"); error.Set(db_domain, "Duplicate charset line");
return false; return false;
@ -105,7 +105,7 @@ db_load_internal(TextFile &file, Directory &music_root, Error &error)
found_charset = true; found_charset = true;
new_charset = line + sizeof(DIRECTORY_FS_CHARSET) - 1; const char *new_charset = p;
const char *const old_charset = GetFSCharset(); const char *const old_charset = GetFSCharset();
if (*old_charset != 0 if (*old_charset != 0
&& strcmp(new_charset, old_charset) != 0) { && strcmp(new_charset, old_charset) != 0) {
@ -116,8 +116,8 @@ db_load_internal(TextFile &file, Directory &music_root, Error &error)
new_charset, old_charset); new_charset, old_charset);
return false; return false;
} }
} else if (StringStartsWith(line, DB_TAG_PREFIX)) { } else if ((p = StringAfterPrefix(line, DB_TAG_PREFIX))) {
const char *name = line + sizeof(DB_TAG_PREFIX) - 1; const char *name = p;
TagType tag = tag_name_parse(name); TagType tag = tag_name_parse(name);
if (tag == TAG_NUM_OF_ITEM_TYPES) { if (tag == TAG_NUM_OF_ITEM_TYPES) {
error.Format(db_domain, error.Format(db_domain,

View File

@ -107,12 +107,11 @@ directory_save(BufferedOutputStream &os, const Directory &directory)
static bool static bool
ParseLine(Directory &directory, const char *line) ParseLine(Directory &directory, const char *line)
{ {
if (StringStartsWith(line, DIRECTORY_MTIME)) { const char *p;
directory.mtime = if ((p = StringAfterPrefix(line, DIRECTORY_MTIME))) {
ParseUint64(line + sizeof(DIRECTORY_MTIME) - 1); directory.mtime = ParseUint64(p);
} else if (StringStartsWith(line, DIRECTORY_TYPE)) { } else if ((p = StringAfterPrefix(line, DIRECTORY_TYPE))) {
directory.device = directory.device = ParseTypeString(p);
ParseTypeString(line + sizeof(DIRECTORY_TYPE) - 1);
} else } else
return false; return false;
@ -168,15 +167,15 @@ directory_load(TextFile &file, Directory &directory, Error &error)
while ((line = file.ReadLine()) != nullptr && while ((line = file.ReadLine()) != nullptr &&
!StringStartsWith(line, DIRECTORY_END)) { !StringStartsWith(line, DIRECTORY_END)) {
if (StringStartsWith(line, DIRECTORY_DIR)) { const char *p;
if ((p = StringAfterPrefix(line, DIRECTORY_DIR))) {
Directory *subdir = Directory *subdir =
directory_load_subdir(file, directory, directory_load_subdir(file, directory,
line + sizeof(DIRECTORY_DIR) - 1, p, error);
error);
if (subdir == nullptr) if (subdir == nullptr)
return false; return false;
} else if (StringStartsWith(line, SONG_BEGIN)) { } else if ((p = StringAfterPrefix(line, SONG_BEGIN))) {
const char *name = line + sizeof(SONG_BEGIN) - 1; const char *name = p;
if (directory.FindSong(name) != nullptr) { if (directory.FindSong(name) != nullptr) {
error.Format(directory_domain, error.Format(directory_domain,
@ -191,8 +190,8 @@ directory_load(TextFile &file, Directory &directory, Error &error)
directory.AddSong(Song::NewFrom(std::move(*song), directory.AddSong(Song::NewFrom(std::move(*song),
directory)); directory));
delete song; delete song;
} else if (StringStartsWith(line, PLAYLIST_META_BEGIN)) { } else if ((p = StringAfterPrefix(line, PLAYLIST_META_BEGIN))) {
const char *name = line + sizeof(PLAYLIST_META_BEGIN) - 1; const char *name = p;
if (!playlist_metadata_load(file, directory.playlists, if (!playlist_metadata_load(file, directory.playlists,
name, error)) name, error))
return false; return false;