return;
}
} while (c--);
- PARA_INFO_LOG("%s\n", "no attributes");
+ PARA_INFO_LOG("no attributes\n");
greatest_att_bitnum = -E_NO_ATTRIBUTES;
}
new_afsi.attributes |= add_mask;
new_afsi.attributes &= ~del_mask;
save_afsi(&new_afsi, &obj); /* in-place update */
-// ret = mood_update_audio_file(aft_row, &old_afsi);
-// if (ret < 0)
-// return ret;
+ // FIXME: Event?
}
return 1;
}
NULL);
}
+struct addatt_event_data {
+ const char *name;
+ unsigned char bitnum;
+};
+
+
static int com_addatt_callback(const struct osl_object *query,
struct osl_object *result)
{
return ret;
}
-
+/** Data passed to the action handler of com_rmatt(). */
struct remove_attribute_action_data {
+ /** Message buffer. */
struct para_buffer pb;
+ /** Numver of attributes removed. */
int num_removed;
+ /** Bitwise "or" of the removed attributes. */
uint64_t mask_of_removed_atts;
};
const uint64_t one = 1;
*text = NULL;
- if (greatest_att_bitnum < 0) /* no attributes available */
+ if (greatest_att_bitnum < 0) { /* no attributes available */
+ *text = para_strdup("(no attributes available)");
return 1;
+ }
for (i = 0; i <= greatest_att_bitnum; i++) {
unsigned char bn = i;
struct osl_object obj = {.data = &bn, .size = 1};
/**
* Close the attribute table.
*
- * \param flags Ususal flags that are passed to osl_close_table().
- *
* \sa osl_close_table().
*/
void attribute_close(void)