File tree Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -101,6 +101,7 @@ size_t convert_scsu_to_utf8(
101
101
uint8_t shift = 0 ;
102
102
uint8_t unicode = 0 ;
103
103
uint8_t active_window = 0 ;
104
+ uint32_t last_u = 0 ; // Unicode code point
104
105
errno = 0 ;
105
106
while (* inbytesleft && * outbytesleft ) {
106
107
uint8_t c = * src ++ ; * inbytesleft -= 1 ;
@@ -171,8 +172,13 @@ size_t convert_scsu_to_utf8(
171
172
* inbytesleft -= 2 ;
172
173
continue ;
173
174
} else { errno = EINVAL ; break ; }
174
- } else if (c == 0x0A || c == 0x0D || c == 0x09 ) {
175
- u = ' ' ; /* Encode as space, hack */
175
+ } else if (c == 0x09 ) {
176
+ u = ' ' ; /* Encode tab as space, hack */
177
+ } else if (c == 0x0A && last_u == 0x0D ) {
178
+ last_u = c ;
179
+ continue ; /* Convert CRLF to LF */
180
+ } else if (c == 0x0A || c == 0x0B || c == 0x0D ) {
181
+ u = '\n' ; /* Encode CR, VT, LF as LF */
176
182
} else if (c >= 0x20 && c <= 0x7F ) { /* ASCII, pass through */
177
183
u = c ;
178
184
} else if (c >= 0x80 ) {
@@ -217,6 +223,7 @@ size_t convert_scsu_to_utf8(
217
223
* dst ++ = (u & 0x7F );
218
224
* outbytesleft -= 1 ;
219
225
}
226
+ last_u = u ;
220
227
}
221
228
* outbuf = (char * )dst ;
222
229
* inbuf = (char * )src ;
You can’t perform that action at this time.
0 commit comments