aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-10-08 10:49:11 +0200
committerMax Kellermann <max@duempel.org>2008-10-08 10:49:11 +0200
commitd562ba5fbbe117585eaade40a8e9c6ef1bf7ca1f (patch)
tree1e82f7b4854c5d15c4ab59c48120da02e4b41be9 /src
parent25f67da58c671885c86ecfd991f28ec82b6ce1e2 (diff)
downloadmpd-d562ba5fbbe117585eaade40a8e9c6ef1bf7ca1f.tar.gz
mpd-d562ba5fbbe117585eaade40a8e9c6ef1bf7ca1f.tar.xz
mpd-d562ba5fbbe117585eaade40a8e9c6ef1bf7ca1f.zip
song: converted typedef Song to struct song
Again, a data type which can be forward-declared.
Diffstat (limited to '')
-rw-r--r--src/dbUtils.c35
-rw-r--r--src/decoder_api.c1
-rw-r--r--src/decoder_control.c6
-rw-r--r--src/decoder_control.h14
-rw-r--r--src/decoder_thread.c1
-rw-r--r--src/directory.c13
-rw-r--r--src/directory.h8
-rw-r--r--src/locate.c14
-rw-r--r--src/locate.h11
-rw-r--r--src/player_control.c16
-rw-r--r--src/player_control.h17
-rw-r--r--src/player_thread.c1
-rw-r--r--src/playlist.c23
-rw-r--r--src/playlist.h12
-rw-r--r--src/song.c18
-rw-r--r--src/song.h21
-rw-r--r--src/song_print.c9
-rw-r--r--src/song_print.h10
-rw-r--r--src/song_save.c13
-rw-r--r--src/song_save.h3
-rw-r--r--src/songvec.c25
-rw-r--r--src/songvec.h13
-rw-r--r--src/stats.c4
-rw-r--r--src/storedPlaylist.c5
-rw-r--r--src/storedPlaylist.h5
-rw-r--r--src/update.c16
26 files changed, 196 insertions, 118 deletions
diff --git a/src/dbUtils.c b/src/dbUtils.c
index fb32769ae..301aeba83 100644
--- a/src/dbUtils.c
+++ b/src/dbUtils.c
@@ -66,7 +66,8 @@ printDirectoryInDirectory(struct directory *directory, void *data)
return 0;
}
-static int printSongInDirectory(Song * song, mpd_unused void *data)
+static int
+printSongInDirectory(struct song *song, mpd_unused void *data)
{
struct client *client = data;
song_print_url(client, song);
@@ -78,7 +79,8 @@ struct search_data {
LocateTagItemArray array;
};
-static int searchInDirectory(Song * song, void *_data)
+static int
+searchInDirectory(struct song *song, void *_data)
{
struct search_data *data = _data;
LocateTagItemArray *array = &data->array;
@@ -119,7 +121,8 @@ int searchForSongsIn(struct client *client, const char *name,
return ret;
}
-static int findInDirectory(Song * song, void *_data)
+static int
+findInDirectory(struct song *song, void *_data)
{
struct search_data *data = _data;
LocateTagItemArray *array = &data->array;
@@ -148,7 +151,8 @@ static void printSearchStats(struct client *client, SearchStats *stats)
client_printf(client, "playtime: %li\n", stats->playTime);
}
-static int searchStatsInDirectory(Song * song, void *data)
+static int
+searchStatsInDirectory(struct song *song, void *data)
{
SearchStats *stats = data;
@@ -186,7 +190,8 @@ int printAllIn(struct client *client, const char *name)
printDirectoryInDirectory, client);
}
-static int directoryAddSongToPlaylist(Song * song, mpd_unused void *data)
+static int
+directoryAddSongToPlaylist(struct song *song, mpd_unused void *data)
{
return addSongToPlaylist(song, NULL);
}
@@ -195,7 +200,8 @@ struct add_data {
const char *path;
};
-static int directoryAddSongToStoredPlaylist(Song *song, void *_data)
+static int
+directoryAddSongToStoredPlaylist(struct song *song, void *_data)
{
struct add_data *data = _data;
@@ -219,14 +225,16 @@ int addAllInToStoredPlaylist(const char *name, const char *utf8file)
&data);
}
-static int directoryPrintSongInfo(Song * song, void *data)
+static int
+directoryPrintSongInfo(struct song *song, void *data)
{
struct client *client = data;
song_print_info(client, song);
return 0;
}
-static int sumSongTime(Song * song, void *data)
+static int
+sumSongTime(struct song *song, void *data)
{
unsigned long *sum_time = (unsigned long *)data;
@@ -279,8 +287,9 @@ static void freeListCommandItem(ListCommandItem * item)
free(item);
}
-static void visitTag(struct client *client, struct strset *set,
- Song * song, enum tag_type tagType)
+static void
+visitTag(struct client *client, struct strset *set,
+ struct song *song, enum tag_type tagType)
{
int i;
struct tag *tag = song->tag;
@@ -308,7 +317,8 @@ struct list_tags_data {
struct strset *set;
};
-static int listUniqueTagsInDirectory(Song * song, void *_data)
+static int
+listUniqueTagsInDirectory(struct song *song, void *_data)
{
struct list_tags_data *data = _data;
ListCommandItem *item = data->item;
@@ -371,7 +381,8 @@ sumSavedFilenameMemoryInDirectory(struct directory *dir, void *data)
return 0;
}
-static int sumSavedFilenameMemoryInSong(Song * song, void *data)
+static int
+sumSavedFilenameMemoryInSong(struct song *song, void *data)
{
int *sum = data;
diff --git a/src/decoder_api.c b/src/decoder_api.c
index 52ad21e60..fdce30c20 100644
--- a/src/decoder_api.c
+++ b/src/decoder_api.c
@@ -22,6 +22,7 @@
#include "decoder_control.h"
#include "player_control.h"
#include "audio.h"
+#include "song.h"
#include "utils.h"
#include "normalize.h"
diff --git a/src/decoder_control.c b/src/decoder_control.c
index 58c4e75ee..3c83e7371 100644
--- a/src/decoder_control.c
+++ b/src/decoder_control.c
@@ -53,7 +53,8 @@ static void dc_command_async(enum decoder_command cmd)
notify_signal(&dc.notify);
}
-void dc_start(Notify *notify, Song *song)
+void
+dc_start(Notify *notify, struct song *song)
{
assert(song != NULL);
@@ -62,7 +63,8 @@ void dc_start(Notify *notify, Song *song)
dc_command(notify, DECODE_COMMAND_START);
}
-void dc_start_async(Song *song)
+void
+dc_start_async(struct song *song)
{
assert(song != NULL);
diff --git a/src/decoder_control.h b/src/decoder_control.h
index e34e9d607..f9e65bc51 100644
--- a/src/decoder_control.h
+++ b/src/decoder_control.h
@@ -21,7 +21,6 @@
#define DECODE_H
#include "decoder_api.h"
-#include "song.h"
#include "audio_format.h"
#include "notify.h"
@@ -49,8 +48,8 @@ struct decoder_control {
volatile int8_t seekable;
volatile double seekWhere;
struct audio_format audioFormat;
- Song *current_song;
- Song *volatile next_song;
+ struct song *current_song;
+ struct song *volatile next_song;
volatile float totalTime;
};
@@ -72,7 +71,8 @@ static inline int decoder_is_starting(void)
dc.state == DECODE_STATE_START;
}
-static inline Song *decoder_current_song(void)
+static inline struct song *
+decoder_current_song(void)
{
if (dc.state == DECODE_STATE_STOP ||
dc.error != DECODE_ERROR_NOERROR)
@@ -83,9 +83,11 @@ static inline Song *decoder_current_song(void)
void dc_command_wait(Notify *notify);
-void dc_start(Notify *notify, Song *song);
+void
+dc_start(Notify *notify, struct song *song);
-void dc_start_async(Song *song);
+void
+dc_start_async(struct song *song);
void dc_stop(Notify *notify);
diff --git a/src/decoder_thread.c b/src/decoder_thread.c
index eff3ca05f..c5a2794cc 100644
--- a/src/decoder_thread.c
+++ b/src/decoder_thread.c
@@ -21,6 +21,7 @@
#include "decoder_control.h"
#include "decoder_internal.h"
#include "player_control.h"
+#include "song.h"
#include "path.h"
#include "log.h"
diff --git a/src/directory.c b/src/directory.c
index 75dae22dd..5e8f89f31 100644
--- a/src/directory.c
+++ b/src/directory.c
@@ -17,7 +17,7 @@
*/
#include "directory.h"
-
+#include "song.h"
#include "conf.h"
#include "log.h"
#include "ls.h"
@@ -448,7 +448,7 @@ int readDirectoryDB(void)
static int
traverseAllInSubDirectory(struct directory * directory,
- int (*forEachSong) (Song *, void *),
+ int (*forEachSong) (struct song *, void *),
int (*forEachDir) (struct directory *, void *),
void *data)
{
@@ -474,13 +474,13 @@ traverseAllInSubDirectory(struct directory * directory,
int
traverseAllIn(const char *name,
- int (*forEachSong) (Song *, void *),
+ int (*forEachSong) (struct song *, void *),
int (*forEachDir) (struct directory *, void *), void *data)
{
struct directory *directory;
if ((directory = getDirectory(name)) == NULL) {
- Song *song;
+ struct song *song;
if ((song = getSongFromDB(name)) && forEachSong) {
return forEachSong(song, data);
}
@@ -499,9 +499,10 @@ void directory_init(void)
stats.dbPlayTime = sumSongTimesIn(NULL);
}
-Song *getSongFromDB(const char *file)
+struct song *
+getSongFromDB(const char *file)
{
- Song *song = NULL;
+ struct song *song = NULL;
struct directory *directory;
char *dir = NULL;
char *duplicated = xstrdup(file);
diff --git a/src/directory.h b/src/directory.h
index f33d854c6..c9601b91a 100644
--- a/src/directory.h
+++ b/src/directory.h
@@ -19,12 +19,13 @@
#ifndef DIRECTORY_H
#define DIRECTORY_H
-#include "song.h"
#include "songvec.h"
#include "list.h"
#include <stdbool.h>
+struct client;
+
struct dirvec {
struct directory **base;
size_t nr;
@@ -75,12 +76,13 @@ int writeDirectoryDB(void);
int readDirectoryDB(void);
-Song *getSongFromDB(const char *file);
+struct song *
+getSongFromDB(const char *file);
time_t getDbModTime(void);
int traverseAllIn(const char *name,
- int (*forEachSong) (Song *, void *),
+ int (*forEachSong) (struct song *, void *),
int (*forEachDir) (struct directory *, void *), void *data);
#define getDirectoryPath(dir) ((dir && dir->path) ? dir->path : "")
diff --git a/src/locate.c b/src/locate.c
index 1ac0fbf9a..4c3374538 100644
--- a/src/locate.c
+++ b/src/locate.c
@@ -20,6 +20,7 @@
#include "path.h"
#include "utils.h"
#include "tag.h"
+#include "song.h"
#define LOCATE_TAG_FILE_KEY "file"
#define LOCATE_TAG_FILE_KEY_OLD "filename"
@@ -122,7 +123,8 @@ void freeLocateTagItem(LocateTagItem * item)
free(item);
}
-static int strstrSearchTag(Song * song, enum tag_type type, char *str)
+static int
+strstrSearchTag(struct song *song, enum tag_type type, char *str)
{
int i;
char *duplicate;
@@ -167,7 +169,8 @@ static int strstrSearchTag(Song * song, enum tag_type type, char *str)
return ret;
}
-int strstrSearchTags(Song * song, int numItems, LocateTagItem * items)
+int
+strstrSearchTags(struct song *song, int numItems, LocateTagItem *items)
{
int i;
@@ -181,7 +184,8 @@ int strstrSearchTags(Song * song, int numItems, LocateTagItem * items)
return 1;
}
-static int tagItemFoundAndMatches(Song * song, enum tag_type type, char *str)
+static int
+tagItemFoundAndMatches(struct song *song, enum tag_type type, char *str)
{
int i;
int8_t visitedTypes[TAG_NUM_OF_ITEM_TYPES] = { 0 };
@@ -221,7 +225,9 @@ static int tagItemFoundAndMatches(Song * song, enum tag_type type, char *str)
}
-int tagItemsFoundAndMatches(Song * song, int numItems, LocateTagItem * items)
+int
+tagItemsFoundAndMatches(struct song *song, int numItems,
+ LocateTagItem * items)
{
int i;
diff --git a/src/locate.h b/src/locate.h
index 7a817828a..4fbc634b7 100644
--- a/src/locate.h
+++ b/src/locate.h
@@ -19,11 +19,13 @@
#ifndef LOCATE_H
#define LOCATE_H
-#include "song.h"
+#include <stdint.h>
#define LOCATE_TAG_FILE_TYPE TAG_NUM_OF_ITEM_TYPES+10
#define LOCATE_TAG_ANY_TYPE TAG_NUM_OF_ITEM_TYPES+20
+struct song;
+
/* struct used for search, find, list queries */
typedef struct _LocateTagItem {
int8_t tagType;
@@ -44,8 +46,11 @@ void freeLocateTagItemArray(int count, LocateTagItem * array);
void freeLocateTagItem(LocateTagItem * item);
-int strstrSearchTags(Song * song, int numItems, LocateTagItem * items);
+int
+strstrSearchTags(struct song *song, int numItems, LocateTagItem * items);
-int tagItemsFoundAndMatches(Song * song, int numItems, LocateTagItem * items);
+int
+tagItemsFoundAndMatches(struct song *song, int numItems,
+ LocateTagItem * items);
#endif
diff --git a/src/player_control.c b/src/player_control.c
index 5bc08b776..b274c29e0 100644
--- a/src/player_control.c
+++ b/src/player_control.c
@@ -20,6 +20,7 @@
#include "path.h"
#include "log.h"
#include "tag.h"
+#include "song.h"
#include "os_compat.h"
#include "main_notify.h"
@@ -43,7 +44,8 @@ void pc_deinit(void)
notify_deinit(&pc.notify);
}
-static void set_current_song(Song *song)
+static void
+set_current_song(struct song *song)
{
assert(song != NULL);
assert(song->url != NULL);
@@ -61,7 +63,8 @@ static void player_command(enum player_command cmd)
}
}
-void playerPlay(Song * song)
+void
+playerPlay(struct song *song)
{
assert(pc.queueLockState == PLAYER_QUEUE_UNLOCKED);
@@ -174,7 +177,8 @@ char *getPlayerErrorStr(void)
return *error ? error : NULL;
}
-void queueSong(Song * song)
+void
+queueSong(struct song *song)
{
assert(pc.queueState == PLAYER_QUEUE_BLANK);
@@ -208,7 +212,8 @@ void playerQueueUnlock(void)
assert(pc.queueLockState == PLAYER_QUEUE_UNLOCKED);
}
-int playerSeek(Song * song, float seek_time)
+int
+playerSeek(struct song *song, float seek_time)
{
assert(song != NULL);
@@ -265,7 +270,8 @@ int getPlayerChannels(void)
}
/* this actually creates a dupe of the current metadata */
-Song *playerCurrentDecodeSong(void)
+struct song *
+playerCurrentDecodeSong(void)
{
return NULL;
}
diff --git a/src/player_control.h b/src/player_control.h
index 375b2f3c1..fd2a5ca45 100644
--- a/src/player_control.h
+++ b/src/player_control.h
@@ -20,7 +20,6 @@
#define PLAYER_H
#include "notify.h"
-#include "song.h"
#include "os_compat.h"
enum player_state {
@@ -92,8 +91,8 @@ struct player_control {
volatile float totalTime;
volatile float elapsedTime;
volatile float fileTime;
- Song *volatile next_song;
- Song *errored_song;
+ struct song *volatile next_song;
+ struct song *errored_song;
volatile enum player_queue_state queueState;
volatile int8_t queueLockState;
volatile double seekWhere;
@@ -108,7 +107,8 @@ void pc_init(unsigned int buffered_before_play);
void pc_deinit(void);
-void playerPlay(Song * song);
+void
+playerPlay(struct song *song);
void playerSetPause(int pause_flag);
@@ -132,7 +132,8 @@ int getPlayerError(void);
void playerWait(void);
-void queueSong(Song * song);
+void
+queueSong(struct song *song);
enum player_queue_state getPlayerQueueState(void);
@@ -142,7 +143,8 @@ void playerQueueLock(void);
void playerQueueUnlock(void);
-int playerSeek(Song * song, float seek_time);
+int
+playerSeek(struct song *song, float seek_time);
void setPlayerCrossFade(float crossFadeInSeconds);
@@ -158,7 +160,8 @@ int getPlayerBits(void);
int getPlayerChannels(void);
-Song *playerCurrentDecodeSong(void);
+struct song *
+playerCurrentDecodeSong(void);
void playerInit(void);
diff --git a/src/player_thread.c b/src/player_thread.c
index 48715dd20..0c07778ed 100644
--- a/src/player_thread.c
+++ b/src/player_thread.c
@@ -25,6 +25,7 @@
#include "log.h"
#include "main_notify.h"
#include "crossfade.h"
+#include "song.h"
enum xfade_state {
XFADE_DISABLED = -1,
diff --git a/src/playlist.c b/src/playlist.c
index 96b170b0a..fe172ebbf 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -21,6 +21,7 @@
#include "command.h"
#include "ls.h"
#include "tag.h"
+#include "song.h"
#include "song_print.h"
#include "client.h"
#include "conf.h"
@@ -140,7 +141,7 @@ void initPlaylist(void)
playlist_saveAbsolutePaths =
DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS;
- playlist.songs = xmalloc(sizeof(Song *) * playlist_max_length);
+ playlist.songs = xmalloc(sizeof(struct song *) * playlist_max_length);
playlist.songMod = xmalloc(sizeof(uint32_t) * playlist_max_length);
playlist.order = xmalloc(sizeof(int) * playlist_max_length);
playlist.idToPosition = xmalloc(sizeof(int) * playlist_max_length *
@@ -452,7 +453,7 @@ enum playlist_result playlistId(struct client *client, int id)
static void swapSongs(int song1, int song2)
{
- Song *sTemp;
+ struct song *sTemp;
int iTemp;
sTemp = playlist.songs[song1];
@@ -554,7 +555,7 @@ static void clearPlayerQueue(void)
enum playlist_result addToPlaylist(const char *url, int *added_id)
{
- Song *song;
+ struct song *song;
DEBUG("add to playlist: %s\n", url);
@@ -569,7 +570,7 @@ enum playlist_result addToPlaylist(const char *url, int *added_id)
int addToStoredPlaylist(const char *url, const char *utf8file)
{
- Song *song;
+ struct song *song;
DEBUG("add to stored playlist: %s\n", url);
@@ -590,7 +591,8 @@ int addToStoredPlaylist(const char *url, const char *utf8file)
return ACK_ERROR_NO_EXIST;
}
-enum playlist_result addSongToPlaylist(Song * song, int *added_id)
+enum playlist_result
+addSongToPlaylist(struct song *song, int *added_id)
{
int id;
@@ -775,7 +777,8 @@ enum playlist_result deleteFromPlaylistById(int id)
return deleteFromPlaylist(song);
}
-void deleteASongFromPlaylist(const Song * song)
+void
+deleteASongFromPlaylist(const struct song *song)
{
int i;
@@ -877,8 +880,8 @@ enum playlist_result playPlaylistById(int id, int stopOnError)
static void syncCurrentPlayerDecodeMetadata(void)
{
- Song *songPlayer = playerCurrentDecodeSong();
- Song *song;
+ struct song *songPlayer = playerCurrentDecodeSong();
+ struct song *song;
int songNum;
char path_max_tmp[MPD_PATH_MAX];
@@ -1000,7 +1003,7 @@ void setPlaylistRepeatStatus(int status)
enum playlist_result moveSongInPlaylist(int from, int to)
{
int i;
- Song *tmpSong;
+ struct song *tmpSong;
int tmpId;
int currentSong;
@@ -1358,7 +1361,7 @@ int PlaylistInfo(struct client *client, const char *utf8file, int detail)
int wrote = 0;
if (detail) {
- Song *song = getSongFromDB(temp);
+ struct song *song = getSongFromDB(temp);
if (song) {
song_print_info(client, song);
wrote = 1;
diff --git a/src/playlist.h b/src/playlist.h
index acc44aca6..a5b340ddc 100644
--- a/src/playlist.h
+++ b/src/playlist.h
@@ -21,9 +21,13 @@
#include "locate.h"
+#include <stdio.h>
+
#define PLAYLIST_FILE_SUFFIX "m3u"
#define PLAYLIST_COMMENT '#'
+struct client;
+
enum playlist_result {
PLAYLIST_RESULT_SUCCESS,
PLAYLIST_RESULT_ERRNO,
@@ -37,7 +41,7 @@ enum playlist_result {
};
typedef struct _Playlist {
- Song **songs;
+ struct song **songs;
/* holds version a song was modified on */
uint32_t *songMod;
int *order;
@@ -71,7 +75,8 @@ enum playlist_result addToPlaylist(const char *file, int *added_id);
int addToStoredPlaylist(const char *file, const char *utf8file);
-enum playlist_result addSongToPlaylist(Song * song, int *added_id);
+enum playlist_result
+addSongToPlaylist(struct song *song, int *added_id);
void showPlaylist(struct client *client);
@@ -101,7 +106,8 @@ enum playlist_result savePlaylist(const char *utf8file);
enum playlist_result deletePlaylist(const char *utf8file);
-void deleteASongFromPlaylist(const Song * song);
+void
+deleteASongFromPlaylist(const struct song *song);
enum playlist_result moveSongInPlaylist(int from, int to);
diff --git a/src/song.c b/src/song.c
index 014490eca..c09a49cf0 100644
--- a/src/song.c
+++ b/src/song.c
@@ -28,11 +28,11 @@
#include "os_compat.h"
-Song *
+struct song *
song_alloc(const char *url, struct directory *parent)
{
size_t urllen;
- Song *song;
+ struct song *song;
assert(url);
urllen = strlen(url);
@@ -46,9 +46,10 @@ song_alloc(const char *url, struct directory *parent)
return song;
}
-Song *newSong(const char *url, struct directory *parentDir)
+struct song *
+newSong(const char *url, struct directory *parentDir)
{
- Song *song;
+ struct song *song;
assert(*url);
if (strchr(url, '\n')) {
@@ -79,14 +80,16 @@ Song *newSong(const char *url, struct directory *parentDir)
return song;
}
-void freeJustSong(Song * song)
+void
+freeJustSong(struct song *song)
{
if (song->tag)
tag_free(song->tag);
free(song);
}
-int updateSongInfo(Song * song)
+int
+updateSongInfo(struct song *song)
{
if (song_is_file(song)) {
struct decoder_plugin *plugin;
@@ -114,7 +117,8 @@ int updateSongInfo(Song * song)
return 0;
}
-char *get_song_url(char *path_max_tmp, Song *song)
+char *
+get_song_url(char *path_max_tmp, struct song *song)
{
if (!song)
return NULL;
diff --git a/src/song.h b/src/song.h
index fc50e70c1..658921324 100644
--- a/src/song.h
+++ b/src/song.h
@@ -30,21 +30,24 @@
struct client;
-typedef struct _Song {
+struct song {
struct tag *tag;
struct directory *parentDir;
time_t mtime;
char url[sizeof(size_t)];
-} Song;
+};
-Song *
+struct song *
song_alloc(const char *url, struct directory *parent);
-Song *newSong(const char *url, struct directory *parentDir);
+struct song *
+newSong(const char *url, struct directory *parentDir);
-void freeJustSong(Song *);
+void
+freeJustSong(struct song *);
-int updateSongInfo(Song * song);
+int
+updateSongInfo(struct song *song);
/*
* get_song_url - Returns a path of a song in UTF8-encoded form
@@ -52,9 +55,11 @@ int updateSongInfo(Song * song);
* buffer is assumed to be MPD_PATH_MAX or greater (including
* terminating '\0').
*/
-char *get_song_url(char *path_max_tmp, Song * song);
+char *
+get_song_url(char *path_max_tmp, struct song *song);
-static inline int song_is_file(const Song *song)
+static inline int
+song_is_file(const struct song *song)
{
return !!song->parentDir;
}
diff --git a/src/song_print.c b/src/song_print.c
index 647e6d594..cfd6a7357 100644
--- a/src/song_print.c
+++ b/src/song_print.c
@@ -17,12 +17,14 @@
*/
#include "song_print.h"
+#include "song.h"
#include "songvec.h"
#include "directory.h"
#include "tag_print.h"
#include "client.h"
-void song_print_url(struct client *client, Song * song)
+void
+song_print_url(struct client *client, struct song *song)
{
if (song->parentDir && song->parentDir->path) {
client_printf(client, "%s%s/%s\n", SONG_FILE,
@@ -32,7 +34,8 @@ void song_print_url(struct client *client, Song * song)
}
}
-int song_print_info(struct client *client, Song * song)
+int
+song_print_info(struct client *client, struct song *song)
{
song_print_url(client, song);
@@ -43,7 +46,7 @@ int song_print_info(struct client *client, Song * song)
}
static int
-song_print_info_x(Song *song, void *data)
+song_print_info_x(struct song *song, void *data)
{
struct client *client = data;
return song_print_info(client, song);
diff --git a/src/song_print.h b/src/song_print.h
index 78537f064..85fbcf036 100644
--- a/src/song_print.h
+++ b/src/song_print.h
@@ -19,14 +19,16 @@
#ifndef SONG_PRINT_H
#define SONG_PRINT_H
-#include "song.h"
-
+struct client;
+struct song;
struct songvec;
-int song_print_info(struct client *client, Song * song);
+int
+song_print_info(struct client *client, struct song *song);
int songvec_print(struct client *client, const struct songvec *sv);
-void song_print_url(struct client *client, Song * song);
+void
+song_print_url(struct client *client, struct song *song);
#endif
diff --git a/src/song_save.c b/src/song_save.c
index 14bce4ce0..00e4a8580 100644
--- a/src/song_save.c
+++ b/src/song_save.c
@@ -17,6 +17,7 @@
*/
#include "song_save.h"
+#include "song.h"
#include "tag_save.h"
#include "directory.h"
#include "path.h"
@@ -27,7 +28,8 @@
#define SONG_KEY "key: "
#define SONG_MTIME "mtime: "
-static void song_save_url(FILE *fp, Song * song)
+static void
+song_save_url(FILE *fp, struct song *song)
{
if (song->parentDir != NULL && song->parentDir->path != NULL)
fprintf(fp, SONG_FILE "%s/%s\n",
@@ -38,7 +40,7 @@ static void song_save_url(FILE *fp, Song * song)
}
static int
-song_save(Song *song, void *data)
+song_save(struct song *song, void *data)
{
FILE *fp = data;
@@ -61,9 +63,10 @@ void songvec_save(FILE *fp, struct songvec *sv)
fprintf(fp, "%s\n", SONG_END);
}
-static void insertSongIntoList(struct songvec *sv, Song *newsong)
+static void
+insertSongIntoList(struct songvec *sv, struct song *newsong)
{
- Song *existing = songvec_find(sv, newsong->url);
+ struct song *existing = songvec_find(sv, newsong->url);
if (!existing) {
songvec_add(sv, newsong);
@@ -102,7 +105,7 @@ void readSongInfoIntoList(FILE *fp, struct songvec *sv,
{
char buffer[MPD_PATH_MAX + 1024];
int bufferSize = MPD_PATH_MAX + 1024;
- Song *song = NULL;
+ struct song *song = NULL;
int itemType;
while (myFgets(buffer, bufferSize, fp) && 0 != strcmp(SONG_END, buffer)) {
diff --git a/src/song_save.h b/src/song_save.h
index f77ff8fa7..480e35ae4 100644
--- a/src/song_save.h
+++ b/src/song_save.h
@@ -19,9 +19,10 @@
#ifndef SONG_SAVE_H
#define SONG_SAVE_H
-#include "song.h"
+#include <stdio.h>
struct songvec;
+struct directory;
void songvec_save(FILE *fp, struct songvec *sv);
diff --git a/src/songvec.c b/src/songvec.c
index 08ff7f236..7181dd67e 100644
--- a/src/songvec.c
+++ b/src/songvec.c
@@ -1,4 +1,5 @@
#include "songvec.h"
+#include "song.h"
#include "utils.h"
static pthread_mutex_t nr_lock = PTHREAD_MUTEX_INITIALIZER;
@@ -6,28 +7,28 @@ static pthread_mutex_t nr_lock = PTHREAD_MUTEX_INITIALIZER;
/* Only used for sorting/searchin a songvec, not general purpose compares */
static int songvec_cmp(const void *s1, const void *s2)
{
- const Song *a = ((const Song * const *)s1)[0];
- const Song *b = ((const Song * const *)s2)[0];
+ const struct song *a = ((const struct song * const *)s1)[0];
+ const struct song *b = ((const struct song * const *)s2)[0];
return strcmp(a->url, b->url);
}
static size_t sv_size(struct songvec *sv)
{
- return sv->nr * sizeof(Song *);
+ return sv->nr * sizeof(struct song *);
}
void songvec_sort(struct songvec *sv)
{
pthread_mutex_lock(&nr_lock);
- qsort(sv->base, sv->nr, sizeof(Song *), songvec_cmp);
+ qsort(sv->base, sv->nr, sizeof(struct song *), songvec_cmp);
pthread_mutex_unlock(&nr_lock);
}
-Song *
+struct song *
songvec_find(const struct songvec *sv, const char *url)
{
int i;
- Song *ret = NULL;
+ struct song *ret = NULL;
pthread_mutex_lock(&nr_lock);
for (i = sv->nr; --i >= 0; ) {
@@ -40,7 +41,8 @@ songvec_find(const struct songvec *sv, const char *url)
return ret;
}
-int songvec_delete(struct songvec *sv, const Song *del)
+int
+songvec_delete(struct songvec *sv, const struct song *del)
{
int i;
@@ -54,7 +56,7 @@ int songvec_delete(struct songvec *sv, const Song *del)
sv->base = NULL;
} else {
memmove(&sv->base[i], &sv->base[i + 1],
- (sv->nr - i + 1) * sizeof(Song *));
+ (sv->nr - i + 1) * sizeof(struct song *));
sv->base = xrealloc(sv->base, sv_size(sv));
}
break;
@@ -64,7 +66,8 @@ int songvec_delete(struct songvec *sv, const Song *del)
return i;
}
-void songvec_add(struct songvec *sv, Song *add)
+void
+songvec_add(struct songvec *sv, struct song *add)
{
pthread_mutex_lock(&nr_lock);
++sv->nr;
@@ -86,13 +89,13 @@ void songvec_destroy(struct songvec *sv)
int
songvec_for_each(const struct songvec *sv,
- int (*fn)(Song *, void *), void *arg)
+ int (*fn)(struct song *, void *), void *arg)
{
size_t i;
pthread_mutex_lock(&nr_lock);
for (i = 0; i < sv->nr; ++i) {
- Song *song = sv->base[i];
+ struct song *song = sv->base[i];
assert(song);
assert(*song->url);
diff --git a/src/songvec.h b/src/songvec.h
index 0373ed3e7..14e08d773 100644
--- a/src/songvec.h
+++ b/src/songvec.h
@@ -1,27 +1,28 @@
#ifndef SONGVEC_H
#define SONGVEC_H
-#include "song.h"
#include "os_compat.h"
struct songvec {
- Song **base;
+ struct song **base;
size_t nr;
};
void songvec_sort(struct songvec *sv);
-Song *
+struct song *
songvec_find(const struct songvec *sv, const char *url);
-int songvec_delete(struct songvec *sv, const Song *del);
+int
+songvec_delete(struct songvec *sv, const struct song *del);
-void songvec_add(struct songvec *sv, Song *add);
+void
+songvec_add(struct songvec *sv, struct song *add);
void songvec_destroy(struct songvec *sv);
int
songvec_for_each(const struct songvec *sv,
- int (*fn)(Song *, void *), void *arg);
+ int (*fn)(struct song *, void *), void *arg);
#endif /* SONGVEC_H */
diff --git a/src/stats.c b/src/stats.c
index ee0854e16..17126cbdb 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -21,6 +21,7 @@
#include "directory.h"
#include "tag.h"
+#include "song.h"
#include "client.h"
#include "player_control.h"
#include "strset.h"
@@ -39,7 +40,8 @@ struct visit_data {
struct strset *set;
};
-static int visit_tag_items(Song *song, void *_data)
+static int
+visit_tag_items(struct song *song, void *_data)
{
const struct visit_data *data = _data;
unsigned i;
diff --git a/src/storedPlaylist.c b/src/storedPlaylist.c
index 0f10268d0..46caa0a99 100644
--- a/src/storedPlaylist.c
+++ b/src/storedPlaylist.c
@@ -17,6 +17,7 @@
*/
#include "storedPlaylist.h"
+#include "song.h"
#include "path.h"
#include "utils.h"
#include "ls.h"
@@ -107,7 +108,7 @@ List *loadStoredPlaylist(const char *utf8path)
while (myFgets(buffer, sizeof(buffer), file)) {
char *s = buffer;
- Song *song;
+ struct song *song;
if (*s == PLAYLIST_COMMENT)
continue;
@@ -260,7 +261,7 @@ removeOneSongFromStoredPlaylistByPath(const char *utf8path, int pos)
}
enum playlist_result
-appendSongToStoredPlaylistByPath(const char *utf8path, Song *song)
+appendSongToStoredPlaylistByPath(const char *utf8path, struct song *song)
{
FILE *file;
char *s;
diff --git a/src/storedPlaylist.h b/src/storedPlaylist.h
index 964669d35..575ca84f4 100644
--- a/src/storedPlaylist.h
+++ b/src/storedPlaylist.h
@@ -19,10 +19,11 @@
#ifndef STORED_PLAYLIST_H
#define STORED_PLAYLIST_H
-#include "song.h"
#include "list.h"
#include "playlist.h"
+struct song;
+
List *loadStoredPlaylist(const char *utf8path);
enum playlist_result
@@ -35,7 +36,7 @@ enum playlist_result
removeOneSongFromStoredPlaylistByPath(const char *utf8path, int pos);
enum playlist_result
-appendSongToStoredPlaylistByPath(const char *utf8path, Song *song);
+appendSongToStoredPlaylistByPath(const char *utf8path, struct song *song);
enum playlist_result
renameStoredPlaylist(const char *utf8from, const char *utf8to);
diff --git a/src/update.c b/src/update.c
index 13228d6ac..33253065f 100644
--- a/src/update.c
+++ b/src/update.c
@@ -19,6 +19,7 @@
#include "update.h"
#include "directory.h"
+#include "song.h"
#include "log.h"
#include "ls.h"
#include "path.h"
@@ -45,7 +46,7 @@ static const int update_task_id_max = 1 << 15;
static int update_task_id;
-static Song *delete;
+static struct song *delete;
static struct condition delete_cond;
@@ -63,7 +64,7 @@ directory_set_stat(struct directory *dir, const struct stat *st)
}
static void
-delete_song(struct directory *dir, Song *del)
+delete_song(struct directory *dir, struct song *del)
{
/* first, prevent traversers in main task from getting this */
songvec_delete(&dir->songs, del);
@@ -87,7 +88,8 @@ struct delete_data {
};
/* passed to songvec_for_each */
-static int delete_song_if_removed(Song *song, void *_data)
+static int
+delete_song_if_removed(struct song *song, void *_data)
{
struct delete_data *data = _data;
@@ -196,7 +198,7 @@ addToDirectory(struct directory *directory, const char *name)
if (S_ISREG(st.st_mode) &&
hasMusicSuffix(name, 0) && isMusic(name, NULL, 0)) {
- Song *song;
+ struct song *song;
const char *shortname = mpd_basename(name);
if (!(song = newSong(shortname, directory)))
@@ -216,7 +218,7 @@ addToDirectory(struct directory *directory, const char *name)
static enum update_return
updateInDirectory(struct directory *directory, const char *name)
{
- Song *song;
+ struct song *song;
struct stat st;
if (myStat(name, &st))
@@ -313,7 +315,7 @@ addDirectoryPathToDB(const char *utf8path)
char *parent;
struct directory *parentDirectory;
struct directory *directory;
- Song *conflicting;
+ struct song *conflicting;
parent = parent_path(path_max_tmp, utf8path);
@@ -372,7 +374,7 @@ static enum update_return updatePath(const char *utf8path)
{
struct directory *directory;
struct directory *parentDirectory;
- Song *song;
+ struct song *song;
char *path = sanitizePathDup(utf8path);
time_t mtime;
enum update_return ret = UPDATE_RETURN_NOUPDATE;