aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/sysutils.c30
-rw-r--r--common/sysutils.h1
-rw-r--r--tools/gpg-connect-agent.c26
3 files changed, 32 insertions, 25 deletions
diff --git a/common/sysutils.c b/common/sysutils.c
index 0d92741ec..95e0f8c0b 100644
--- a/common/sysutils.c
+++ b/common/sysutils.c
@@ -657,6 +657,36 @@ gnupg_unsetenv (const char *name)
#endif
}
+
+/* Return the current working directory as a malloced string. Return
+ NULL and sets ERRNo on error. */
+char *
+gnupg_getcwd (void)
+{
+ char *buffer;
+ size_t size = 100;
+
+ for (;;)
+ {
+ buffer = xtrymalloc (size+1);
+ if (!buffer)
+ return NULL;
+#ifdef HAVE_W32CE_SYSTEM
+ strcpy (buffer, "/"); /* Always "/". */
+ return buffer;
+#else
+ if (getcwd (buffer, size) == buffer)
+ return buffer;
+ xfree (buffer);
+ if (errno != ERANGE)
+ return NULL;
+ size *= 2;
+#endif
+ }
+}
+
+
+
#ifdef HAVE_W32CE_SYSTEM
/* There is a isatty function declaration in cegcc but it does not
make sense, thus we redefine it. */
diff --git a/common/sysutils.h b/common/sysutils.h
index da2c2509d..d139665ac 100644
--- a/common/sysutils.h
+++ b/common/sysutils.h
@@ -63,6 +63,7 @@ int gnupg_remove (const char *fname);
int gnupg_mkdir (const char *name, const char *modestr);
int gnupg_setenv (const char *name, const char *value, int overwrite);
int gnupg_unsetenv (const char *name);
+char *gnupg_getcwd (void);
#ifdef HAVE_W32_SYSTEM
void *w32_get_user_sid (void);
diff --git a/tools/gpg-connect-agent.c b/tools/gpg-connect-agent.c
index 81e981b2c..07c3391d3 100644
--- a/tools/gpg-connect-agent.c
+++ b/tools/gpg-connect-agent.c
@@ -212,30 +212,6 @@ my_strusage( int level )
}
-static char *
-gnu_getcwd (void)
-{
- char *buffer;
- size_t size = 100;
-
- for (;;)
- {
- buffer = xmalloc (size+1);
-#ifdef HAVE_W32CE_SYSTEM
- strcpy (buffer, "/");
- return buffer;
-#else
- if (getcwd (buffer, size) == buffer)
- return buffer;
- xfree (buffer);
- if (errno != ERANGE)
- return NULL;
- size *= 2;
-#endif
- }
-}
-
-
/* Unescape STRING and returned the malloced result. The surrounding
quotes must already be removed from STRING. */
static char *
@@ -568,7 +544,7 @@ get_var_ext (const char *name)
s++;
if (!strcmp (s, "cwd"))
{
- result = gnu_getcwd ();
+ result = gnupg_getcwd ();
if (!result)
log_error ("getcwd failed: %s\n", strerror (errno));
}