From e47321829dde8fb24d63b42d20047db8028ff227 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Mon, 18 Jun 2007 20:15:01 +0000 Subject: jnlib/ 2007-06-18 Marcus Brinkmann * stringhelp.h (percent_escape): New prototype. * stringhelp.c (percent_escape): New function. agent/ 2007-06-18 Marcus Brinkmann * gpg-agent.c (main): Percent escape pathname in --gpgconf-list output. g10/ 2007-06-18 Marcus Brinkmann * gpg.c (gpgconf_list): Percent escape output of --gpgconf-list. scdaemon/ 2007-06-18 Marcus Brinkmann * scdaemon.c (main): Percent escape output of --gpgconf-list. sm/ 2007-06-18 Marcus Brinkmann * gpgsm.c (main): Percent escape output of --gpgconf-list. --- jnlib/stringhelp.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'jnlib/stringhelp.c') 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; +} -- cgit