+static void
+free_delayed_set_stat (struct delayed_set_stat *data)
+{
+ free (data->file_name);
+ xheader_xattr_free (data->xattr_map, data->xattr_map_size);
+ free (data->cntx_name);
+ free (data->acls_a_ptr);
+ free (data->acls_d_ptr);
+ free (data);
+}
+
+void
+remove_delayed_set_stat (const char *fname)
+{
+ struct delayed_set_stat *data, *next, *prev = NULL;
+ for (data = delayed_set_stat_head; data; data = next)
+ {
+ next = data->next;
+ if (chdir_current == data->change_dir
+ && strcmp (data->file_name, fname) == 0)
+ {
+ free_delayed_set_stat (data);
+ if (prev)
+ prev->next = next;
+ else
+ delayed_set_stat_head = next;
+ return;
+ }
+ else
+ prev = data;
+ }
+}
+
+static void
+fixup_delayed_set_stat (char const *src, char const *dst)
+{
+ struct delayed_set_stat *data;
+ for (data = delayed_set_stat_head; data; data = data->next)
+ {
+ if (chdir_current == data->change_dir
+ && strcmp (data->file_name, src) == 0)
+ {
+ free (data->file_name);
+ data->file_name = xstrdup (dst);
+ data->file_name_len = strlen (dst);
+ return;
+ }
+ }
+}
+