diff options
-rw-r--r-- | libpiano/src/crypt.c | 4 | ||||
-rw-r--r-- | src/main.c | 39 | ||||
-rw-r--r-- | src/player.c | 11 | ||||
-rw-r--r-- | src/settings.c | 11 | ||||
-rw-r--r-- | src/ui.c | 23 |
5 files changed, 59 insertions, 29 deletions
diff --git a/libpiano/src/crypt.c b/libpiano/src/crypt.c index 2e6dd55..1b59533 100644 --- a/libpiano/src/crypt.c +++ b/libpiano/src/crypt.c @@ -105,7 +105,7 @@ char *PianoIntsToString (const unsigned int *arrInts, size_t arrIntsN) { for (i = 0; i < arrIntsN; i++) { /* map string to 4-byte int */ tmp = (unsigned int *) &strDecoded[i*4]; - /* FIXME: big endian does not need to byteswap? */ + /* FIXME: big endian does not need byteswap? */ *tmp = byteswap32 (arrInts[i]); } return strDecoded; @@ -219,8 +219,8 @@ char *PianoIntsToHexString (const unsigned int *arrInts, size_t arrIntsN) { size_t intMapN = arrIntsN * sizeof (*arrInts); for (i = 0; i < intMapN; i++) { - /* we need to swap the bytes again */ writePos = i + (4 - (i % 4) * 2) - 1; + /* we need to swap the bytes again */ hexStr[writePos*2] = (intMap[i] & 0xf0) < 0xa0 ? (intMap[i] >> 4) + '0' : (intMap[i] >> 4) + 'a' - 10; hexStr[writePos*2+1] = (intMap[i] & 0x0f) < 0x0a ? (intMap[i] & 0x0f) + @@ -21,21 +21,28 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* main loop, helper functions */ - -#include <wardrobe.h> -#include <curl/curl.h> -#include <libxml/parser.h> -#include <libxml/tree.h> +/* system includes */ #include <stdlib.h> #include <string.h> #include <stdio.h> -#include <pthread.h> #include <unistd.h> #include <poll.h> -#include <readline/readline.h> #include <time.h> #include <ctype.h> + +/* last.fm scrobbling library */ +#include <wardrobe.h> + +#include <curl/curl.h> + +#include <libxml/parser.h> +#include <libxml/tree.h> + +#include <pthread.h> + +#include <readline/readline.h> + +/* pandora.com library */ #include <piano.h> #include "player.h" @@ -58,7 +65,7 @@ int main (int argc, char **argv) { /* needed in main loop */ struct pollfd polls = {fileno (stdin), POLLIN, POLLIN}; char buf = '\0'; - BarKeyShortcut_t *curShortcut; + BarKeyShortcut_t *curShortcut = NULL; BarUiMsg ("Welcome to " PACKAGE "!\n"); @@ -131,15 +138,14 @@ int main (int argc, char **argv) { memset (&player, 0, sizeof (player)); while (!doQuit) { - /* already played a song, clean up things/scrobble song */ + /* song finished playing, clean up things/scrobble song */ if (player.mode == PLAYER_FINISHED_PLAYBACK) { scrobbleSong.length = player.songDuration / BAR_PLAYER_MS_TO_S_FACTOR; /* scrobble when >= nn% are played; use seconds, not * milliseconds */ - if (scrobbleSong.length > 0 && + if (scrobbleSong.length > 0 && settings.enableScrobbling && player.songPlayed / BAR_PLAYER_MS_TO_S_FACTOR * 100 / - scrobbleSong.length >= settings.lastfmScrobblePercent && - settings.enableScrobbling) { + scrobbleSong.length >= settings.lastfmScrobblePercent) { WardrobeReturn_t wRet; BarUiMsg ("Scrobbling song... "); @@ -152,6 +158,8 @@ int main (int argc, char **argv) { } WardrobeSongDestroy (&scrobbleSong); free (player.url); + /* FIXME: pthread_join blocks everything if network connection + * is hung up e.g. */ pthread_join (playerThread, NULL); memset (&player, 0, sizeof (player)); } @@ -180,6 +188,7 @@ int main (int argc, char **argv) { } } } + /* song ready to play */ if (curSong != NULL) { PianoStation_t *realStation = PianoFindStationById (ph.stations, @@ -199,6 +208,7 @@ int main (int argc, char **argv) { scrobbleSong.album = strdup (curSong->album); scrobbleSong.started = time (NULL); + /* setup player */ memset (&player, 0, sizeof (player)); player.url = strdup (curSong->audioUrl); player.gain = curSong->fileGain; @@ -211,7 +221,8 @@ int main (int argc, char **argv) { } /* end if curStation != NULL */ } - /* in the meantime: wait for user actions */ + /* in the meantime: wait for user actions; + * 1000ms == 1s => refresh time display every second */ if (poll (&polls, 1, 1000) > 0) { read (fileno (stdin), &buf, sizeof (buf)); curShortcut = settings.keys; diff --git a/src/player.c b/src/player.c index 06f3ec3..92038d9 100644 --- a/src/player.c +++ b/src/player.c @@ -75,6 +75,12 @@ inline signed short int applyReplayGain (signed short int value, } } +/* Refill player's buffer with dataSize of data + * @param player structure + * @param new data + * @param data size + * @return 1 on success, 0 when buffer overflow occured + */ inline int BarPlayerBufferFill (struct audioPlayer *player, char *data, size_t dataSize) { /* fill buffer */ @@ -89,6 +95,11 @@ inline int BarPlayerBufferFill (struct audioPlayer *player, char *data, return 1; } +/* move data beginning from read pointer to buffer beginning and + * overwrite data already read from buffer + * @param player structure + * @return nothing at all + */ inline void BarPlayerBufferMove (struct audioPlayer *player) { /* move remaining bytes to buffer beginning */ memmove (player->buffer, player->buffer + player->bufferRead, diff --git a/src/settings.c b/src/settings.c index bc471f0..cd82b7c 100644 --- a/src/settings.c +++ b/src/settings.c @@ -59,10 +59,16 @@ void BarGetXdgConfigDir (const char *filename, char *retDir, } } +/* initialize settings structure + * @param settings struct + */ void BarSettingsInit (BarSettings_t *settings) { memset (settings, 0, sizeof (*settings)); } +/* free settings structure, zero it afterwards + * @oaram pointer to struct + */ void BarSettingsDestroy (BarSettings_t *settings) { BarKeyShortcut_t *curShortcut = settings->keys, *lastShortcut; @@ -86,6 +92,10 @@ void BarSettingsDestroy (BarSettings_t *settings) { memset (settings, 0, sizeof (*settings)); } +/* copy key shortcut into settings structure + * @param shortcut to be copied + * @param destination settings structure + */ void BarSettingsAppendKey (BarKeyShortcut_t *shortcut, BarSettings_t *settings) { BarKeyShortcut_t *tmp = calloc (1, sizeof (*tmp)); @@ -99,6 +109,7 @@ void BarSettingsAppendKey (BarKeyShortcut_t *shortcut, tmp->configKey = strdup (shortcut->configKey); } + /* insert into linked list */ if (settings->keys == NULL) { settings->keys = tmp; } else { @@ -51,7 +51,7 @@ inline PianoReturn_t BarUiPrintPianoStatus (PianoReturn_t ret) { return ret; } -/* check whether complete string is numeric +/* check if all characters of string are numeric * @param the string * @return 1 = yes, 0 = not numeric */ @@ -85,10 +85,9 @@ char BarReadlineInt (const char *prompt, int *retVal) { return ret; } -/* sort linked list (station); attention: this is a - * "i-had-no-clue-what-to-do-algo", but it works. - * @param stations - * @return NULL-terminated array with sorted stations +/* sort linked list (station) + * @param stations + * @return NULL-terminated array with sorted stations */ PianoStation_t **BarSortedStations (PianoStation_t *unsortedStations) { PianoStation_t *currStation, **sortedStations, **currSortedStation; @@ -148,6 +147,7 @@ PianoStation_t *BarUiSelectStation (PianoHandle_t *ph, const char *prompt) { PianoStation_t **ss = NULL, **ssCurr = NULL, *retStation; int i = 0; + /* sort and print stations */ ss = BarSortedStations (ph->stations); ssCurr = ss; while (*ssCurr != NULL) { @@ -181,6 +181,7 @@ PianoSong_t *BarUiSelectSong (PianoSong_t *startSong) { PianoSong_t *tmpSong = NULL; int i = 0; + /* print all songs */ tmpSong = startSong; while (tmpSong != NULL) { printf ("%2u) %s - %s\n", i, tmpSong->artist, tmpSong->title); @@ -206,6 +207,7 @@ PianoArtist_t *BarUiSelectArtist (PianoArtist_t *startArtist) { PianoArtist_t *tmpArtist = NULL; int i = 0; + /* print all artists */ tmpArtist = startArtist; while (tmpArtist != NULL) { printf ("%2u) %s\n", i, tmpArtist->name); @@ -244,6 +246,7 @@ char *BarUiSelectMusicId (const PianoHandle_t *ph) { } BarUiMsg ("\r"); if (searchResult.songs != NULL && searchResult.artists != NULL) { + /* songs and artists found */ BarUiMsg ("Is this an [a]rtist or [t]rack name? Press c to abort.\n"); read (fileno (stdin), &yesnoBuf, sizeof (yesnoBuf)); if (yesnoBuf == 'a') { @@ -256,29 +259,23 @@ char *BarUiSelectMusicId (const PianoHandle_t *ph) { if (tmpSong != NULL) { musicId = strdup (tmpSong->musicId); } - } else { - BarUiMsg ("Aborted.\n"); } } else if (searchResult.songs != NULL) { + /* songs found */ tmpSong = BarUiSelectSong (searchResult.songs); if (tmpSong != NULL) { musicId = strdup (tmpSong->musicId); - } else { - BarUiMsg ("Aborted.\n"); } } else if (searchResult.artists != NULL) { + /* artists found */ tmpArtist = BarUiSelectArtist (searchResult.artists); if (tmpArtist != NULL) { musicId = strdup (tmpArtist->musicId); - } else { - BarUiMsg ("Aborted.\n"); } } else { BarUiMsg ("Nothing found...\n"); } PianoDestroySearchResult (&searchResult); - } else { - BarUiMsg ("Aborted.\n"); } if (lineBuf != NULL) { free (lineBuf); |