aboutsummaryrefslogtreecommitdiffstats
path: root/src/dbUtils.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge release 0.15.8 from branch 'v0.15.xMax Kellermann2010-01-181-1/+4
|\ | | | | | | | | | | | | | | | | Conflicts: Makefile.am NEWS configure.ac src/decoder/ffmpeg_decoder_plugin.c src/decoder_thread.c
| * dbUtils: return empty tag value only if no value was foundMax Kellermann2010-01-021-1/+4
| | | | | | | | | | | | | | | | This fixes a regression in the patch "return multiple tag values per song": even when the song has values for the specified tag type, the empty string gets added to the set, because the "return" was removed. This patch adds a flag which remembers whether at least one value was found.
* | Update copyright notices.Avuton Olrich2009-12-311-1/+1
| |
* | Merged release 0.15.7 from branch 'v0.15.x'Max Kellermann2009-12-271-1/+0
|\| | | | | | | | | | | | | Conflicts: NEWS configure.ac src/decoder_api.c
| * dbUtils: return multiple tag values per songMax Kellermann2009-12-271-1/+0
| | | | | | | | | | | | When collecting tag values for the result set, add all of a song's tag values of the searched type. This affects the "list" command. Previously, "list" only considered the first tag value of a song.
* | song: added function song_get_duration()Max Kellermann2009-12-261-2/+1
| |
* | include config.h in all sourcesMax Kellermann2009-11-121-0/+1
| | | | | | | | | | | | After we've been hit by Large File Support problems several times in the past week (which only occur on 32 bit platforms, which I don't have), this is yet another attempt to fix the issue.
* | song: renamed attribute "url" to "uri"Max Kellermann2009-10-131-2/+2
| |
* | command: add "findadd" command.Anton Khirnov2009-08-251-0/+22
| |
* | playlist: no CamelCaseMax Kellermann2009-07-141-1/+1
|/
* dbUtils: removed printSavedMemoryFromFilenames()Max Kellermann2009-03-151-35/+0
| | | | The function is unused.
* all: Update copyright header.Avuton Olrich2009-03-131-6/+7
| | | | | | | | This updates the copyright header to all be the same, which is pretty much an update of where to mail request for a copy of the GPL and the years of the MPD project. This also puts all committers under 'The Music Player Project' umbrella. These entries should go individually in the AUTHORS file, for consistancy.
* tag: no CamelCaseMax Kellermann2009-02-271-3/+3
| | | | Renamed numOfItems to num_items.
* playlist: renamed global "playlist" variable to "g_playlist"Max Kellermann2009-02-041-1/+1
| | | | | | | Export the "g_playlist" variable, and pass it to all playlist functions. This way, we can split playlist.c easier into separate parts. The code which initializes the singleton variable is moved to playlist_global.c.
* use g_free() instead of free()Max Kellermann2009-01-251-1/+1
| | | | | | On some platforms, g_free() must be used for memory allocated by GLib. This patch intends to correct a lot of occurrences, but is probably not complete.
* locate: added locate_item_list_casefold()Max Kellermann2009-01-241-6/+2
| | | | | Merged casefolding code from two locations into this one library function.
* queue_print, dbUtils: use struct locate_item_listMax Kellermann2009-01-241-39/+21
| | | | | Changed the function prototypes to get locate_item_list objects instead of num_items/items.
* locate: added struct locate_item_listMax Kellermann2009-01-241-5/+6
| | | | | Instead of passing two parameters around (number of items, array of items), combine both in a variable size struct.
* locate: no CamelCaseMax Kellermann2009-01-241-7/+7
| | | | Renamed functions and variables.
* locate: renamed LocateTagItem to "struct locate_item"Max Kellermann2009-01-241-14/+18
| | | | No CamelCase and no typedefs.
* locate: use const pointersMax Kellermann2009-01-221-20/+13
| | | | Pass const pointers where no writes are performed.
* stats: use one db_walk() to obtain statsMax Kellermann2009-01-181-41/+0
| | | | | Don't use dbUtils.h functions. This reduces 4 full database walks to just one.
* directory: added directory_is_root()Max Kellermann2009-01-041-3/+4
| | | | | directory_is_root() is cheaper than isRootDirectory(directory_get_path()).
* dbUtils: use GLib instead of utils.hMax Kellermann2009-01-031-3/+4
|
* dbUtils.c: replaced mpd_unused by G_GNUC_UNUSEDThomas Jansen2008-11-241-2/+2
|
* stored_playlist: no CamelCaseMax Kellermann2008-10-221-1/+1
| | | | Renamed all public functions, prefix is "spl_".
* renamed storedPlaylist.c to stored_playlist.cMax Kellermann2008-10-221-1/+1
| | | | No CamelCase in file names.
* locate: use g_utf8_casefold() instead of string_toupper()Max Kellermann2008-10-151-2/+4
| | | | | | string_toupper() and strDupToUpper() were not able to deal with character sets other than US-ASCII. Use GLib's g_utf8_casefold() for strings.
* directory: fix update in root directoryMax Kellermann2008-10-081-2/+2
| | | | | | | Commit 0bfe7802 broke update for new files in the root directory, because music_root->path was an empty string and not NULL. There were some NULL tests missing. Change them to !isRootDirectory(path) instead of path!=NULL.
* directory: eliminate CamelCaseMax Kellermann2008-10-081-2/+2
| | | | CamelCase is ugly, rename the functions.
* database: renamed functions, "db_" prefix and no CamelCaseMax Kellermann2008-10-081-15/+13
| | | | Yet another CamelCase removal patch.
* directory: moved code to database.cMax Kellermann2008-10-081-0/+1
| | | | | | Taming the directory.c monster, part II: move the database management stuff to database. directory.c should only contain code which works on directory objects.
* song: converted typedef Song to struct songMax Kellermann2008-10-081-12/+23
| | | | Again, a data type which can be forward-declared.
* directory: converted typedef Directory to struct directoryMax Kellermann2008-10-081-6/+8
| | | | | The struct can be forward-declared by other headers, which relaxes the header dependencies.
* dbUtils/directory: traverseAllIn forEachSong returns -1 on errorEric Wong2008-10-071-2/+2
| | | | Being consistent with most UNIX functions...
* song: replace printSong* with song_print_*Eric Wong2008-10-071-6/+6
| | | | | | This make argument order more consistent for iterators. Additionally, these now return ssize_t results for error checking.
* Switch to C99 types (retaining compat with old compilers)Eric Wong2008-09-291-1/+1
| | | | | | | | | | | | | | | Seeing the "mpd_" prefix _everywhere_ is mind-numbing as the mind needs to retrain itself to skip over the first 4 tokens of a type to get to its meaning. So avoid having extra characters on my terminal to make it easier to follow code at 2:30 am in the morning. Please report any new issues you may come across on Free toolchains. I realize how difficult it can be to build/maintain cross-compiling toolchains and I have no intention of forcing people to upgrade their toolchains to build mpd. Tested with gcc 2.95.4 and and gcc 4.3.1 on x86-32.
* allow searching for albums with an empty tagEric Wong2008-09-291-0/+2
| | | | | | | | | | | | | | | | | | | | tfing wrote: > I have quite some files with an empty album tag as they do not come > from a particular album. > > If I want to look for those files and browse them, this happens: > :: nc localhost 6600 > OK MPD 0.12.0 > find album "" > ACK [2@0] {find} too few arguments for "find" > > I'd like to be able to browse those files in a client like gmpc. > So these 2 items would have to be developed: > - list album should report that some files have an empty tag > - it should be possible to search for an empty tag with the find command Patch-by: Marc Pavot ref: http://musicpd.org/mantis/view.php?id=464
* Replace SongList with struct songvecEric Wong2008-09-231-2/+2
| | | | | | | Our linked-list implementation is wasteful and the SongList isn't modified enough to benefit from being a linked list. So use a more compact array of song pointers which saves ~200K on a library with ~9K songs (on x86-32).
* use strset.h instead of tagTracker.hMax Kellermann2008-09-081-6/+17
| | | | | | | With a large music database, the linear string collection in tagTracker.c becomes very slow. We implemented that in a quick'n'dirty fashion when we removed tree.c, and now we rewrite it using the fast hashed string set.
* tag: don't pass "fd" to printVisitedInTagTracker()Max Kellermann2008-09-071-1/+1
| | | | Pass the client struct instead of the raw file descriptor.
* pass "struct client" to dbUtils.c, song.c, tag_print.cMax Kellermann2008-09-071-34/+33
| | | | | | Don't pass the raw file descriptor around. This migration patch is rather large, because all of the sources have inter dependencies - we have to change all of them at the same time.
* directory: don't pass fd to traverseAllIn()Max Kellermann2008-09-071-15/+15
| | | | | | | | This patch continues the work of the previous patch: don't pass a file descriptor at all to traverseAllIn(). Since this fd was only used to report "directory not found" errors, we can easily move that check to the caller. This is a great relief, since it removes the dependency on a client connection from a lot of enumeration functions.
* directory: don't pass fd to traverseAllIn() callbacksMax Kellermann2008-09-071-36/+67
| | | | | | | | | | Database traversal should be generic, and not bound to a client connection. This is the first step: no file descriptor for the callback functions forEachSong() and forEachDir(). If a callback needs the file descriptor, it has to be passed in the void*data pointer somehow; some callbacks might need a new struct for passing more than one parameter. This might look a bit cumbersome right now, but our goal is to have a clean API.
* playlist: don't pass "fd" to storedPlaylist.c functionsMax Kellermann2008-09-071-4/+3
| | | | | Return an "enum playlist_result" value instead of calling commandError() in storedPlaylist.c.
* playlist: don't pass "fd" to playlist.c functionsMax Kellermann2008-09-071-2/+2
| | | | | | The playlist library shouldn't talk to the client if possible. Introduce the "enum playlist_result" type which the caller (i.e. command.c) may use to generate an error message.
* song: moved code to song_print.c, song_save.cMax Kellermann2008-09-071-0/+1
| | | | | | | Move everything which dumps song information (via tag_print.c) to a separate source file. song_print.c gets code which writes song data to the client; song_save.c is responsible for serializing songs from the tag cache.
* dbUtils, playlist, directory: pass constant pointersMax Kellermann2008-09-061-9/+10
| | | | The usual bunch of const pointer conversions.
* tag: converted MpdTag.items to a pointer listMax Kellermann2008-08-291-2/+2
| | | | | | This prepares the following patches, which aim to reduce MPD's memory usage: we plan to share tag_item instances, instead of just their values.
* tag: renamed MpdTag and MpdTagItem to struct tag, struct mpd_tag_itemMax Kellermann2008-08-291-1/+1
| | | | | Getting rid of CamelCase; not having typedefs also allows us to forward-declare the structures.