From: Andre Noll Date: Mon, 22 Jul 2013 18:41:13 +0000 (+0200) Subject: Move com_setatt() from attribute.c to aft.c. X-Git-Tag: v0.5.0~7^2^2~1 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=fd5f94274de04e4dfed9bea8aadac661262d7cca;hp=a8573c4bfa41a407247fb1cae56cf9dfb890d6ca Move com_setatt() from attribute.c to aft.c. This command operates on rows of the audio file table. Pure code movement, no changes. --- diff --git a/aft.c b/aft.c index a2883d4a..412d19aa 100644 --- a/aft.c +++ b/aft.c @@ -2502,6 +2502,72 @@ int com_cpsi(struct command_context *cc) return ret; } +static void com_setatt_callback(__a_unused int fd, const struct osl_object *query) +{ + char *p; + uint64_t add_mask = 0, del_mask = 0; + int ret; + size_t len; + struct osl_object obj; + + for (p = query->data; p < (char *)query->data + query->size; p += len + 1) { + char c; + unsigned char bitnum; + + len = strlen(p); + ret = -E_ATTR_SYNTAX; + if (!*p) + goto out; + c = p[len - 1]; + if (c != '+' && c != '-') + break; + p[len - 1] = '\0'; + ret = get_attribute_bitnum_by_name(p, &bitnum); + if (ret < 0) + goto out; + if (c == '+') + add_mask |= (1UL << bitnum); + else + del_mask |= (1UL << bitnum); + } + ret = -E_ATTR_SYNTAX; + if (!add_mask && !del_mask) + goto out; + PARA_DEBUG_LOG("masks: %llx:%llx\n",(long long unsigned)add_mask, + (long long unsigned)del_mask); + for (; p < (char *)query->data + query->size; p += len + 1) { /* TODO: fnmatch */ + struct afs_info old_afsi, new_afsi; + struct afsi_change_event_data aced = {.old_afsi = &old_afsi}; + + len = strlen(p); + ret = aft_get_row_of_path(p, &aced.aft_row); + if (ret < 0) + goto out; + ret = get_afsi_object_of_row(aced.aft_row, &obj); + if (ret < 0) + goto out; + ret = load_afsi(&old_afsi, &obj); + if (ret < 0) + goto out; + new_afsi = old_afsi; + new_afsi.attributes |= add_mask; + new_afsi.attributes &= ~del_mask; + save_afsi(&new_afsi, &obj); /* in-place update */ + afs_event(AFSI_CHANGE, NULL, &aced); + } +out: + if (ret < 0) + PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); +} + +int com_setatt(struct command_context *cc) +{ + if (cc->argc < 3) + return -E_ATTR_SYNTAX; + return send_standard_callback_request(cc->argc - 1, cc->argv + 1, + com_setatt_callback, NULL, NULL); +} + static void afs_stat_callback(int fd, const struct osl_object *query) { int *parser_friendly = query->data; diff --git a/attribute.c b/attribute.c index a28de635..8c1f5c53 100644 --- a/attribute.c +++ b/attribute.c @@ -219,72 +219,6 @@ int com_lsatt(struct command_context *cc) return ret; } -static void com_setatt_callback(__a_unused int fd, const struct osl_object *query) -{ - char *p; - uint64_t add_mask = 0, del_mask = 0; - int ret; - size_t len; - struct osl_object obj; - - for (p = query->data; p < (char *)query->data + query->size; p += len + 1) { - char c; - unsigned char bitnum; - - len = strlen(p); - ret = -E_ATTR_SYNTAX; - if (!*p) - goto out; - c = p[len - 1]; - if (c != '+' && c != '-') - break; - p[len - 1] = '\0'; - ret = get_attribute_bitnum_by_name(p, &bitnum); - if (ret < 0) - goto out; - if (c == '+') - add_mask |= (1UL << bitnum); - else - del_mask |= (1UL << bitnum); - } - ret = -E_ATTR_SYNTAX; - if (!add_mask && !del_mask) - goto out; - PARA_DEBUG_LOG("masks: %llx:%llx\n",(long long unsigned)add_mask, - (long long unsigned)del_mask); - for (; p < (char *)query->data + query->size; p += len + 1) { /* TODO: fnmatch */ - struct afs_info old_afsi, new_afsi; - struct afsi_change_event_data aced = {.old_afsi = &old_afsi}; - - len = strlen(p); - ret = aft_get_row_of_path(p, &aced.aft_row); - if (ret < 0) - goto out; - ret = get_afsi_object_of_row(aced.aft_row, &obj); - if (ret < 0) - goto out; - ret = load_afsi(&old_afsi, &obj); - if (ret < 0) - goto out; - new_afsi = old_afsi; - new_afsi.attributes |= add_mask; - new_afsi.attributes &= ~del_mask; - save_afsi(&new_afsi, &obj); /* in-place update */ - afs_event(AFSI_CHANGE, NULL, &aced); - } -out: - if (ret < 0) - PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); -} - -int com_setatt(struct command_context *cc) -{ - if (cc->argc < 3) - return -E_ATTR_SYNTAX; - return send_standard_callback_request(cc->argc - 1, cc->argv + 1, - com_setatt_callback, NULL, NULL); -} - struct addatt_event_data { const char *name; unsigned char bitnum;