aboutsummaryrefslogtreecommitdiffstats
path: root/src/update.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-01-04directory: added directory_is_root()Max Kellermann1-1/+1
directory_is_root() is cheaper than isRootDirectory(directory_get_path()).
2009-01-04ls: renamed functions, no CamelCaseMax Kellermann1-1/+1
2009-01-04update: removed struct delete_dataMax Kellermann1-9/+3
The struct delete_data has only one member left and can be eliminated.
2009-01-04ls: removed hasMusicSuffix() and get_archive_by_suffix()Max Kellermann1-2/+8
Determine the suffix manually, and use decoder_plugin_from_suffix() and archive_plugin_from_suffix() instead. This way, song_file_update_inarchive() can be optimized: it does not have to translate its path.
2009-01-04update: moved code to update_regular_file()Max Kellermann1-26/+35
2009-01-04update: moved code to directory_exists(), fix typoMax Kellermann1-9/+18
Reverse the condition: delete directories which don't exist anymore. This typo caused a slowdown during partial database update.
2009-01-03update: don't check for symlinks on WIN32Max Kellermann1-0/+15
WIN32 does have some kind of symbolic links (e.g. in NTFS), but the readlink() function is not available. Disable symlink checking for now.
2009-01-03event_pipe: moved variable "main_task" to main.cMax Kellermann1-0/+1
2009-01-02update: use GLib instead of utils.hMax Kellermann1-4/+5
2009-01-02mapper: allocate the result of map_directory_child_fs(), map_song_fs()Max Kellermann1-14/+18
Don't use fixed stack buffers.
2009-01-02mapper: allocate the result of map_uri_fs(), map_directory_fs()Max Kellermann1-10/+18
Don't use fixed stack buffers.
2009-01-02update: use g_file_test() instead of stat()Max Kellermann1-3/+2
If we want to check whether a file is a directory, use GLib's g_file_test() instead of stat().
2009-01-01event_pipe: added pipe_event enum and callbacksMax Kellermann1-3/+6
Make the event_pipe (formerly main_notify) send/receive a set of events, with a callback for each one. The default event PIPE_EVENT_SIGNAL does not have a callback. It is still there for waking up the main thread, when it is waiting for the player thread.
2009-01-01event_pipe: renamed functions from main_notify_* to event_pipe_*Max Kellermann1-2/+2
Continuing the previous patch.
2009-01-01main_notify: renamed source to event_pipe.cMax Kellermann1-1/+1
We are going to migrate away from the concept of notifying the main thread. There should be events sent to it instead. This patch starts a series to implement that.
2008-12-29update: use GLib loggingMax Kellermann1-18/+21
2008-12-29removed os_compat.hMax Kellermann1-0/+7
Only include headers which are really needed. os_compat.h aimed to make MPD easily portable, but was never actually made portable.
2008-12-29update: fixing empty filenames in archivesViliam Mateicka1-0/+4
2008-12-28update & main_notify: migrate from pthread to glib threadsThomas Jansen1-10/+11
2008-12-27disable archive API without pluginsMax Kellermann1-0/+7
When there are no archive plugins, we do not need the archive API at all. Drop all its overhead.
2008-12-16update: adding archive updating related codeViliam Mateicka1-1/+64
2008-12-08update: default to follow all symlinksAvuton Olrich1-1/+1
MPD 0.13 and older followed all symbolic links. Although this can be a security problem (as it has always been), 0.14 should offer the same default behaviour as 0.13.
2008-11-28update: added options which control symlink behaviourRaphaƫl Rigo1-7/+33
The configuration options "follow_outside_symlinks" and "follow_inside_symlinks" let the user control whether MPD should follow symbolic links in the music directory. [mk: converted variables to "bool"; moved configuration to update_global_init()]
2008-11-27update: added update_global_init() and update_global_finish()Max Kellermann1-0/+8
Those two functions are called when MPD starts and exits. It allows the update library to perform global initialization and deinitialization. The implementations are currently empty.
2008-11-24update.c: replaced mpd_unused by G_GNUC_UNUSEDThomas Jansen1-1/+1
2008-11-22update: fixed shadow warning on "basename"Max Kellermann1-6/+6
Renamed the local variable "basename", which shadows the POSIX function basename().
2008-11-20update: pass UTF-8 path to skip_symlink()Konstantin Sobolev1-3/+2
skip_symlinks() expects an UTF-8 encoded file name, but updateDirectory() passed ent->d_name (in file system encoding) to it. Convert it to UTF-8 first.
2008-10-31update: check return valuesMax Kellermann1-2/+6
Nearly all mapper functions can fail and will then return NULL. Add checks to all callers.
2008-10-20path: replaced mpd_basename() with g_path_get_basename()Max Kellermann1-5/+16
GLib's g_path_get_basename() is much more reliable than mpd_basename(). The latter could be tricked into an assertion failure.
2008-10-15update: don't skip hidden filesMax Kellermann1-3/+5
Skip only the special directory entries "." and "..", don't skip all other "hidden" files.
2008-10-14command: added command "idle"Max Kellermann1-1/+4
"idle" waits until something noteworthy happens on the server, e.g. song change, playlist modified, database updated. This allows clients to keep up to date without polling.
2008-10-14update: don't follow relative symlinksMax Kellermann1-1/+44
Don't follow relative symlinks which point into the music directory. This allows you to organize music with symbolic links, without MPD managing separate copies of each song.
2008-10-14mapper: new song-to-filesystem mapper libraryMax Kellermann1-23/+43
The mapper library maps directory and song objects to file system paths. With this central library, the code mixture in path.c should be cleaned up, and we will be able to add neat features like aliasing.
2008-10-13update: always look up parent directory in updatePath()Max Kellermann1-20/+10
By always creating the parent directory, we can use delete_name_in() without further lookups. The parents which may non exist will be pruned later. An update request for a non-existing or empty directory should be quite unusual, so this doesn't add any measurable overhead.
2008-10-13update: pass base file name to updateInDirectory()Max Kellermann1-9/+24
In order to optimize buffer usage, pass only the base file name to updateInDirectory(). This way, updateInDirectory() may choose when to allocate a larger buffer for the full path.
2008-10-13update: moved code to make_subdir()Max Kellermann1-4/+13
2008-10-13update: added delete_name_in()Max Kellermann1-1/+18
delete_name_in() is similar to delete_path(), but it does not need to look up the parent directory.
2008-10-13update: allow music_root updates to be queuedEric Wong1-3/+2
Previously only updates with subdirectories being specified could be queued. No harm in queueing full updates.
2008-10-09update: replaced update_return with global "modified" flagMax Kellermann1-65/+41
There is only once update thread at a time. Make the "modified" flag global and remove the return values of most functions. Propagating an error is only useful for updateDirectory(), since updateInDirectory() will delete failed subdirectories.
2008-10-09update: make the variable "progress" staticMax Kellermann1-1/+1
2008-10-09update: don't print debug message when song was not modifiedMax Kellermann1-4/+5
When a song file was not modified, MPD printed the debug message "not a directory or music", because the first "if" branch did not return.
2008-10-09update: fix memory leak in directory_update_init()Max Kellermann1-1/+4
When the update queue is full, directory_update_init() did not free the path argument.
2008-10-09update: make the job id unsignedMax Kellermann1-5/+7
Since the return value cannot be -1 anymore, we can make it unsigned.
2008-10-09update: job ID must be positiveMax Kellermann1-2/+2
The documentation for directory_update_init() was incorrect: a job ID must be positive, not non-negative. If the update queue is full and no job was created, it makes more sense to return 0 instead of -1, because it is more consistent with the return value of isUpdatingDB().
2008-10-09update: check progress!=IDLE in reap_update_task()Max Kellermann1-0/+3
When the update task is idle, there is no need to check for deleted songs. Return early from reap_update_task().
2008-10-09update: fixed stack corruption due to pthread_join() callMax Kellermann1-1/+3
pthread_join() expects a "pointer to a pointer" parameter, but it got a "pointer to an enum". On AMD64, an enum is smaller than a pointer, leading to a buffer overflow.
2008-10-09updated: always call removeDeletedFromDirectory()Max Kellermann1-3/+1
Removed the local variable "was_empty": don't remember if the directory is new. Always call removeDeletedFromDirectory().
2008-10-09update: eliminated addSubDirectoryToDirectory()Max Kellermann1-27/+8
In updateInDirectory(), add new directories immediately and delete them when they turn out to be empty. This simplifies the code and allows us to eliminate addSubDirectoryToDirectory().
2008-10-09update: make the "song" variable more localMax Kellermann1-3/+2
2008-10-09update: do the recursive directory check only onceMax Kellermann1-8/+6
The recursive checks were performed in several functions, and sometimes a directory was checked twice.