Changeset 7b4d90e
- Timestamp:
- Sep 25, 2009, 7:43:51 PM (14 years ago)
- Branches:
- master, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- dd6af02
- Parents:
- da60ba9
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
fmtext.c
r89b2daf r7b4d90e 418 418 /* Truncate the message so that each line begins at column 'acol' and 419 419 * ends at 'bcol' or sooner. The first column is number 0. The new 420 * message is placed in 'out'. The message is * expected to end in a 421 * new line for now. NOTE: This needs to be modified to deal with 422 * backing up if we find a SPACING COMBINING MARK at the end of a 423 * line. If that happens, we should back up to the last non-mark 424 * character and stop there. 420 * message is placed in 'out'. 421 * 422 * NOTE: This needs to be modified to deal with backing up if we find 423 * a SPACING * COMBINING MARK at the end of a line. If that happens, 424 * we should back up to * the last non-mark character and stop there. 425 * 426 * NOTE: If a line ends at bcol, we omit the newline. This is so printing 427 * to ncurses works. 425 428 */ 426 429 void owl_fmtext_truncate_cols(const owl_fmtext *in, int acol, int bcol, owl_fmtext *out) … … 439 442 ptr_e=strchr(ptr_s, '\n'); 440 443 if (!ptr_e) { 441 /* but this shouldn't happen if we end in a \n */ 442 break; 444 /* set it to the NULL at the end of the string, to handle a line that is 445 * not newline-terminated */ 446 ptr_e = last+1; 443 447 } 444 448 … … 495 499 owl_fmtext_append_normal(out, "\n"); 496 500 } 497 ptr_s = g_utf8_next_char(ptr_e); 501 /* Be careful if ptr_e is pointing to the NULL if we do not end with a 502 * newline. We don't really need this check, but pointing ptr_s past the 503 * NULL byte is just asking for problems later. 504 */ 505 ptr_s = (ptr_e <= last) ? g_utf8_next_char(ptr_e) : ptr_e; 498 506 } 499 507 } -
tester.c
re30ed92 r7b4d90e 12 12 int owl_filter_regtest(void); 13 13 int owl_obarray_regtest(void); 14 int owl_fmtext_regtest(void); 14 15 15 16 int main(int argc, char **argv, char **env) … … 29 30 numfailures += owl_filter_regtest(); 30 31 numfailures += owl_obarray_regtest(); 32 numfailures += owl_fmtext_regtest(); 31 33 if (numfailures) { 32 34 fprintf(stderr, "# *** WARNING: %d failures total\n", numfailures); … … 306 308 return numfailed; 307 309 } 310 311 312 int owl_fmtext_regtest(void) { 313 int numfailed = 0; 314 char *p; 315 316 owl_fmtext fm1, fm2; 317 318 owl_fmtext_init_null(&fm1); 319 owl_fmtext_init_null(&fm2); 320 321 printf("# BEGIN testing owl_fmtext\n"); 322 323 /* Test truncate_cols: 324 * - newline removal on long lines 325 * - handle lines without trailing newlines 326 * - don't kill short lines 327 */ 328 owl_fmtext_append_normal(&fm1, "foo\n1234567890\n1234567890\nbaz"); 329 owl_fmtext_truncate_cols(&fm1, 1, 5, &fm2); 330 p = owl_fmtext_print_plain(&fm2); 331 FAIL_UNLESS("returned truncating columns worked properly", p && !strcmp(p, "oo\n2345623456az")); 332 owl_free(p); 333 334 owl_fmtext_free(&fm1); 335 owl_fmtext_free(&fm2); 336 337 printf("# END testing owl_fmtext (%d failures)\n", numfailed); 338 339 return numfailed; 340 }
Note: See TracChangeset
for help on using the changeset viewer.