2 * Copyright (C) 2005-2009 Atsushi Konno All rights reserved.
3 * Copyright (C) 2005 QSDN,Inc. All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #include "chxj_str_util.h"
20 chxj_chk_numeric(const char *s)
25 if (! s) return -1; /* NG(not numeric) */
28 if (len == 0) return -1; /* NG(not numeric) */
30 for (ii=0; ii<len; ii++) {
31 if (ii == 0 && (s[ii] < '0' || s[ii] > '9') && s[ii] != '-') {
32 return -1; /* NG(not numeric) */
34 if (ii != 0 && (s[ii] < '0' || s[ii] > '9')) {
35 return -1; /* NG(not numeric) */
45 chxj_atoi(const char *s)
59 for (ii=0; ii < len && break_flag == 0; ii++) {
62 case '0': result += 0; break;
63 case '1': result += 1; break;
64 case '2': result += 2; break;
65 case '3': result += 3; break;
66 case '4': result += 4; break;
67 case '5': result += 5; break;
68 case '6': result += 6; break;
69 case '7': result += 7; break;
70 case '8': result += 8; break;
71 case '9': result += 9; break;
103 chxj_strcasenrcmp(apr_pool_t *p, const char *s1, const char *s2, int n)
116 s1_len = strlen(s1) - 1;
122 s2_len = strlen(s2) - 1;
125 ss1 = (char *)apr_palloc(p, s1_len + 2);
129 ss2 = (char *)apr_palloc(p, s2_len + 2);
142 ss1p = &ss1[s1_len+1];
143 ss2p = &ss2[s2_len+1];
145 for (;*ss1p && *ss2p && *ss1p == *ss2p && n - 1 > 0; ss1p--, ss2p--, n--);
146 return (int)(*ss1p - *ss2p);
151 chxj_starts_with(const char *str, const char *word)
154 char *w = (char *)word;
155 char *s = (char *)str;
159 if (len == 0) len = 1;
160 return strncasecmp(s, w, len) == 0;
165 chxj_add_slash_to_doublequote(apr_pool_t *pool, const char *str)
176 for (ii=0; ii<len; ii++) {
177 if (str[ii] == '"') {
181 tlen = (len - cnt) + (cnt * (sizeof(""")-1)) + 1;
182 ret = apr_palloc(pool, tlen);
183 memset(ret, 0, tlen);
185 for (ii=0; ii<len; ii++) {
186 if (str[ii] == '"') {
187 strcpy(&ret[pos], """);
188 pos += sizeof(""")-1;
191 ret[pos++] = str[ii];