File tree 1 file changed +18
-17
lines changed
1 file changed +18
-17
lines changed Original file line number Diff line number Diff line change 25
25
*/
26
26
27
27
#include <string.h>
28
+ #include <unistd.h>
29
+ #include "py/mpconfig.h"
28
30
#include "py/mphal.h"
29
31
30
32
/*
33
35
* implementation below can be used.
34
36
*/
35
37
38
+ // CIRCUITPY-CHANGE: changes
36
39
// Send "cooked" string of given length, where every occurrence of
37
- // LF character is replaced with CR LF ("\n" is converted to "\r\n").
38
- // This is an optimised version to reduce the number of calls made
39
- // to mp_hal_stdout_tx_strn.
40
+ // LF character is replaced with CR LF.
40
41
void mp_hal_stdout_tx_strn_cooked (const char * str , size_t len ) {
41
- const char * last = str ;
42
- while (len -- ) {
43
- if (* str == '\n' ) {
44
- if (str > last ) {
45
- mp_hal_stdout_tx_strn (last , str - last );
46
- }
47
- mp_hal_stdout_tx_strn ("\r\n" , 2 );
48
- ++ str ;
49
- last = str ;
50
- } else {
51
- ++ str ;
42
+ bool last_cr = false;
43
+ while (len > 0 ) {
44
+ size_t i = 0 ;
45
+ if (str [0 ] == '\n' && !last_cr ) {
46
+ mp_hal_stdout_tx_strn ("\r" , 1 );
47
+ i = 1 ;
52
48
}
53
- }
54
- if (str > last ) {
55
- mp_hal_stdout_tx_strn (last , str - last );
49
+ // Lump all characters on the next line together.
50
+ while ((last_cr || str [i ] != '\n' ) && i < len ) {
51
+ last_cr = str [i ] == '\r' ;
52
+ i ++ ;
53
+ }
54
+ mp_hal_stdout_tx_strn (str , i );
55
+ str = & str [i ];
56
+ len -= i ;
56
57
}
57
58
}
58
59
You can’t perform that action at this time.
0 commit comments