Use gnulib's new priv-set module and updated write-any-file.
With them, the remove-called can_write_any_file function no
longer tries to drop the unlink-directory privilege, so now
each caller of remove must do that separately, calling
priv_set_remove_linkdir.
* bootstrap.conf (gnulib_modules): Add priv-set.
* src/rm.c: Include "priv-set.h".
(main): Call priv_set_remove_linkdir.
* src/mv.c (main): Likewise.
* gnulib: Update submodule to latest.
posix-shell
posixtm
posixver
+ priv-set
progname
propername
putenv
-Subproject commit 9ccd438ce337e6fb8c95d9261f1e06a3952261c2
+Subproject commit a771b77559753840d51609c779d526590e6a0144
#include "quote.h"
#include "remove.h"
#include "root-dev-ino.h"
+#include "priv-set.h"
/* The official name of this program (e.g., no `g' prefix). */
#define PROGRAM_NAME "mv"
cp_option_init (&x);
+ /* Try to disable the ability to unlink a directory. */
+ priv_set_remove_linkdir ();
+
/* FIXME: consider not calling getenv for SIMPLE_BACKUP_SUFFIX unless
we'll actually use backup_suffix_string. */
backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
#include "remove.h"
#include "root-dev-ino.h"
#include "yesno.h"
+#include "priv-set.h"
/* The official name of this program (e.g., no `g' prefix). */
#define PROGRAM_NAME "rm"
rm_option_init (&x);
+ /* Try to disable the ability to unlink a directory. */
+ priv_set_remove_linkdir ();
+
while ((c = getopt_long (argc, argv, "dfirvIR", long_opts, NULL)) != -1)
{
switch (c)