- Timestamp:
- Jan 9, 2010, 4:02:47 PM (15 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)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.