int table_name ## _init(struct table_info *ti, const char *db); \
void table_name ## _shutdown(enum osl_close_flags flags); \
int cmd_prefix ## _get_name_by_id(uint32_t id, char **name); \
+ int cmd_prefix ## _get_name_and_def_by_row(struct osl_row *row, \
+ char **name, struct osl_object *def); \
extern struct osl_table *table_name ## _table;
DECLARE_BLOB_SYMBOLS(lyrics, lyr);
return blob_get_name_by_id(table_name ## _table, id, name); \
}
+static int blob_get_name_and_def_by_row(struct osl_table *table, struct osl_row *row,
+ char **name, struct osl_object *def)
+{
+ struct osl_object obj;
+ int ret = osl_get_object(table, row, BLOBCOL_NAME, &obj);
+ if (ret < 0)
+ return ret;
+ *name = obj.data;
+ return osl_open_disk_object(table, row, BLOBCOL_DEF, def);
+}
+/** Define the \p get_name_and_def_by_row function for this blob type. */
+#define DEFINE_GET_NAME_AND_DEF_BY_ROW(table_name, cmd_prefix) \
+ int cmd_prefix ## _get_name_and_def_by_row(struct osl_row *row, \
+ char **name, struct osl_object *def) \
+ { \
+ return blob_get_name_and_def_by_row(table_name ## _table, \
+ row, name, def); \
+ }
+
/** Define the \p shutdown function for this blob type. */
#define DEFINE_BLOB_SHUTDOWN(table_name) \
void table_name ## _shutdown(enum osl_close_flags flags) \
DEFINE_BLOB_COMMAND(rm, table_name, cmd_prefix) \
DEFINE_BLOB_COMMAND(mv, table_name, cmd_prefix) \
DEFINE_GET_NAME_BY_ID(table_name, cmd_prefix); \
+ DEFINE_GET_NAME_AND_DEF_BY_ROW(table_name, cmd_prefix); \
DEFINE_BLOB_SHUTDOWN(table_name); \
DEFINE_BLOB_INIT(table_name);
return 1;
}
-static int get_playlist_data(struct osl_row *row, char **playlist_name,
- struct osl_object *playlist_def)
-{
- struct osl_object obj;
- int ret = osl_get_object(playlists_table, row, BLOBCOL_NAME, &obj);
- if (ret < 0)
- return ret;
- *playlist_name = obj.data;
- return osl_open_disk_object(playlists_table, row, BLOBCOL_DEF,
- playlist_def);
-}
-
/* returns -E_PLAYLIST_LOADED on _success_ to terminate the loop */
static int load_playlist(struct osl_row *row, void *data)
{
char *playlist_name;
int ret;
- ret = get_playlist_data(row, &playlist_name, &playlist_def);
+ ret = pl_get_name_and_def_by_row(row, &playlist_name, &playlist_def);
if (ret < 0)
goto err;
playlist->length = 0;
struct para_buffer *pb = data;
struct osl_object playlist_def;
char *playlist_name;
- int ret = get_playlist_data(row, &playlist_name, &playlist_def);
+ int ret = pl_get_name_and_def_by_row(row, &playlist_name, &playlist_def);
if (ret < 0) {
para_printf(pb, "failed to get playlist data: %s\n",