Convert sindex() and rsindex() to use const char * arguments
Also simply sindex() considerably using standard strspn() / strcspn() functions.
This commit is contained in:
@@ -28,8 +28,8 @@ char * BX_last_arg (char **);
|
|||||||
char * BX_expand_twiddle (char *);
|
char * BX_expand_twiddle (char *);
|
||||||
char * BX_upper (char *);
|
char * BX_upper (char *);
|
||||||
char * BX_lower (char *);
|
char * BX_lower (char *);
|
||||||
char * BX_sindex (register char *, char *);
|
char * BX_sindex (const char *, const char *);
|
||||||
char * BX_rsindex (register char *, char *, char *, int);
|
char * BX_rsindex (const char *, const char *, const char *, int);
|
||||||
char * BX_path_search (char *, char *);
|
char * BX_path_search (char *, char *);
|
||||||
char * BX_double_quote (const char *, const char *, char *);
|
char * BX_double_quote (const char *, const char *, char *);
|
||||||
|
|
||||||
|
|||||||
@@ -145,8 +145,8 @@ extern Function_ptr *global;
|
|||||||
#define remove_trailing_spaces (*(char * (*)(char *))global[REMOVE_TRAILING_SPACES])
|
#define remove_trailing_spaces (*(char * (*)(char *))global[REMOVE_TRAILING_SPACES])
|
||||||
#define expand_twiddle (*(char * (*)(char *))global[EXPAND_TWIDDLE])
|
#define expand_twiddle (*(char * (*)(char *))global[EXPAND_TWIDDLE])
|
||||||
#define check_nickname (*(char * (*)(char *))global[CHECK_NICKNAME])
|
#define check_nickname (*(char * (*)(char *))global[CHECK_NICKNAME])
|
||||||
#define sindex (*(char * (*)(char *, char *))global[SINDEX])
|
#define sindex (*(char * (*)(const char *, const char *))global[SINDEX])
|
||||||
#define rsindex (*(char * (*)(char *, char *, char *, int))global[RSINDEX])
|
#define rsindex (*(char * (*)(const char *, const char *, const char *, int))global[RSINDEX])
|
||||||
#define is_number (*(int (*)(const char *))global[ISNUMBER])
|
#define is_number (*(int (*)(const char *))global[ISNUMBER])
|
||||||
#define rfgets (*(char * (*)(char *, int , FILE *))global[RFGETS])
|
#define rfgets (*(char * (*)(char *, int , FILE *))global[RFGETS])
|
||||||
#define path_search (*(char * (*)(char *, char *))global[PATH_SEARCH])
|
#define path_search (*(char * (*)(char *, char *))global[PATH_SEARCH])
|
||||||
|
|||||||
@@ -1066,53 +1066,47 @@ char *BX_check_nickname (char *nick)
|
|||||||
return *nick ? nick : NULL;
|
return *nick ? nick : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* sindex()
|
||||||
* sindex: much like index(), but it looks for a match of any character in
|
*
|
||||||
* the group, and returns that position. If the first character is a ^, then
|
* Returns a pointer to the first matching character in a string, or NULL if
|
||||||
* this will match the first occurrence not in that group.
|
* there are no matching characters.
|
||||||
|
*
|
||||||
|
* A matching character is any character in 'group', unless the first
|
||||||
|
* character of 'group' is a ^, in which case a matching character is any
|
||||||
|
* character NOT in 'group'.
|
||||||
*/
|
*/
|
||||||
char *BX_sindex (register char *string, char *group)
|
char *BX_sindex(const char *string, const char *group)
|
||||||
{
|
{
|
||||||
char *ptr;
|
|
||||||
|
|
||||||
if (!string || !group)
|
if (!string || !group)
|
||||||
return (char *) NULL;
|
return NULL;
|
||||||
|
|
||||||
if (*group == '^')
|
if (*group == '^')
|
||||||
{
|
{
|
||||||
group++;
|
string += strspn(string, group + 1);
|
||||||
for (; *string; string++)
|
|
||||||
{
|
|
||||||
for (ptr = group; *ptr; ptr++)
|
|
||||||
{
|
|
||||||
if (*ptr == *string)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (*ptr == '\0')
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (; *string; string++)
|
string += strcspn(string, group);
|
||||||
{
|
|
||||||
for (ptr = group; *ptr; ptr++)
|
|
||||||
{
|
|
||||||
if (*ptr == *string)
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (char *) NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
if (*string)
|
||||||
* rsindex: much like rindex(), but it looks for a match of any character in
|
return (char *)string;
|
||||||
* the group, and returns that position. If the first character is a ^, then
|
else
|
||||||
* this will match the first occurrence not in that group.
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* rsindex()
|
||||||
|
*
|
||||||
|
* Returns a pointer to the howmany'th last matching character in a string, or
|
||||||
|
* NULL if there are less than howmany matching characters. Returns NULL
|
||||||
|
* if howmany is zero.
|
||||||
|
*
|
||||||
|
* A matching character is any character in 'group', unless the first character of 'group'
|
||||||
|
* is a ^, in which case a matching character is any character NOT in 'group'.
|
||||||
*/
|
*/
|
||||||
char *BX_rsindex (register char *string, char *start, char *group, int howmany)
|
char *BX_rsindex(const char *string, const char *start, const char *group, int howmany)
|
||||||
{
|
{
|
||||||
register char *ptr;
|
const char *ptr;
|
||||||
|
|
||||||
if (howmany && string && start && group && start <= string)
|
if (howmany && string && start && group && start <= string)
|
||||||
{
|
{
|
||||||
@@ -1124,7 +1118,7 @@ char *BX_rsindex (register char *string, char *start, char *group, int howmany)
|
|||||||
if (!strchr(group, *ptr))
|
if (!strchr(group, *ptr))
|
||||||
{
|
{
|
||||||
if (--howmany == 0)
|
if (--howmany == 0)
|
||||||
return ptr;
|
return (char *)ptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1135,7 +1129,7 @@ char *BX_rsindex (register char *string, char *start, char *group, int howmany)
|
|||||||
if (strchr(group, *ptr))
|
if (strchr(group, *ptr))
|
||||||
{
|
{
|
||||||
if (--howmany == 0)
|
if (--howmany == 0)
|
||||||
return ptr;
|
return (char *)ptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user