The following commit has been merged in the master branch:
commit 97c8020b42b8be6b62e35b785e0411d963eaeae7
Author: Guillem Jover <[email protected]>
Date: Sun Nov 7 09:07:42 2010 +0100
u-a: Refactor duplicate code into new checked_rm_args()
diff --git a/utils/update-alternatives.c b/utils/update-alternatives.c
index 7e9d817..1b7eb6a 100644
--- a/utils/update-alternatives.c
+++ b/utils/update-alternatives.c
@@ -492,6 +492,20 @@ checked_rm(const char *f)
error(_("unable to remove %s: %s"), f, strerror(errno));
}
+static void DPKG_ATTR_PRINTF(1)
+checked_rm_args(const char *fmt, ...)
+{
+ va_list args;
+ char *path;
+
+ va_start(args, fmt);
+ xvasprintf(&path, fmt, args);
+ va_end(args);
+
+ checked_rm(path);
+ free(path);
+}
+
/*
* OBJECTS
*/
@@ -1652,39 +1666,26 @@ alternative_prepare_install(struct alternative *a,
const char *choice)
static void
alternative_remove(struct alternative *a)
{
- char *fn;
struct stat st;
struct slave_link *sl;
- xasprintf(&fn, "%s" DPKG_TMP_EXT, a->master_link);
- checked_rm(fn);
- free(fn);
+ checked_rm_args("%s" DPKG_TMP_EXT, a->master_link);
if (lstat(a->master_link, &st) == 0 && S_ISLNK(st.st_mode))
checked_rm(a->master_link);
- xasprintf(&fn, "%s/%s" DPKG_TMP_EXT, altdir, a->master_name);
- checked_rm(fn);
- free(fn);
- xasprintf(&fn, "%s/%s", altdir, a->master_name);
- checked_rm(fn);
- free(fn);
+
+ checked_rm_args("%s/%s" DPKG_TMP_EXT, altdir, a->master_name);
+ checked_rm_args("%s/%s", altdir, a->master_name);
for (sl = a->slaves; sl; sl = sl->next) {
- xasprintf(&fn, "%s" DPKG_TMP_EXT, sl->link);
- checked_rm(fn);
- free(fn);
+ checked_rm_args("%s" DPKG_TMP_EXT, sl->link);
if (lstat(sl->link, &st) == 0 && S_ISLNK(st.st_mode))
checked_rm(sl->link);
- xasprintf(&fn, "%s/%s" DPKG_TMP_EXT, altdir, sl->name);
- checked_rm(fn);
- free(fn);
- xasprintf(&fn, "%s/%s", altdir, sl->name);
- checked_rm(fn);
- free(fn);
+
+ checked_rm_args("%s/%s" DPKG_TMP_EXT, altdir, sl->name);
+ checked_rm_args("%s/%s", altdir, sl->name);
}
/* Drop admin file */
- xasprintf(&fn, "%s/%s", admdir, a->master_name);
- checked_rm(fn);
- free(fn);
+ checked_rm_args("%s/%s", admdir, a->master_name);
}
static bool
--
dpkg's main repository
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]