-const char miscutil_rcs[] = "$Id: miscutil.c,v 2.0 2002/06/04 14:34:21 jongfoster Exp $";
+const char miscutil_rcs[] = "$Id: miscutil.c,v 2.3 2002/09/25 13:00:41 oes Exp $";
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/src/miscutil.c,v $
+ * File : $Source: /cvsroot/ijbswa//current/src/miscutil.c,v $
*
* Purpose : zalloc, hash_string, safe_strerror, strcmpic,
* strncmpic, chomp, and MinGW32 strdup
*
* Revisions :
* $Log: miscutil.c,v $
+ * Revision 2.3 2002/09/25 13:00:41 oes
+ * Made strcmpic and strncmpic safe against NULL arguments
+ * (which are now treated as empty strings).
+ *
+ * Revision 2.2 2002/08/26 11:16:33 sarantis
+ * Fix typo.
+ *
+ * Revision 2.1 2002/06/04 17:22:37 jongfoster
+ * Adding comments
+ *
* Revision 2.0 2002/06/04 14:34:21 jongfoster
* Moving source files to src/
*
*********************************************************************/
int strcmpic(const char *s1, const char *s2)
{
+ if (!s1) s1 = "";
+ if (!s2) s2 = "";
+
while (*s1 && *s2)
{
if ( ( *s1 != *s2 ) && ( ijb_tolower(*s1) != ijb_tolower(*s2) ) )
int strncmpic(const char *s1, const char *s2, size_t n)
{
if (n <= 0) return(0);
-
+ if (!s1) s1 = "";
+ if (!s2) s2 = "";
+
while (*s1 && *s2)
{
if ( ( *s1 != *s2 ) && ( ijb_tolower(*s1) != ijb_tolower(*s2) ) )
if ((*pat == *txt)
|| ((*pat == ']') && (charmap[*txt / 8] & (1 << (*txt % 8)))) )
{
- /* Sucess, go ahead */
+ /*
+ * Sucess: Go ahead
+ */
pat++;
}
- else
+ else if (!wildcard)
{
- /* In wildcard mode, just try again after failiure */
- if(wildcard)
- {
- pat = fallback;
- }
-
- /* Else, bad luck */
- else
- {
- return 1;
- }
+ /*
+ * No match && no wildcard: No luck
+ */
+ return 1;
+ }
+ else if (pat != fallback)
+ {
+ /*
+ * Wildcard mode && nonmatch beyond fallback: Rewind pattern
+ */
+ pat = fallback;
+ continue;
}
txt++;
- }
+ }
/* Cut off extra '*'s */
if(*pat == '*') pat++;
* 1 : string = string to be duplicated
* 2 : len = number of bytes to duplicate
*
- * Returns : pointer to copy, or NULL if failiure
+ * Returns : pointer to copy, or NULL if failure
*
*********************************************************************/
char *bindup(const char *string, size_t len)