diff options
Diffstat (limited to 'audio/libshairport/files/patch-src-shairport.c')
-rw-r--r-- | audio/libshairport/files/patch-src-shairport.c | 691 |
1 files changed, 0 insertions, 691 deletions
diff --git a/audio/libshairport/files/patch-src-shairport.c b/audio/libshairport/files/patch-src-shairport.c deleted file mode 100644 index 00fd93c92d1c..000000000000 --- a/audio/libshairport/files/patch-src-shairport.c +++ /dev/null @@ -1,691 +0,0 @@ ---- src/shairport.c.orig 2011-08-21 01:57:56.000000000 +0200 -+++ src/shairport.c 2012-10-09 12:09:33.000000000 +0200 -@@ -31,6 +31,27 @@ - #include "shairport.h" - #include "hairtunes.h" - -+static struct printfPtr g_printf={NULL}; -+ -+int xprintf(const char *format, ...) -+{ -+ char dbg[2048]; -+ va_list args; -+ va_start(args, format); -+ vsnprintf(dbg, sizeof(dbg), format, args); -+ va_end(args); -+ if(g_printf.extprintf) -+ { -+ g_printf.extprintf(dbg, sizeof(dbg)); -+ } -+ else -+ { -+ printf(dbg); -+ } -+ -+ return 1; -+} -+ - #ifndef TRUE - #define TRUE (-1) - #endif -@@ -92,13 +113,26 @@ - static char tPassword[56] = ""; - static char tHWID[HWID_SIZE] = {0,51,52,53,54,55}; - -+#ifdef XBMC -+struct AudioOutput g_ao; -+void shairport_set_ao(struct AudioOutput *ao) -+{ -+ g_ao=*ao; -+} -+ -+void shairport_set_printf(struct printfPtr *funcPtr) -+{ -+ g_printf = *funcPtr; -+} -+#endif -+ - #ifndef XBMC - int main(int argc, char **argv) - #else - int shairport_main(int argc, char **argv) - #endif - { -- printf("initializing shairport\n"); -+ xprintf("initializing shairport\n",NULL); - char tHWID_Hex[HWID_SIZE * 2 + 1]; - char tKnownHwid[32]; - -@@ -177,22 +211,22 @@ - } - else if(!strcmp(arg, "-h") || !strcmp(arg, "--help")) - { -- slog(LOG_INFO, "ShairPort version 0.05 C port - Airport Express emulator\n"); -- slog(LOG_INFO, "Usage:\nshairport [OPTION...]\n\nOptions:\n"); -- slog(LOG_INFO, " -a, --apname=AirPort Sets Airport name\n"); -- slog(LOG_INFO, " -p, --password=secret Sets Password (not working)\n"); -- slog(LOG_INFO, " -o, --server_port=5000 Sets Port for Avahi/dns-sd\n"); -- slog(LOG_INFO, " -b, --buffer=282 Sets Number of frames to buffer before beginning playback\n"); -- slog(LOG_INFO, " -d Daemon mode\n"); -- slog(LOG_INFO, " -q, --quiet Supresses all output.\n"); -- slog(LOG_INFO, " -v,-v2,-v3,-vv Various debugging levels\n"); -- slog(LOG_INFO, "\n"); -+ xprintf("ShairPort version 0.05 C port - Airport Express emulator\n"); -+ xprintf("Usage:\nshairport [OPTION...]\n\nOptions:\n"); -+ xprintf(" -a, --apname=AirPort Sets Airport name\n"); -+ xprintf(" -p, --password=secret Sets Password (not working)\n"); -+ xprintf(" -o, --server_port=5000 Sets Port for Avahi/dns-sd\n"); -+ xprintf(" -b, --buffer=282 Sets Number of frames to buffer before beginning playback\n"); -+ xprintf(" -d Daemon mode\n"); -+ xprintf(" -q, --quiet Supresses all output.\n"); -+ xprintf(" -v,-v2,-v3,-vv Various debugging levels\n"); -+ xprintf("\n"); - return 0; - } - } - - if ( buffer_start_fill < 30 || buffer_start_fill > BUFFER_FRAMES ) { -- fprintf(stderr, "buffer value must be > 30 and < %d\n", BUFFER_FRAMES); -+ xprintf("buffer value must be > 30 and < %d\n", BUFFER_FRAMES); - return(0); - } - -@@ -201,11 +235,11 @@ - int tPid = fork(); - if(tPid < 0) - { -- exit(1); // Error on fork -+ //exit(1); // Error on fork - } - else if(tPid > 0) - { -- exit(0); -+ //exit(0); - } - else - { -@@ -246,10 +280,10 @@ - sscanf(tHWID_Hex, "%02X%02X%02X%02X%02X%02X", &tHWID[0], &tHWID[1], &tHWID[2], &tHWID[3], &tHWID[4], &tHWID[5]); - } - -- slog(LOG_INFO, "LogLevel: %d\n", kCurrentLogLevel); -- slog(LOG_INFO, "AirName: %s\n", tServerName); -- slog(LOG_INFO, "HWID: %.*s\n", HWID_SIZE, tHWID+1); -- slog(LOG_INFO, "HWID_Hex(%d): %s\n", strlen(tHWID_Hex), tHWID_Hex); -+ xprintf("LogLevel: %d\n", kCurrentLogLevel); -+ xprintf("AirName: %s\n", tServerName); -+ xprintf("HWID: %.*s\n", HWID_SIZE, tHWID+1); -+ xprintf("HWID_Hex(%d): %s\n", strlen(tHWID_Hex), tHWID_Hex); - - if(tSimLevel >= 1) - { -@@ -263,12 +297,12 @@ - #ifndef XBMC - startAvahi(tHWID_Hex, tServerName, tPort); - #endif -- slog(LOG_DEBUG_V, "Starting connection server: specified server port: %d\n", tPort); -+ xprintf("Starting connection server: specified server port: %d\n", tPort); - tServerSock = setupListenServer(&tAddrInfo, tPort); - if(tServerSock < 0) - { - freeaddrinfo(tAddrInfo); -- slog(LOG_INFO, "Error setting up server socket on port %d, try specifying a different port\n", tPort); -+ xprintf("Error setting up server socket on port %d, try specifying a different port\n", tPort); - return 0; - } - -@@ -295,7 +329,7 @@ - - int readsock; - -- slog(LOG_DEBUG_V, "Waiting for clients to connect\n"); -+ xprintf("Waiting for clients to connect\n"); - - while(m_running) - { -@@ -327,7 +361,7 @@ - { - freeaddrinfo(tAddrInfo); - tAddrInfo = NULL; -- slog(LOG_DEBUG, "...Accepted Client Connection..\n"); -+ xprintf("...Accepted Client Connection..\n"); - close(tServerSock); - handleClient(tClientSock, tPassword, tHWID); - //close(tClientSock); -@@ -335,11 +369,11 @@ - } - else - { -- slog(LOG_DEBUG_VV, "Child now busy handling new client\n"); -+ xprintf("Child now busy handling new client\n"); - close(tClientSock); - } - #else -- slog(LOG_DEBUG, "...Accepted Client Connection..\n"); -+ xprintf("...Accepted Client Connection..\n"); - handleClient(tClientSock, tPassword, tHWID); - #endif - } -@@ -349,7 +383,7 @@ - } - } - -- slog(LOG_DEBUG_VV, "Finished\n"); -+ xprintf("Finished\n"); - if(tAddrInfo != NULL) - { - freeaddrinfo(tAddrInfo); -@@ -360,6 +394,7 @@ - void shairport_exit(void) - { - m_running = 0; -+ close(tServerSock); - } - - int shairport_is_running(void) -@@ -407,7 +442,7 @@ - - void handleClient(int pSock, char *pPassword, char *pHWADDR) - { -- slog(LOG_DEBUG_VV, "In Handle Client\n"); -+ xprintf("In Handle Client\n"); - fflush(stdout); - - socklen_t len; -@@ -426,7 +461,7 @@ - - // deal with both IPv4 and IPv6: - if (addr.ss_family == AF_INET) { -- slog(LOG_DEBUG_V, "Constructing ipv4 address\n"); -+ xprintf("Constructing ipv4 address\n"); - struct sockaddr_in *s = (struct sockaddr_in *)&addr; - port = ntohs(s->sin_port); - inet_ntop(AF_INET, &s->sin_addr, ipstr, sizeof ipstr); -@@ -446,20 +481,20 @@ - if(memcmp(&addr.bin[0], "\x00\x00\x00\x00" "\x00\x00\x00\x00" "\x00\x00\xff\xff", 12) == 0) - { - // its ipv4... -- slog(LOG_DEBUG_V, "Constructing ipv4 from ipv6 address\n"); -+ xprintf("Constructing ipv4 from ipv6 address\n"); - memcpy(ipbin, &addr.bin[12], 4); - ipbinlen = 4; - } - else - { -- slog(LOG_DEBUG_V, "Constructing ipv6 address\n"); -+ xprintf("Constructing ipv6 address\n"); - memcpy(ipbin, &s->sin6_addr, 16); - ipbinlen = 16; - } - } - -- slog(LOG_DEBUG_V, "Peer IP address: %s\n", ipstr); -- slog(LOG_DEBUG_V, "Peer port : %d\n", port); -+ xprintf("Peer IP address: %s\n", ipstr); -+ xprintf("Peer port : %d\n", port); - - int tMoreDataNeeded = 1; - struct keyring tKeys; -@@ -478,18 +513,19 @@ - while(1 == tMoreDataNeeded) - { - tError = readDataFromClient(pSock, &(tConn.recv)); -- if(!tError && strlen(tConn.recv.data) > 0) -+ //if(!tError && strlen(tConn.recv.data) > 0) -+ if(!tError && tConn.recv.current > 0) - { -- slog(LOG_DEBUG_VV, "Finished Reading some data from client\n"); -+ xprintf("Finished Reading some data from client\n"); - // parse client request - tMoreDataNeeded = parseMessage(&tConn, ipbin, ipbinlen, pHWADDR); - if(1 == tMoreDataNeeded) - { -- slog(LOG_DEBUG_VV, "\n\nNeed to read more data\n"); -+ xprintf("\n\nNeed to read more data\n"); - } - else if(-1 == tMoreDataNeeded) // Forked process down below ended. - { -- slog(LOG_DEBUG_V, "Forked Process ended...cleaning up\n"); -+ xprintf("Forked Process ended...cleaning up\n"); - cleanup(&tConn); - // pSock was already closed - return; -@@ -498,13 +534,13 @@ - } - else - { -- slog(LOG_DEBUG, "Error reading from socket, closing client\n"); -+ xprintf("Error reading from socket, closing client\n"); - // Error reading data....quit. - cleanup(&tConn); - return; - } - } -- slog(LOG_DEBUG_VV, "Writing: %d chars to socket\n", tConn.resp.current); -+ xprintf("Writing: %d chars to socket\n", tConn.resp.current); - //tConn->resp.data[tConn->resp.current-1] = '\0'; - writeDataToClient(pSock, &(tConn.resp)); - // Finished reading one message... -@@ -517,9 +553,9 @@ - - void writeDataToClient(int pSock, struct shairbuffer *pResponse) - { -- slog(LOG_DEBUG_VV, "\n----Beg Send Response Header----\n%.*s\n", pResponse->current, pResponse->data); -+ xprintf("\n----Beg Send Response Header----\n%.*s\n", pResponse->current, pResponse->data); - send(pSock, pResponse->data, pResponse->current,0); -- slog(LOG_DEBUG_VV, "----Send Response Header----\n"); -+ xprintf("----Send Response Header----\n"); - } - - int readDataFromClient(int pSock, struct shairbuffer *pClientBuffer) -@@ -532,7 +568,7 @@ - while(tRetval > 0 && tEnd < 0) - { - // Read from socket until \n\n, \r\n\r\n, or \r\r is found -- slog(LOG_DEBUG_V, "Waiting To Read...\n"); -+ xprintf("Waiting To Read...\n"); - fflush(stdout); - tRetval = read(pSock, tReadBuf, MAX_SIZE); - // if new buffer contains the end of request string, only copy partial buffer? -@@ -543,40 +579,40 @@ - { - pClientBuffer->marker = tEnd+1; // Marks start of content - } -- slog(SOCKET_LOG_LEVEL, "Found end of http request at: %d\n", tEnd); -+ xprintf("Found end of http request at: %d\n", tEnd); - fflush(stdout); - } - else - { - tEnd = MAX_SIZE; -- slog(SOCKET_LOG_LEVEL, "Read %d of data so far\n%s\n", tRetval, tReadBuf); -+ xprintf("Read %d of data so far\n%s\n", tRetval, tReadBuf); - fflush(stdout); - } - if(tRetval > 0) - { - // Copy read data into tReceive; -- slog(SOCKET_LOG_LEVEL, "Read %d data, using %d of it\n", tRetval, tEnd); -+ xprintf("Read %d data, using %d of it\n", tRetval, tEnd); - addNToShairBuffer(pClientBuffer, tReadBuf, tRetval); -- slog(LOG_DEBUG_VV, "Finished copying data\n"); -+ xprintf("Finished copying data\n"); - } - else - { -- slog(LOG_DEBUG, "Error reading data from socket, got: %d bytes", tRetval); -+ xprintf("Error reading data from socket, got: %d bytes", tRetval); - return tRetval; - } - } - if(tEnd + 1 != tRetval) - { -- slog(SOCKET_LOG_LEVEL, "Read more data after end of http request. %d instead of %d\n", tRetval, tEnd+1); -+ xprintf("Read more data after end of http request. %d instead of %d\n", tRetval, tEnd+1); - } -- slog(SOCKET_LOG_LEVEL, "Finished Reading Data:\n%s\nEndOfData\n", pClientBuffer->data); -+ xprintf("Finished Reading Data:\n%s\nEndOfData\n", pClientBuffer->data); - fflush(stdout); - return 0; - } - - char *getFromBuffer(char *pBufferPtr, const char *pField, int pLenAfterField, int *pReturnSize, char *pDelims) - { -- slog(LOG_DEBUG_V, "GettingFromBuffer: %s\n", pField); -+ xprintf("GettingFromBuffer: %s\n", pField); - char* tFound = strstr(pBufferPtr, pField); - int tSize = 0; - if(tFound != NULL) -@@ -597,7 +633,7 @@ - } - - tSize = (int) (tShortest - tFound); -- slog(LOG_DEBUG_VV, "Found %.*s length: %d\n", tSize, tFound, tSize); -+ xprintf("Found %s length: %d\n",tFound, tSize); - if(pReturnSize != NULL) - { - *pReturnSize = tSize; -@@ -605,7 +641,7 @@ - } - else - { -- slog(LOG_DEBUG_V, "Not Found\n"); -+ xprintf("Not Found\n"); - } - return tFound; - } -@@ -639,10 +675,10 @@ - { - char tTrim[tFoundSize + 2]; - getTrimmed(tFound, tFoundSize, TRUE, TRUE, tTrim); -- slog(LOG_DEBUG_VV, "HeaderChallenge: [%s] len: %d sizeFound: %d\n", tTrim, strlen(tTrim), tFoundSize); -+ xprintf("HeaderChallenge: [%s] len: %d sizeFound: %d\n", tTrim, strlen(tTrim), tFoundSize); - int tChallengeDecodeSize = 16; - char *tChallenge = decode_base64((unsigned char *)tTrim, tFoundSize, &tChallengeDecodeSize); -- slog(LOG_DEBUG_VV, "Challenge Decode size: %d expected 16\n", tChallengeDecodeSize); -+ xprintf("Challenge Decode size: %d expected 16\n", tChallengeDecodeSize); - - int tCurSize = 0; - unsigned char tChalResp[38]; -@@ -664,7 +700,7 @@ - } - - char *tTmp = encode_base64((unsigned char *)tChalResp, tCurSize); -- slog(LOG_DEBUG_VV, "Full sig: %s\n", tTmp); -+ xprintf("Full sig: %s\n", tTmp); - free(tTmp); - - // RSA Encrypt -@@ -709,15 +745,15 @@ - if(tContent != NULL) - { - int tContentSize = atoi(tContent); -- if(pConn->recv.marker == 0 || strlen(pConn->recv.data+pConn->recv.marker) != tContentSize) -+ if(pConn->recv.marker == 0 || pConn->recv.current-pConn->recv.marker != tContentSize) - { - if(isLogEnabledFor(HEADER_LOG_LEVEL)) - { -- slog(HEADER_LOG_LEVEL, "Content-Length: %s value -> %d\n", tContent, tContentSize); -+ xprintf("Content-Length: %s value -> %d\n", tContent, tContentSize); - if(pConn->recv.marker != 0) - { -- slog(HEADER_LOG_LEVEL, "ContentPtr has %d, but needs %d\n", -- strlen(pConn->recv.data+pConn->recv.marker), tContentSize); -+ xprintf("ContentPtr has %d, but needs %d\n", -+ (pConn->recv.current-pConn->recv.marker), tContentSize); - } - } - // check if value in tContent > 2nd read from client. -@@ -726,7 +762,7 @@ - } - else - { -- slog(LOG_DEBUG_VV, "No content, header only\n"); -+ xprintf("No content, header only\n"); - } - - // "Creates" a new Response Header for our response message -@@ -739,7 +775,7 @@ - { - tLen = 20; - } -- slog(LOG_INFO, "********** RECV %.*s **********\n", tLen, pConn->recv.data); -+ xprintf("********** RECV %.*s **********\n", tLen, pConn->recv.data); - } - - if(pConn->password != NULL) -@@ -749,7 +785,7 @@ - - if(buildAppleResponse(pConn, pIpBin, pIpBinLen, pHWID)) // need to free sig - { -- slog(LOG_DEBUG_V, "Added AppleResponse to Apple-Challenge request\n"); -+ xprintf("Added AppleResponse to Apple-Challenge request\n"); - } - - // Find option, then based on option, do different actions. -@@ -769,14 +805,14 @@ - int tKeySize = 0; - char tEncodedAesIV[tSize + 2]; - getTrimmed(tHeaderVal, tSize, TRUE, TRUE, tEncodedAesIV); -- slog(LOG_DEBUG_VV, "AESIV: [%.*s] Size: %d Strlen: %d\n", tSize, tEncodedAesIV, tSize, strlen(tEncodedAesIV)); -+ xprintf("AESIV: [%.*s] Size: %d Strlen: %d\n", tSize, tEncodedAesIV, tSize, strlen(tEncodedAesIV)); - char *tDecodedIV = decode_base64((unsigned char*) tEncodedAesIV, tSize, &tSize); - - // grab the key, copy it out of the receive buffer - tHeaderVal = getFromContent(tContent, "a=rsaaeskey", &tKeySize); - char tEncodedAesKey[tKeySize + 2]; // +1 for nl, +1 for \0 - getTrimmed(tHeaderVal, tKeySize, TRUE, TRUE, tEncodedAesKey); -- slog(LOG_DEBUG_VV, "AES KEY: [%s] Size: %d Strlen: %d\n", tEncodedAesKey, tKeySize, strlen(tEncodedAesKey)); -+ xprintf("AES KEY: [%s] Size: %d Strlen: %d\n", tEncodedAesKey, tKeySize, strlen(tEncodedAesKey)); - // remove base64 coding from key - char *tDecodedAesKey = decode_base64((unsigned char*) tEncodedAesKey, - tKeySize, &tKeySize); // Need to free DecodedAesKey -@@ -785,7 +821,7 @@ - int tFmtpSize = 0; - char *tFmtp = getFromContent(tContent, "a=fmtp", &tFmtpSize); // Don't need to free - tFmtp = getTrimmedMalloc(tFmtp, tFmtpSize, TRUE, FALSE); // will need to free -- slog(LOG_DEBUG_VV, "Format: %s\n", tFmtp); -+ xprintf("Format: %s\n", tFmtp); - - RSA *rsa = loadKey(); - // Decrypt the binary aes key -@@ -794,11 +830,11 @@ - if(RSA_private_decrypt(tKeySize, (unsigned char *)tDecodedAesKey, - (unsigned char*) tDecryptedKey, rsa, RSA_PKCS1_OAEP_PADDING) >= 0) - { -- slog(LOG_DEBUG, "Decrypted AES key from RSA Successfully\n"); -+ xprintf("Decrypted AES key from RSA Successfully\n"); - } - else - { -- slog(LOG_INFO, "Error Decrypting AES key from RSA\n"); -+ xprintf("Error Decrypting AES key from RSA\n"); - } - free(tDecodedAesKey); - RSA_free(rsa); -@@ -814,13 +850,13 @@ - // struct comms *tComms = pConn->hairtunes; - // if (! (pipe(tComms->in) == 0 && pipe(tComms->out) == 0)) - // { --// slog(LOG_INFO, "Error setting up hairtunes communications...some things probably wont work very well.\n"); -+// xprintf("Error setting up hairtunes communications...some things probably wont work very well.\n"); - // } - - // Setup fork - char tPort[8] = "6000"; // get this from dup()'d stdout of child pid - -- printf("******** SETUP!!!!!\n"); -+ xprintf("******** SETUP!!!!!\n",NULL); - #ifndef XBMC - int tPid = fork(); - if(tPid == 0) -@@ -836,11 +872,11 @@ - tFound = getFromSetup(pConn->recv.data, "timing_port", &tSize); - getTrimmed(tFound, tSize, 1, 0, tTPortStr); - -- slog(LOG_DEBUG_VV, "converting %s and %s from str->int\n", tCPortStr, tTPortStr); -+ xprintf("converting %s and %s from str->int\n", tCPortStr, tTPortStr); - int tControlport = atoi(tCPortStr); - int tTimingport = atoi(tTPortStr); - -- slog(LOG_DEBUG_V, "Got %d for CPort and %d for TPort\n", tControlport, tTimingport); -+ xprintf("Got %d for CPort and %d for TPort\n", tControlport, tTimingport); - char *tRtp = NULL; - char *tPipe = NULL; - char *tAoDriver = NULL; -@@ -875,7 +911,7 @@ - tDataport, tRtp, tPipe, tAoDriver, tAoDeviceName, tAoDeviceId); - #ifndef XBMC - // Quit when finished. -- slog(LOG_DEBUG, "Returned from hairtunes init....returning -1, should close out this whole side of the fork\n"); -+ xprintf("Returned from hairtunes init....returning -1, should close out this whole side of the fork\n"); - return -1; - } - else if(tPid >0) -@@ -888,7 +924,7 @@ - int tRead = read(tComms->out[0], tFromHairtunes, 80); - if(tRead <= 0) - { -- slog(LOG_INFO, "Error reading port from hairtunes function, assuming default port: %d\n", tPort); -+ xprintf("Error reading port from hairtunes function, assuming default port: %d\n", tPort); - } - else - { -@@ -900,7 +936,7 @@ - } - else - { -- slog(LOG_INFO, "Read %d bytes, Error translating %s into a port\n", tRead, tFromHairtunes); -+ xprintf("Read %d bytes, Error translating %s into a port\n", tRead, tFromHairtunes); - } - } - -@@ -921,7 +957,7 @@ - } - else - { -- slog(LOG_INFO, "Error forking process....dere' be errors round here.\n"); -+ xprintf("Error forking process....dere' be errors round here.\n"); - return -1; - } - #endif -@@ -933,7 +969,7 @@ - propogateCSeq(pConn); - #ifndef XBMC - close(pConn->hairtunes->in[1]); -- slog(LOG_DEBUG, "Tearing down connection, closing pipes\n"); -+ xprintf("Tearing down connection, closing pipes\n"); - #else - hairtunes_cleanup(); - #endif -@@ -954,21 +990,73 @@ - { - propogateCSeq(pConn); - int tSize = 0; -+ char *buffer = NULL; -+ char *contentType = getFromHeader(pConn->recv.data, "Content-Type", &tSize); -+ char *tContent = getFromHeader(pConn->recv.data, "Content-Length", NULL); -+ int iContentSize = 0; -+ int isJpg = 0; -+ -+ if(tContent != NULL) -+ { -+ iContentSize = atoi(tContent); -+ } -+ -+ if( tSize > 1 && -+ (strncmp(contentType, "application/x-dmap-tagged", tSize) == 0) || -+ (strncmp(contentType, "image/jpeg", tSize) == 0) ) -+ { -+ if( (pConn->recv.current - pConn->recv.marker) == iContentSize && pConn->recv.marker != 0) -+ { -+ if(strncmp(contentType, "image/jpeg", tSize) == 0) -+ { -+ isJpg = 1; -+ } -+ buffer = (char *)malloc(iContentSize * sizeof(char)); -+ memcpy(buffer, pConn->recv.data + pConn->recv.marker, iContentSize); -+ } -+ else -+ { -+ iContentSize = 0; -+ } -+ } -+ else -+ { -+ iContentSize = 0; -+ } - char *tVol = getFromHeader(pConn->recv.data, "volume", &tSize); -- slog(LOG_DEBUG_VV, "About to write [vol: %.*s] data to hairtunes\n", tSize, tVol); -+ if( tVol) -+ { -+ xprintf("About to write [vol: %.*s] data to hairtunes\n", tSize, tVol); -+ } - // TBD VOLUME - #ifndef XBMC - write(pConn->hairtunes->in[1], "vol: ", 5); - write(pConn->hairtunes->in[1], tVol, tSize); - write(pConn->hairtunes->in[1], "\n", 1); - #else -- hairtunes_setvolume(atof(tVol)); -+ if(tVol) -+ { -+ hairtunes_setvolume(atof(tVol)); -+ } -+ -+ if(iContentSize) -+ { -+ if(isJpg) -+ { -+ hairtunes_set_metadata_coverart(buffer, iContentSize); -+ } -+ else -+ { -+ hairtunes_set_metadata(buffer, iContentSize); -+ } -+ free(buffer); -+ } - #endif -- slog(LOG_DEBUG_VV, "Finished writing data write data to hairtunes\n"); -+ xprintf("Finished writing data write data to hairtunes\n"); - } - else - { -- slog(LOG_DEBUG, "\n\nUn-Handled recv: %s\n", pConn->recv.data); -+ xprintf("\n\nUn-Handled recv: %s\n", pConn->recv.data); - propogateCSeq(pConn); - } - addToShairBuffer(&(pConn->resp), "\r\n"); -@@ -1047,7 +1135,7 @@ - char tName[100 + HWID_SIZE + 3]; - if(strlen(pServerName) > tMaxServerName) - { -- slog(LOG_INFO,"Hey dog, we see you like long server names, " -+ xprintf("Hey dog, we see you like long server names, " - "so we put a strncat in our command so we don't buffer overflow, while you listen to your flow.\n" - "We just used the first %d characters. Pick something shorter if you want\n", tMaxServerName); - } -@@ -1058,7 +1146,7 @@ - strcat(tName, pHWStr); - strcat(tName, "@"); - strncat(tName, pServerName, tMaxServerName); -- slog(AVAHI_LOG_LEVEL, "Avahi/DNS-SD Name: %s\n", tName); -+ xprintf("Avahi/DNS-SD Name: %s\n", tName); - - execlp("avahi-publish-service", "avahi-publish-service", tName, - "_raop._tcp", tPort, "tp=UDP","sm=false","sv=false","ek=1","et=0,1", -@@ -1070,12 +1158,12 @@ - perror("error"); - } - -- slog(LOG_INFO, "Bad error... couldn't find or failed to run: avahi-publish-service OR dns-sd\n"); -- exit(1); -+ xprintf("Bad error... couldn't find or failed to run: avahi-publish-service OR dns-sd\n"); -+ //exit(1); - } - else - { -- slog(LOG_DEBUG_VV, "Avahi/DNS-SD started on PID: %d\n", tPid); -+ xprintf("Avahi/DNS-SD started on PID: %d\n", tPid); - } - return tPid; - } -@@ -1083,7 +1171,7 @@ - - void printBufferInfo(struct shairbuffer *pBuf, int pLevel) - { -- slog(pLevel, "Buffer: [%s] size: %d maxchars:%d\n", pBuf->data, pBuf->current, pBuf->maxsize/sizeof(char)); -+ xprintf("Buffer: [%s] size: %d maxchars:%d\n", pBuf->data, pBuf->current, pBuf->maxsize/sizeof(char)); - } - - int getAvailChars(struct shairbuffer *pBuf) -@@ -1164,7 +1252,8 @@ - { - va_list argp; - va_start(argp, pFormat); -- vprintf(pFormat, argp); -+ xprintf(pFormat, argp); -+ //vprintf(pFormat, argp); - va_end(argp); - } - //#endif -@@ -1218,9 +1307,9 @@ - { - if(pBuf->data != NULL) - { -- slog(LOG_DEBUG_VV, "Hrm, buffer wasn't cleaned up....trying to free\n"); -+ xprintf("Hrm, buffer wasn't cleaned up....trying to free\n"); - free(pBuf->data); -- slog(LOG_DEBUG_VV, "Free didn't seem to seg fault....huzzah\n"); -+ xprintf("Free didn't seem to seg fault....huzzah\n"); - } - pBuf->current = 0; - pBuf->marker = 0; -@@ -1278,6 +1367,6 @@ - BIO *tBio = BIO_new_mem_buf(AIRPORT_PRIVATE_KEY, -1); - RSA *rsa = PEM_read_bio_RSAPrivateKey(tBio, NULL, NULL, NULL); //NULL, NULL, NULL); - BIO_free(tBio); -- slog(RSA_LOG_LEVEL, "RSA Key: %d\n", RSA_check_key(rsa)); -+ xprintf("RSA Key: %d\n", RSA_check_key(rsa)); - return rsa; - } |