Changeset f7cd7c9
- Timestamp:
- Jan 9, 2010, 4:02:47 PM (14 years ago)
- Branches:
- master, release-1.10, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 366558f
- Parents:
- 8a16704
- git-author:
- Anders Kaseorg <andersk@mit.edu> (01/09/10 03:19:26)
- git-committer:
- Anders Kaseorg <andersk@mit.edu> (01/09/10 16:02:47)
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
tester.c
ra999d9e rf7cd7c9 74 74 FAIL_UNLESS("expand_tabs 3", 75 75 !strcmp(" 2 tabs", owl_text_expand_tabs("\t\t2 tabs"))); 76 FAIL_UNLESS("expand_tabs 4", 77 !strcmp("α ααααααα! ", owl_text_expand_tabs("α\tααααααα!\t"))); 78 FAIL_UNLESS("expand_tabs 5", 79 !strcmp("A AAA!! ", owl_text_expand_tabs("A\tAAA!!\t"))); 76 80 77 81 FAIL_UNLESS("skiptokens 1", -
text.c
rebbeb39 rf7cd7c9 131 131 char *owl_text_expand_tabs(const char *in) 132 132 { 133 int ntabs= 0;133 int len = 0; 134 134 const char *p = in; 135 135 char *ret, *out; 136 136 int col; 137 137 138 col = 0; 138 139 while(*p) { 139 if (*(p++) == '\t') ntabs++; 140 } 141 142 ret = owl_malloc(strlen(in) + 1 + OWL_TAB_WIDTH * ntabs); 140 gunichar c = g_utf8_get_char(p); 141 char *q = g_utf8_next_char(p); 142 switch (c) { 143 case '\t': 144 do { len++; col++; } while (col % OWL_TAB_WIDTH); 145 p = q; 146 continue; 147 case '\n': 148 col = 0; 149 break; 150 default: 151 col += mk_wcwidth(c); 152 break; 153 } 154 len += q - p; 155 p = q; 156 } 157 158 ret = owl_malloc(len + 1); 143 159 144 160 p = in; … … 147 163 col = 0; 148 164 while(*p) { 149 switch(*p) { 165 gunichar c = g_utf8_get_char(p); 166 char *q = g_utf8_next_char(p); 167 switch (c) { 150 168 case '\t': 151 169 do {*(out++) = ' '; col++; } while (col % OWL_TAB_WIDTH); 152 break; 170 p = q; 171 continue; 153 172 case '\n': 154 col = -1; 173 col = 0; 174 break; 155 175 default: 156 col++; 157 *(out++) = *p; 158 } 159 p++; 176 col += mk_wcwidth(c); 177 break; 178 } 179 memcpy(out, p, q - p); 180 out += q - p; 181 p = q; 160 182 } 161 183
Note: See TracChangeset
for help on using the changeset viewer.