Don't compute attributes string twice.
[paraslash.git] / attribute.c
index b130ab2..88b394a 100644 (file)
@@ -71,7 +71,7 @@ static void find_greatest_att_bitnum(void)
                        return;
                }
        } while (c--);
-       PARA_INFO_LOG("%s\n", "no attributes");
+       PARA_INFO_LOG("no attributes\n");
        greatest_att_bitnum = -E_NO_ATTRIBUTES;
 }
 
@@ -266,9 +266,7 @@ static int com_setatt_callback(const struct osl_object *query,
                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;
 }
@@ -281,6 +279,12 @@ int com_setatt(__a_unused int fd, int argc, char * const * const argv)
                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)
 {
@@ -411,10 +415,13 @@ int com_mvatt(int fd, int argc, char * const * const argv)
        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;
 };
 
@@ -523,8 +530,10 @@ int get_attribute_text(uint64_t *atts, const char *delim, char **text)
        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};
@@ -556,8 +565,6 @@ err:
 /**
  * Close the attribute table.
  *
- * \param flags Ususal flags that are passed to osl_close_table().
- *
  * \sa osl_close_table().
  */
 void attribute_close(void)