+ char *old = query->data;
+ size_t size = strlen(old) + 1;
+ char *new = old + size;
+ struct osl_object obj = {.data = old, .size = size};
+ struct osl_row *row;
+ struct para_buffer pb = {
+ .max_size = shm_get_shmmax(),
+ .private_data = &(struct afs_max_size_handler_data) {
+ .fd = fd,
+ .band = SBD_OUTPUT
+ },
+ .max_size_handler = afs_max_size_handler,
+ };
+ int ret;
+
+ ret = osl(osl_get_row(attribute_table, ATTCOL_NAME, &obj, &row));
+ if (ret < 0)
+ goto out;
+ obj.data = new;
+ obj.size = strlen(new) + 1;
+ ret = osl(osl_update_object(attribute_table, row, ATTCOL_NAME, &obj));
+out:
+ if (ret < 0)
+ para_printf(&pb, "%s\n", para_strerror(-ret));
+ else
+ afs_event(ATTRIBUTE_RENAME, &pb, NULL);
+ if (pb.offset)
+ pass_buffer_as_shm(fd, SBD_OUTPUT, pb.buf, pb.offset);
+ free(pb.buf);
+}
+
+int com_mvatt(struct command_context *cc)
+{
+ int ret;
+
+ if (cc->argc != 3)