aboutsummaryrefslogtreecommitdiffstats
path: root/jnlib/stringhelp.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2007-06-18 20:15:01 +0000
committerMarcus Brinkmann <[email protected]>2007-06-18 20:15:01 +0000
commite47321829dde8fb24d63b42d20047db8028ff227 (patch)
treeef177e4395132ffa15688d8f0bf593823b9a97c3 /jnlib/stringhelp.c
parent2007-06-18 Marcus Brinkmann <[email protected]> (diff)
downloadgnupg-e47321829dde8fb24d63b42d20047db8028ff227.tar.gz
gnupg-e47321829dde8fb24d63b42d20047db8028ff227.zip
jnlib/
2007-06-18 Marcus Brinkmann <[email protected]> * stringhelp.h (percent_escape): New prototype. * stringhelp.c (percent_escape): New function. agent/ 2007-06-18 Marcus Brinkmann <[email protected]> * gpg-agent.c (main): Percent escape pathname in --gpgconf-list output. g10/ 2007-06-18 Marcus Brinkmann <[email protected]> * gpg.c (gpgconf_list): Percent escape output of --gpgconf-list. scdaemon/ 2007-06-18 Marcus Brinkmann <[email protected]> * scdaemon.c (main): Percent escape output of --gpgconf-list. sm/ 2007-06-18 Marcus Brinkmann <[email protected]> * gpgsm.c (main): Percent escape output of --gpgconf-list.
Diffstat (limited to '')
-rw-r--r--jnlib/stringhelp.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/jnlib/stringhelp.c b/jnlib/stringhelp.c
index b7f8b28db..49d91c075 100644
--- a/jnlib/stringhelp.c
+++ b/jnlib/stringhelp.c
@@ -1,6 +1,6 @@
/* stringhelp.c - standard string helper functions
* Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005,
- * 2006 Free Software Foundation, Inc.
+ * 2006, 2007 Free Software Foundation, Inc.
*
* This file is part of JNLIB.
*
@@ -825,3 +825,37 @@ memrchr (const void *buffer, int c, size_t n)
return NULL;
}
#endif /*HAVE_MEMRCHR*/
+
+
+/* Percent-escape the string STR by replacing colons with '%3a'. */
+char *
+percent_escape (const char *str)
+{
+ int i = 0;
+ int j = 0;
+ char *ptr;
+
+ if (!str)
+ return NULL;
+
+ while (str[i])
+ if (str[i++] == ':')
+ j++;
+ ptr = jnlib_xmalloc (i + 2 * j + 1);
+ i = 0;
+ while (*str)
+ {
+ if (*str == ':')
+ {
+ ptr[i++] = '%';
+ ptr[i++] = '3';
+ ptr[i++] = 'a';
+ }
+ else
+ ptr[i++] = *str;
+ str++;
+ }
+ ptr[i] = '\0';
+
+ return ptr;
+}