* bootstrap.conf (gnulib_modules): Add getcwd-lgpl.
* tests/commandtest.c (checkoutput): Drop unused cwd.
* tests/commandhelper.c (main): Let getcwd malloc.
* tests/testutils.c (virTestMain): Likewise.
* tools/virsh.c (cmdPwd): Likewise.
(virshCmds): Expose cmdPwd and cmdCd on mingw.
---
Oh, and now that gnulib getcwd-lgpl exists, we could use it
to fix our uses of getcwd(NULL,0), followup coming later.
bootstrap.conf | 1 +
tests/commandhelper.c | 7 ++++---
tests/commandtest.c | 4 ----
tests/testutils.c | 3 +--
tools/virsh.c | 34 ++++++++--------------------------
5 files changed, 14 insertions(+), 35 deletions(-)
diff --git a/bootstrap.conf b/bootstrap.conf
index 3b3a90f..fde00da 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -36,6 +36,7 @@ dirname-lgpl
fcntl-h
func
getaddrinfo
+getcwd-lgpl
gethostname
getpass
gettext-h
diff --git a/tests/commandhelper.c b/tests/commandhelper.c
index 46c00f4..d60d505 100644
--- a/tests/commandhelper.c
+++ b/tests/commandhelper.c
@@ -51,6 +51,7 @@ int main(int argc, char **argv) {
int i, n;
char **origenv;
char **newenv;
+ char *cwd;
FILE *log = fopen(abs_builddir "/commandhelper.log", "w");
if (!log)
@@ -99,13 +100,13 @@ int main(int argc, char **argv) {
}
fprintf(log, "DAEMON:%s\n", getpgrp() == getsid(0) ? "yes" :
"no");
- char cwd[1024];
- if (!getcwd(cwd, sizeof(cwd)))
+ if (!(cwd = getcwd(NULL, 0)))
return EXIT_FAILURE;
- if (strlen(cwd) > strlen("/commanddata") &&
+ if (strlen(cwd) > strlen(".../commanddata") &&
STREQ(cwd + strlen(cwd) - strlen("/commanddata"),
"/commanddata"))
strcpy(cwd, ".../commanddata");
fprintf(log, "CWD:%s\n", cwd);
+ VIR_FREE(cwd);
VIR_FORCE_FCLOSE(log);
diff --git a/tests/commandtest.c b/tests/commandtest.c
index 509c888..fa0061c 100644
--- a/tests/commandtest.c
+++ b/tests/commandtest.c
@@ -49,15 +49,11 @@ mymain(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
static int checkoutput(const char *testname)
{
int ret = -1;
- char cwd[1024];
char *expectname = NULL;
char *expectlog = NULL;
char *actualname = NULL;
char *actuallog = NULL;
- if (!getcwd(cwd, sizeof(cwd)))
- return -1;
-
if (virAsprintf(&expectname, "%s/commanddata/%s.log", abs_srcdir,
testname) < 0)
goto cleanup;
diff --git a/tests/testutils.c b/tests/testutils.c
index 456a735..91035a2 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -478,7 +478,6 @@ int virtTestMain(int argc,
int (*func)(void))
{
int ret;
- char cwd[PATH_MAX];
#if TEST_OOM
int approxAlloc = 0;
int n;
@@ -491,7 +490,7 @@ int virtTestMain(int argc,
abs_srcdir = getenv("abs_srcdir");
if (!abs_srcdir)
- abs_srcdir = getcwd(cwd, sizeof(cwd));
+ abs_srcdir = getcwd(NULL, 0);
if (!abs_srcdir)
exit(EXIT_AM_HARDFAIL);
diff --git a/tools/virsh.c b/tools/virsh.c
index 0212b99..506572b 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -9893,7 +9893,6 @@ editReadBackFile (vshControl *ctl, const char *filename)
}
-#ifndef WIN32
/*
* "cd" command
*/
@@ -9936,9 +9935,6 @@ cmdCd(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
return ret;
}
-#endif
-
-#ifndef WIN32
/*
* "pwd" command
*/
@@ -9952,30 +9948,20 @@ static bool
cmdPwd(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
{
char *cwd;
- size_t path_max;
- bool err = true;
-
- path_max = (size_t) PATH_MAX + 2;
- cwd = vshMalloc (ctl, path_max);
- while (cwd) {
- err = getcwd (cwd, path_max) == NULL;
- if (!err || errno != ERANGE)
- break;
-
- path_max *= 2;
- cwd = vshRealloc (ctl, cwd, path_max);
- }
+ bool ret = true;
- if (err)
+ cwd = getcwd(NULL, 0);
+ if (!cwd) {
vshError(ctl, _("pwd: cannot get current directory: %s"),
strerror(errno));
- else
+ ret = false;
+ } else {
vshPrint (ctl, _("%s\n"), cwd);
+ VIR_FREE(cwd);
+ }
- VIR_FREE(cwd);
- return !err;
+ return ret;
}
-#endif
/*
* "echo" command
@@ -10862,15 +10848,11 @@ static const vshCmdDef secretCmds[] = {
};
static const vshCmdDef virshCmds[] = {
-#ifndef WIN32
{"cd", cmdCd, opts_cd, info_cd},
-#endif
{"echo", cmdEcho, opts_echo, info_echo},
{"exit", cmdQuit, NULL, info_quit},
{"help", cmdHelp, opts_help, info_help},
-#ifndef WIN32
{"pwd", cmdPwd, NULL, info_pwd},
-#endif
{"quit", cmdQuit, NULL, info_quit},
{NULL, NULL, NULL, NULL}
};
--
1.7.4.4