From 4f73ecaf7def2a7bdc381eee2036f6539df01e7d Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sun, 12 Jul 2009 18:15:23 +0200 Subject: rm: rewrite to use fts * remove.c: Don't include "unlinkdir.h"; no longer used. Do not include or "cycle-check.h". Likewise. Include "xfts.h". (dir_name, dir_len): Remove definitions. (CONSECUTIVE_READDIR_UNLINK_THRESHOLD): Likewise. (INODE_SORT_DIR_ENTRIES_THRESHOLD, NEED_REWIND, D_TYPE): Likewise. (struct dirstack_state, Dirstack_state): Likewise. (g_buf, g_n_allocated): Remove declarations. (hash_freer, hash_compare_strings, rm_malloc): Remove functions. (rm_free, push_dir, top_dir, pop_dir, right_justify): Likewise. (full_filename0, xfull_filename, full_filename_): Likewise. (AD_stack_height, AD_stack_top, AD_stack_pop, AD_stack_clear): Likewise. (obstack_init_minimal, ds_init, ds_clear, ds_free): Likewise. (AD_pop_and_chdir, AD_ensure_initialized, AD_mark_helper): Likewise. (AD_mark_as_unremovable, AD_mark_current_as_unremovable): Likewise. (AD_push_initial, AD_push, AD_push, AD_is_removable): Likewise. (write_protected_non_symlink): Change 3rd parameter from dirstack_state "ds" to full_name. (prompt): Adjust parameters. Now, state comes from FTS/FTSENT pair. Those replace fd_cwd and "ds". Remove "filename". Remove pdirent_type in favor of new "is_dir" parameter. Rename is_empty to is_empty_p. (DO_RMDIR, DO_UNLINK): Remove definitions. (remove_entry, fd_to_subdirp, compare_ino): Remove functions. (dirent_count, dirent_inode_sort_may_be_useful): Likewise. (preprocess_dir): Likewise. (fts_skip_tree, mark_ancestor_dirs, excise, rm_fts): New functions. (remove_cwd_entries, remove_dir, rm_1): Remove functions. (rm): Rewrite as a simple loop calling fts_read and dispatching each entry via rm_fts. * src/rm.c (main): Adapt to new signature of rm(). * bootstrap.conf (gnulib_modules): Remove unlinkdir, no longer used. * src/Makefile.am (sc_tight_scope): Also recognize an extern "enum" declaration. * tests/rm/empty-name: Adjust expected output to match new diagnostic. * NEWS (Improvements): Mention it. --- tests/rm/empty-name | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/rm/empty-name') diff --git a/tests/rm/empty-name b/tests/rm/empty-name index f2508ce60..08cc8e339 100755 --- a/tests/rm/empty-name +++ b/tests/rm/empty-name @@ -34,7 +34,7 @@ my @Tests = # test-name options input expected-output # ['empty-name-1', "''", {EXIT => 1}, - {ERR => "$prog: cannot remove `': No such file or directory\n"}], + {ERR => "$prog: invalid argument: `'\n"}], ); my $save_temps = $ENV{SAVE_TEMPS}; -- cgit v1.2.3-70-g09d2