Move daap_songalbumid() to its now-unique callsite

This commit is contained in:
Julien BLACHE 2010-03-06 17:21:54 +01:00
parent 748cca63be
commit facb9957d8
2 changed files with 14 additions and 25 deletions

View File

@ -27,27 +27,4 @@ daap_query_init(void);
void
daap_query_deinit(void);
static inline int64_t
daap_songalbumid(const char *album_artist, const char *album)
{
/* album_artist & album are both VARCHAR(1024) + 2 chars + NUL */
char hashbuf[2052];
uint64_t hash;
int ret;
ret = snprintf(hashbuf, sizeof(hashbuf), "%s==%s", (album_artist) ? album_artist : "", (album) ? album : "");
if ((ret < 0) || (ret >= sizeof(hashbuf)))
{
DPRINTF(E_WARN, L_DAAP, "Not enough room for album_artist==album concatenation\n");
return 0;
}
/* Limit hash length to 63 bits, due to signed type in sqlite */
hash = murmur_hash64(hashbuf, ret, 0);
return hash >> 1;
}
#endif /* !__DAAP_QUERY_H__ */

View File

@ -32,7 +32,7 @@
#include <sqlite3.h>
#include "logger.h"
#include "daap_query.h"
#include "misc.h"
#include "db.h"
@ -3040,6 +3040,7 @@ db_daap_songalbumid_xfunc(sqlite3_context *pv, int n, sqlite3_value **ppv)
{
const char *album_artist;
const char *album;
char *hashbuf;
sqlite3_int64 result;
if (n != 2)
@ -3058,7 +3059,18 @@ db_daap_songalbumid_xfunc(sqlite3_context *pv, int n, sqlite3_value **ppv)
album_artist = (const char *)sqlite3_value_text(ppv[0]);
album = (const char *)sqlite3_value_text(ppv[1]);
result = daap_songalbumid(album_artist, album);
hashbuf = sqlite3_mprintf("%s==%s", (album_artist) ? album_artist : "", (album) ? album : "");
if (!hashbuf)
{
sqlite3_result_error(pv, "daap_songalbumid() out of memory for hashbuf", -1);
return;
}
/* Limit hash length to 63 bits, due to signed type in sqlite */
result = murmur_hash64(hashbuf, strlen(hashbuf), 0) >> 1;
sqlite3_free(hashbuf);
sqlite3_result_int64(pv, result);
}