- Timestamp:
- Oct 26, 2003, 3:23:38 PM (21 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- bc08664
- Parents:
- 70b53ec
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
text.c
r8d24696 re3d9c77 115 115 } 116 116 117 118 117 int owl_text_num_lines(char *in) 119 118 { … … 190 189 } 191 190 192 out2=owl_ util_substitute(out, "<", "<");193 owl_free(out); 194 out=owl_ util_substitute(out2, ">", ">");191 out2=owl_text_substitute(out, "<", "<"); 192 owl_free(out); 193 out=owl_text_substitute(out2, ">", ">"); 195 194 owl_free(out2); 196 out2=owl_ util_substitute(out, "&", "&");197 owl_free(out); 198 out=owl_ util_substitute(out2, """, "\"");195 out2=owl_text_substitute(out, "&", "&"); 196 owl_free(out); 197 out=owl_text_substitute(out2, """, "\""); 199 198 owl_free(out2); 200 out2=owl_ util_substitute(out, " ", " ");201 owl_free(out); 202 out=owl_ util_substitute(out2, " ", " ");199 out2=owl_text_substitute(out, " ", " "); 200 owl_free(out); 201 out=owl_text_substitute(out2, " ", " "); 203 202 owl_free(out2); 204 out2=owl_ util_substitute(out, " ", " ");205 owl_free(out); 206 out=owl_ util_substitute(out2, "&endash;", "--");203 out2=owl_text_substitute(out, " ", " "); 204 owl_free(out); 205 out=owl_text_substitute(out2, "&endash;", "--"); 207 206 owl_free(out2); 208 out2=owl_ util_substitute(out, "&emdash;", "---");207 out2=owl_text_substitute(out, "&emdash;", "---"); 209 208 owl_free(out); 210 209 … … 257 256 return(out); 258 257 } 258 259 /* exactly like strstr but case insensitive */ 260 char *stristr(char *a, char *b) 261 { 262 char *x, *y, *ret; 263 264 if ((x=owl_strdup(a))==NULL) return(NULL); 265 if ((y=owl_strdup(b))==NULL) return(NULL); 266 downstr(x); 267 downstr(y); 268 ret=strstr(x, y); 269 if (ret==NULL) { 270 owl_free(x); 271 owl_free(y); 272 return(NULL); 273 } 274 ret=ret-x+a; 275 owl_free(x); 276 owl_free(y); 277 return(ret); 278 } 279 280 /* return 1 if a string is only whitespace, otherwise 0 */ 281 int only_whitespace(char *s) 282 { 283 int i; 284 for (i=0; s[i]; i++) { 285 if (!isspace((int) s[i])) return(0); 286 } 287 return(1); 288 } 289 290 char *owl_getquoting(char *line) 291 { 292 if (line[0]=='\0') return("'"); 293 if (strchr(line, '\'')) return("\""); 294 if (strchr(line, '"')) return("'"); 295 if (strchr(line, ' ')) return("'"); 296 return(""); 297 } 298 299 /* Return a string with any occurances of 'from' replaced with 'to'. 300 * Does not currently handle backslash quoting, but may in the future. 301 * Caller must free returned string. 302 */ 303 char *owl_text_substitute(char *in, char *from, char *to) 304 { 305 306 char *out; 307 int outlen, tolen, fromlen, inpos=0, outpos=0; 308 309 if (!*from) return owl_strdup(in); 310 311 outlen = strlen(in)+1; 312 tolen = strlen(to); 313 fromlen = strlen(from); 314 out = malloc(outlen); 315 316 while (in[inpos]) { 317 if (!strncmp(in+inpos, from, fromlen)) { 318 outlen += tolen; 319 out = owl_realloc(out, outlen); 320 strcpy(out+outpos, to); 321 inpos += fromlen; 322 outpos += tolen; 323 } else { 324 out[outpos] = in[inpos]; 325 inpos++; outpos++; 326 } 327 } 328 out[outpos] = '\0'; 329 return(out); 330 } 331 332 /* replace all instances of character a in buff with the character 333 * b. buff must be null terminated. 334 */ 335 void owl_text_tr(char *buff, char a, char b) 336 { 337 int i; 338 339 owl_function_debugmsg("In: %s", buff); 340 for (i=0; buff[i]!='\0'; i++) { 341 if (buff[i]==a) buff[i]=b; 342 } 343 owl_function_debugmsg("Out: %s", buff); 344 } 345 346 /* Return a string which is like 'in' except that every instance of 347 * any character in 'toquote' found in 'in' is preceeded by the string 348 * 'quotestr'. For example, owl_text_quote(in, "+*.", "\") would 349 * place a backslash before every '+', '*' or '.' in 'in'. It is 350 * permissable for a character in 'quotestr' to be in 'toquote'. 351 * On success returns the string, on error returns NULL. 352 */ 353 char *owl_text_quote(char *in, char *toquote, char *quotestr) 354 { 355 int i, x, r, place; 356 int in_len, toquote_len, quotestr_len; 357 char *out; 358 359 in_len=strlen(in); 360 toquote_len=strlen(toquote); 361 quotestr_len=strlen(quotestr); 362 out=owl_malloc((in_len*quotestr_len)+30); 363 place=0; 364 for (i=0; i<in_len; i++) { 365 366 /* check if it's a character that needs quoting */ 367 for (x=0; x<toquote_len; x++) { 368 if (in[i]==toquote[x]) { 369 /* quote it */ 370 for (r=0; r<quotestr_len; r++) { 371 out[place+r]=quotestr[r]; 372 } 373 place+=quotestr_len; 374 break; 375 } 376 } 377 378 /* either way, we now copy over the character */ 379 out[place]=in[i]; 380 place++; 381 } 382 out[place]='\0'; 383 return(out); 384 }
Note: See TracChangeset
for help on using the changeset viewer.