mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
common: Add gnupg_memstr to replace static versions.
* common/stringhelp.c (gnupg_memstr): New. * common/mbox-util.c (my_memstr): Remove. (is_valid_mailbox_mem): Use gnupg_memstr. * common/recsel.c (my_memstr): Remove. (recsel_select): Use gnupg_memstr.
This commit is contained in:
parent
3054016db9
commit
c91f759baf
@ -57,35 +57,6 @@ mem_count_chr (const void *buffer, int c, size_t length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This is a case-sensitive version of our memistr. I wonder why no
|
|
||||||
standard function memstr exists but I better do not use the name
|
|
||||||
memstr to avoid future conflicts. */
|
|
||||||
static const char *
|
|
||||||
my_memstr (const void *buffer, size_t buflen, const char *sub)
|
|
||||||
{
|
|
||||||
const unsigned char *buf = buffer;
|
|
||||||
const unsigned char *t = (const unsigned char *)buf;
|
|
||||||
const unsigned char *s = (const unsigned char *)sub;
|
|
||||||
size_t n = buflen;
|
|
||||||
|
|
||||||
for ( ; n ; t++, n-- )
|
|
||||||
{
|
|
||||||
if (*t == *s)
|
|
||||||
{
|
|
||||||
for (buf = t++, buflen = n--, s++; n && *t ==*s; t++, s++, n--)
|
|
||||||
;
|
|
||||||
if (!*s)
|
|
||||||
return (const char*)buf;
|
|
||||||
t = (const unsigned char *)buf;
|
|
||||||
s = (const unsigned char *)sub ;
|
|
||||||
n = buflen;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
string_has_ctrl_or_space (const char *string)
|
string_has_ctrl_or_space (const char *string)
|
||||||
{
|
{
|
||||||
@ -159,7 +130,7 @@ is_valid_mailbox_mem (const void *name_arg, size_t namelen)
|
|||||||
|| *name == '@'
|
|| *name == '@'
|
||||||
|| name[namelen-1] == '@'
|
|| name[namelen-1] == '@'
|
||||||
|| name[namelen-1] == '.'
|
|| name[namelen-1] == '.'
|
||||||
|| my_memstr (name, namelen, ".."));
|
|| gnupg_memstr (name, namelen, ".."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,37 +85,6 @@ my_error (gpg_err_code_t ec)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This is a case-sensitive version of our memistr. I wonder why no
|
|
||||||
* standard function memstr exists but I better do not use the name
|
|
||||||
* memstr to avoid future conflicts.
|
|
||||||
*
|
|
||||||
* FIXME: Move this to a stringhelp.c
|
|
||||||
*/
|
|
||||||
static const char *
|
|
||||||
my_memstr (const void *buffer, size_t buflen, const char *sub)
|
|
||||||
{
|
|
||||||
const unsigned char *buf = buffer;
|
|
||||||
const unsigned char *t = (const unsigned char *)buf;
|
|
||||||
const unsigned char *s = (const unsigned char *)sub;
|
|
||||||
size_t n = buflen;
|
|
||||||
|
|
||||||
for ( ; n ; t++, n-- )
|
|
||||||
{
|
|
||||||
if (*t == *s)
|
|
||||||
{
|
|
||||||
for (buf = t++, buflen = n--, s++; n && *t ==*s; t++, s++, n--)
|
|
||||||
;
|
|
||||||
if (!*s)
|
|
||||||
return (const char*)buf;
|
|
||||||
t = (const unsigned char *)buf;
|
|
||||||
s = (const unsigned char *)sub ;
|
|
||||||
n = buflen;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Return a pointer to the next logical connection operator or NULL if
|
/* Return a pointer to the next logical connection operator or NULL if
|
||||||
* none. */
|
* none. */
|
||||||
static char *
|
static char *
|
||||||
@ -560,7 +529,7 @@ recsel_select (recsel_expr_t selector,
|
|||||||
break;
|
break;
|
||||||
case SELECT_SUB:
|
case SELECT_SUB:
|
||||||
if (se->xcase)
|
if (se->xcase)
|
||||||
result = !!my_memstr (value, valuelen, se->value);
|
result = !!gnupg_memstr (value, valuelen, se->value);
|
||||||
else
|
else
|
||||||
result = !!memistr (value, valuelen, se->value);
|
result = !!memistr (value, valuelen, se->value);
|
||||||
break;
|
break;
|
||||||
|
@ -161,6 +161,35 @@ ascii_memistr ( const void *buffer, size_t buflen, const char *sub )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* This is a case-sensitive version of our memistr. I wonder why no
|
||||||
|
* standard function memstr exists but we better do not use the name
|
||||||
|
* memstr to avoid future conflicts.
|
||||||
|
*/
|
||||||
|
const char *
|
||||||
|
gnupg_memstr (const void *buffer, size_t buflen, const char *sub)
|
||||||
|
{
|
||||||
|
const unsigned char *buf = buffer;
|
||||||
|
const unsigned char *t = (const unsigned char *)buf;
|
||||||
|
const unsigned char *s = (const unsigned char *)sub;
|
||||||
|
size_t n = buflen;
|
||||||
|
|
||||||
|
for ( ; n ; t++, n-- )
|
||||||
|
{
|
||||||
|
if (*t == *s)
|
||||||
|
{
|
||||||
|
for (buf = t++, buflen = n--, s++; n && *t ==*s; t++, s++, n--)
|
||||||
|
;
|
||||||
|
if (!*s)
|
||||||
|
return (const char*)buf;
|
||||||
|
t = (const unsigned char *)buf;
|
||||||
|
s = (const unsigned char *)sub ;
|
||||||
|
n = buflen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This function is similar to strncpy(). However it won't copy more
|
/* This function is similar to strncpy(). However it won't copy more
|
||||||
* than N - 1 characters and makes sure that a '\0' is appended. With
|
* than N - 1 characters and makes sure that a '\0' is appended. With
|
||||||
* N given as 0, nothing will happen. With DEST given as NULL, memory
|
* N given as 0, nothing will happen. With DEST given as NULL, memory
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
char *has_leading_keyword (const char *string, const char *keyword);
|
char *has_leading_keyword (const char *string, const char *keyword);
|
||||||
|
|
||||||
const char *memistr (const void *buf, size_t buflen, const char *sub);
|
const char *memistr (const void *buf, size_t buflen, const char *sub);
|
||||||
|
const char *gnupg_memstr (const void *buffer, size_t buflen, const char *sub);
|
||||||
char *mem2str( char *, const void *, size_t);
|
char *mem2str( char *, const void *, size_t);
|
||||||
char *trim_spaces( char *string );
|
char *trim_spaces( char *string );
|
||||||
char *ascii_trim_spaces (char *string);
|
char *ascii_trim_spaces (char *string);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user