aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-12-19 04:58:09 +0000
committerMike Frysinger <vapier@gentoo.org>2011-12-19 04:58:09 +0000
commit632106783a1f772e03f235fee32d582bcfd401fb (patch)
tree5587524379123a2beaec11a7744a4933d2865487 /qmerge.c
parentfix -Wtype-limits warnings ... fwrite() cannot be less than 0 (diff)
downloadportage-utils-632106783a1f772e03f235fee32d582bcfd401fb.tar.gz
portage-utils-632106783a1f772e03f235fee32d582bcfd401fb.tar.bz2
portage-utils-632106783a1f772e03f235fee32d582bcfd401fb.zip
avoid xstrdup when qmerge fetching when possible
Diffstat (limited to 'qmerge.c')
-rw-r--r--qmerge.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/qmerge.c b/qmerge.c
index 92dad7b0..566c4213 100644
--- a/qmerge.c
+++ b/qmerge.c
@@ -1,7 +1,7 @@
/*
* Copyright 2005-2010 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/portage-utils/qmerge.c,v 1.114 2011/12/19 04:23:18 vapier Exp $
+ * $Header: /var/cvsroot/gentoo-projects/portage-utils/qmerge.c,v 1.115 2011/12/19 04:58:09 vapier Exp $
*
* Copyright 2005-2010 Ned Ludd - <solar@gentoo.org>
* Copyright 2005-2010 Mike Frysinger - <vapier@gentoo.org>
@@ -65,7 +65,7 @@ static const char * const qmerge_opts_help[] = {
COMMON_OPTS_HELP
};
-static const char qmerge_rcsid[] = "$Id: qmerge.c,v 1.114 2011/12/19 04:23:18 vapier Exp $";
+static const char qmerge_rcsid[] = "$Id: qmerge.c,v 1.115 2011/12/19 04:58:09 vapier Exp $";
#define qmerge_usage(ret) usage(ret, QMERGE_FLAGS, qmerge_long_opts, qmerge_opts_help, lookup_applet_idx("qmerge"))
char search_pkgs = 0;
@@ -132,27 +132,29 @@ _q_static void fetch(const char *destdir, const char *src)
pid_t p;
int status;
- const char *prog = (force_download || install) ? "wget" : pretend ? "echo" : "wget";
+ char prog[] = "wget";
+ char argv_c[] = "-c";
+ char argv_P[] = "-P";
+ char argv_q[] = "-q";
+ char *argv_dir = xstrdup(destdir);
char *argv[] = {
- xstrdup(prog),
- xstrdup("-c"),
- xstrdup("-P"),
- xstrdup(destdir),
+ prog,
+ argv_c,
+ argv_P,
+ argv_dir,
buf,
- quiet ? xstrdup("-q") : NULL,
+ quiet ? argv_q : NULL,
NULL,
};
+ if (!(force_download || install) && pretend)
+ strcpy(prog, "echo");
snprintf(buf, sizeof(buf), "%s/%s", binhost, src);
p = vfork();
if (p == 0)
_exit(execvp(prog, argv));
- free(argv[0]);
- free(argv[1]);
- free(argv[2]);
- free(argv[3]);
- free(argv[5]);
+ free(argv_dir);
waitpid(p, &status, 0);
#if 0