diff options
author | Sascha Schumann <sas@php.net> | 1999-04-21 17:11:01 +0000 |
---|---|---|
committer | Sascha Schumann <sas@php.net> | 1999-04-21 17:11:01 +0000 |
commit | dcc16af80cac7a2273aba9f0d7601392280d2185 (patch) | |
tree | 2ccc21a47b02e2f5309173528a297adb8306b5fc /ext/standard/reg.c | |
parent | a6e4ef3e31629a4060dffb1fcc3153b1854d4f7b (diff) | |
download | php-git-dcc16af80cac7a2273aba9f0d7601392280d2185.tar.gz |
port some fixes, add compat routines
Diffstat (limited to 'ext/standard/reg.c')
-rw-r--r-- | ext/standard/reg.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/ext/standard/reg.c b/ext/standard/reg.c index 42d36493d6..8b81e82e7f 100644 --- a/ext/standard/reg.c +++ b/ext/standard/reg.c @@ -537,7 +537,8 @@ PHPAPI void php3_sql_regcase(INTERNAL_FUNCTION_PARAMETERS) { pval *string; char *tmp; - register int i; + unsigned char c; + register int i, j; if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &string)==FAILURE) { WRONG_PARAM_COUNT; @@ -547,17 +548,22 @@ PHPAPI void php3_sql_regcase(INTERNAL_FUNCTION_PARAMETERS) tmp = (char *) emalloc(string->value.str.len*4+1); - for (i=0; i<string->value.str.len; i++) { - tmp[i*4] = '['; - tmp[i*4+1]=toupper((unsigned char)string->value.str.val[i]); - tmp[i*4+2]=tolower((unsigned char)string->value.str.val[i]); - tmp[i*4+3]=']'; + for (i=j=0; i<string->value.str.len; i++) { + c = (unsigned char) string->value.str.val[i]; + if(isalpha(c)) { + tmp[j++] = '['; + tmp[j++] = toupper(c); + tmp[j++] = tolower(c); + tmp[j++] = ']'; + } else { + tmp[j++] = c; + } } - tmp[string->value.str.len*4]=0; + tmp[j]=0; + + tmp = erealloc(tmp, j + 1); - return_value->value.str.val = tmp; - return_value->value.str.len = string->value.str.len*4; - return_value->type = IS_STRING; + RETVAL_STRINGL(tmp, j, 0); } /* }}} */ |