aboutsummaryrefslogtreecommitdiffstats
path: root/src/UpdateContainer.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-01-24 00:24:43 +0100
committerMax Kellermann <max@duempel.org>2014-01-24 00:24:43 +0100
commit08296cd66d0ef4729767d97420fab96278a9af17 (patch)
tree16d4bfe7d04899ae9cbe3de82c486772effb5dd8 /src/UpdateContainer.cxx
parent197b503f3ecbf68191b37a7c5fb9c25e975059ce (diff)
downloadmpd-08296cd66d0ef4729767d97420fab96278a9af17.tar.gz
mpd-08296cd66d0ef4729767d97420fab96278a9af17.tar.xz
mpd-08296cd66d0ef4729767d97420fab96278a9af17.zip
Update*: move to update/
Diffstat (limited to 'src/UpdateContainer.cxx')
-rw-r--r--src/UpdateContainer.cxx136
1 files changed, 0 insertions, 136 deletions
diff --git a/src/UpdateContainer.cxx b/src/UpdateContainer.cxx
deleted file mode 100644
index 0417aa999..000000000
--- a/src/UpdateContainer.cxx
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2003-2014 The Music Player Daemon Project
- * http://www.musicpd.org
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h" /* must be first for large file support */
-#include "UpdateContainer.hxx"
-#include "UpdateInternal.hxx"
-#include "UpdateDatabase.hxx"
-#include "UpdateDomain.hxx"
-#include "DatabaseLock.hxx"
-#include "Directory.hxx"
-#include "Song.hxx"
-#include "decoder/DecoderPlugin.hxx"
-#include "decoder/DecoderList.hxx"
-#include "Mapper.hxx"
-#include "fs/AllocatedPath.hxx"
-#include "tag/TagHandler.hxx"
-#include "tag/TagBuilder.hxx"
-#include "Log.hxx"
-
-#include <glib.h>
-
-/**
- * Create the specified directory object if it does not exist already
- * or if the #stat object indicates that it has been modified since
- * the last update. Returns nullptr when it exists already and is
- * unmodified.
- *
- * The caller must lock the database.
- */
-static Directory *
-make_directory_if_modified(Directory &parent, const char *name,
- const struct stat *st)
-{
- Directory *directory = parent.FindChild(name);
-
- // directory exists already
- if (directory != nullptr) {
- if (directory->mtime == st->st_mtime && !walk_discard) {
- /* not modified */
- return nullptr;
- }
-
- delete_directory(directory);
- modified = true;
- }
-
- directory = parent.MakeChild(name);
- directory->mtime = st->st_mtime;
- return directory;
-}
-
-static bool
-SupportsContainerSuffix(const DecoderPlugin &plugin, const char *suffix)
-{
- return plugin.container_scan != nullptr &&
- plugin.SupportsSuffix(suffix);
-}
-
-bool
-update_container_file(Directory &directory,
- const char *name,
- const struct stat *st,
- const char *suffix)
-{
- const DecoderPlugin *_plugin = decoder_plugins_find([suffix](const DecoderPlugin &plugin){
- return SupportsContainerSuffix(plugin, suffix);
- });
- if (_plugin == nullptr)
- return false;
- const DecoderPlugin &plugin = *_plugin;
-
- db_lock();
- Directory *contdir = make_directory_if_modified(directory, name, st);
- if (contdir == nullptr) {
- /* not modified */
- db_unlock();
- return true;
- }
-
- contdir->device = DEVICE_CONTAINER;
- db_unlock();
-
- const auto pathname = map_directory_child_fs(directory, name);
-
- char *vtrack;
- unsigned int tnum = 0;
- TagBuilder tag_builder;
- while ((vtrack = plugin.container_scan(pathname.c_str(), ++tnum)) != nullptr) {
- Song *song = Song::NewFile(vtrack, *contdir);
-
- // shouldn't be necessary but it's there..
- song->mtime = st->st_mtime;
-
- const auto child_path_fs =
- map_directory_child_fs(*contdir, vtrack);
-
- plugin.ScanFile(child_path_fs.c_str(),
- add_tag_handler, &tag_builder);
-
- tag_builder.Commit(song->tag);
-
- db_lock();
- contdir->AddSong(song);
- db_unlock();
-
- modified = true;
-
- FormatDefault(update_domain, "added %s/%s",
- directory.GetPath(), vtrack);
- g_free(vtrack);
- }
-
- if (tnum == 1) {
- db_lock();
- delete_directory(contdir);
- db_unlock();
- return false;
- } else
- return true;
-}