hrev47476 adds 1 changeset to branch 'master' old head: d65388e7fa1d82e5c7ed66c250d5f3e06bd95543 new head: 0b38b0a1362ee252627818dbbd7e282913e7b56a overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=0b38b0a+%5Ed65388e ---------------------------------------------------------------------------- 0b38b0a: cddb_daemon: Various fixes. * Add ".wav" to the ends of filenames * Add a track number at the beginning of the filename, e.g. "01" * Don't hard-fail if the FreeDB response contains an invalid year Signed-off-by: Jérôme Duval <jerome.duval@xxxxxxxxx> [ Augustin Cavalier <waddlesplash@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev47476 Commit: 0b38b0a1362ee252627818dbbd7e282913e7b56a URL: http://cgit.haiku-os.org/haiku/commit/?id=0b38b0a Author: Augustin Cavalier <waddlesplash@xxxxxxxxx> Date: Tue Jul 8 16:32:23 2014 UTC Committer: Jérôme Duval <jerome.duval@xxxxxxxxx> Commit-Date: Wed Jul 9 18:10:16 2014 UTC ---------------------------------------------------------------------------- 2 files changed, 24 insertions(+), 13 deletions(-) src/servers/cddb_daemon/cddb_daemon.cpp | 33 +++++++++++++++++++---------- src/servers/cddb_daemon/cddb_server.cpp | 4 ++-- ---------------------------------------------------------------------------- diff --git a/src/servers/cddb_daemon/cddb_daemon.cpp b/src/servers/cddb_daemon/cddb_daemon.cpp index f216173..f6875bd 100644 --- a/src/servers/cddb_daemon/cddb_daemon.cpp +++ b/src/servers/cddb_daemon/cddb_daemon.cpp @@ -8,20 +8,19 @@ #include "cddb_daemon.h" -#include "cddb_server.h" - #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <Directory.h> #include <Entry.h> -#include <NodeMonitor.h> +#include <fs_info.h> #include <Message.h> +#include <NodeMonitor.h> #include <Volume.h> #include <VolumeRoster.h> -#include <fs_info.h> -#include <stdlib.h> +#include "cddb_server.h" static const char* kCddaFsName = "cdda"; @@ -162,7 +161,7 @@ CDDBDaemon::_CanLookup(const dev_t device, uint32* cddbId, if (directory.ReadAttr("CD:do_lookup", B_BOOL_TYPE, 0, (void *)&doLookup, sizeof(bool)) < B_OK || !doLookup) return false; - + // Does it have the CD:cddbid attribute? if (directory.ReadAttr("CD:cddbid", B_UINT32_TYPE, 0, (void *)cddbId, sizeof(uint32)) < B_OK) @@ -237,6 +236,14 @@ CDDBDaemon::_WriteCDData(dev_t device, QueryResponseData* diskData, name = data->title; name.ReplaceSet("/", " "); + // Add track number to the beginning of the string. + int trackNum = index + 1; // index=0 is actually Track 1 + char trackNumString[3]; // 2 digits + '\0' + snprintf(trackNumString, sizeof(trackNumString), "%02d", trackNum); + name.Prepend(" "); + name.Prepend(trackNumString, sizeof(trackNumString)); + name.Append(".wav"); + if ((result = entry.Rename(name.String())) != B_OK) { printf("Failed renaming entry at index %d to \"%s\".\n", index, name.String()); @@ -252,11 +259,15 @@ CDDBDaemon::_WriteCDData(dev_t device, QueryResponseData* diskData, node.WriteAttr("Audio:Album", B_STRING_TYPE, 0, (readResponse->title).String(), (readResponse->title).Length()); - node.WriteAttr("Media:Genre", B_STRING_TYPE, 0, - (readResponse->genre).String(), - (readResponse->genre).Length()); - node.WriteAttr("Media:Year", B_INT32_TYPE, 0, &(readResponse->year), - sizeof(int32)); + if (readResponse->genre.Length() != 0) { + node.WriteAttr("Media:Genre", B_STRING_TYPE, 0, + (readResponse->genre).String(), + (readResponse->genre).Length()); + } + if (readResponse->year != 0) { + node.WriteAttr("Media:Year", B_INT32_TYPE, 0, + &(readResponse->year), sizeof(int32)); + } if (data->artist == "") { node.WriteAttr("Audio:Artist", B_STRING_TYPE, 0, diff --git a/src/servers/cddb_daemon/cddb_server.cpp b/src/servers/cddb_daemon/cddb_server.cpp index 46f369e..fef57bb 100644 --- a/src/servers/cddb_daemon/cddb_server.cpp +++ b/src/servers/cddb_daemon/cddb_server.cpp @@ -217,12 +217,12 @@ CDDBServer::Read(QueryResponseData* diskData, ReadResponseData* readResponse) || (errno != 0 && year == 0)) { // Year out of range. printf("Year out of range: %s\n", line.String()); - return B_ERROR; + year = 0; } if (firstInvalid == line.String()) { printf("Invalid year: %s\n", line.String()); - return B_ERROR; + year = 0; } readResponse->year = year;