diff options
author | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-08-25 11:37:34 +0200 |
---|---|---|
committer | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-08-25 11:37:34 +0200 |
commit | d79795d1576d69a57a852c4f279da133e68755df (patch) | |
tree | d941ad24b588a5830bfbafa9dcbd24b278379825 /libpiano/src | |
parent | 496e61c506f283135a52a95dec5bf43c87e39cc8 (diff) | |
download | pianobar-d79795d1576d69a57a852c4f279da133e68755df.tar.gz pianobar-d79795d1576d69a57a852c4f279da133e68755df.tar.bz2 pianobar-d79795d1576d69a57a852c4f279da133e68755df.zip |
piano: Code refactoring
Avoid strncat/strncpy, cache strlen result, ...
Diffstat (limited to 'libpiano/src')
-rw-r--r-- | libpiano/src/http.c | 6 | ||||
-rw-r--r-- | libpiano/src/xml.c | 13 |
2 files changed, 9 insertions, 10 deletions
diff --git a/libpiano/src/http.c b/libpiano/src/http.c index 88d299c..96655ca 100644 --- a/libpiano/src/http.c +++ b/libpiano/src/http.c @@ -28,7 +28,6 @@ THE SOFTWARE. #define PIANO_HTTP_BUFFER_SIZE 100000 -/* FIXME: curl has a receive limit, use it! */ /* callback for curl, writes data to buffer * @param received data * @param block size @@ -37,15 +36,14 @@ THE SOFTWARE. * @return written bytes */ size_t PianoCurlRetToVar (void *ptr, size_t size, size_t nmemb, void *stream) { - char *charPtr = ptr; char *streamPtr = stream; size_t streamPtrN = strlen (streamPtr); - if (streamPtrN + nmemb > PIANO_HTTP_BUFFER_SIZE) { + if ((streamPtrN + nmemb) > (PIANO_HTTP_BUFFER_SIZE - 1)) { printf ("buffer overflow...\n"); return 0; } else { - memcpy (streamPtr+streamPtrN, charPtr, size*nmemb); + memcpy (&streamPtr[streamPtrN], ptr, size*nmemb); return size*nmemb; } } diff --git a/libpiano/src/xml.c b/libpiano/src/xml.c index f43d4a8..73f9030 100644 --- a/libpiano/src/xml.c +++ b/libpiano/src/xml.c @@ -238,15 +238,16 @@ void PianoXmlParsePlaylistCb (const char *key, const xmlNode *value, /* last 48 chars of audioUrl are encrypted, but they put the key * into the door's lock; dumb pandora... */ const char urlTailN = 48; - char *urlTail, *urlTailCrypted = valueStr + (strlen (valueStr) - urlTailN); + const size_t valueStrN = strlen (valueStr); + char *urlTail = NULL, + *urlTailCrypted = &valueStr[valueStrN - urlTailN]; urlTail = PianoDecryptString (urlTailCrypted); - song->audioUrl = calloc (strlen (valueStr) + 1, sizeof (char)); - strncpy (song->audioUrl, valueStr, strlen (valueStr) - urlTailN); + song->audioUrl = calloc (valueStrN + 1, sizeof (*song->audioUrl)); + memcpy (song->audioUrl, valueStr, valueStrN - urlTailN); /* FIXME: the key seems to be broken... so ignore 8 x 0x08 postfix; * urlTailN/2 because the encrypted hex string is now decoded */ - strncat (song->audioUrl, urlTail, (urlTailN/2)-8); - PianoFree (urlTail, 0); - + memcpy (&song->audioUrl[valueStrN - urlTailN], urlTail, urlTailN/2 - 8); + PianoFree (urlTail, urlTailN/2); } else if (strcmp ("artistSummary", key) == 0) { song->artist = strdup (valueStr); } else if (strcmp ("musicId", key) == 0) { |