db/simple: use StringAfterPrefix() instead of StringStartsWith()
This commit is contained in:
parent
a944927b56
commit
c513478c31
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue