From fd5f94274de04e4dfed9bea8aadac661262d7cca Mon Sep 17 00:00:00 2001
From: Andre Noll <maan@systemlinux.org>
Date: Mon, 22 Jul 2013 20:41:13 +0200
Subject: [PATCH] Move com_setatt() from attribute.c to aft.c.

This command operates on rows of the audio file table. Pure code
movement, no changes.
---
 aft.c       | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 attribute.c | 66 -----------------------------------------------------
 2 files changed, 66 insertions(+), 66 deletions(-)

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;
-- 
2.39.5