Przeglądaj źródła

u-a: Refactor duplicate code into new checked_rm_args()

Guillem Jover 15 lat temu
rodzic
commit
97c8020b42
1 zmienionych plików z 23 dodań i 22 usunięć
  1. 23 22
      utils/update-alternatives.c

+ 23 - 22
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