File tree Expand file tree Collapse file tree 1 file changed +17
-18
lines changed Expand file tree Collapse file tree 1 file changed +17
-18
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"
30
28
#include "py/mphal.h"
31
29
32
30
/*
35
33
* implementation below can be used.
36
34
*/
37
35
38
- // CIRCUITPY-CHANGE: changes
39
36
// Send "cooked" string of given length, where every occurrence of
40
- // LF character is replaced with CR LF.
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.
41
40
void mp_hal_stdout_tx_strn_cooked (const char * str , size_t len ) {
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 ;
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 ;
48
52
}
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 ;
53
+ }
54
+ if (str > last ) {
55
+ mp_hal_stdout_tx_strn (last , str - last );
57
56
}
58
57
}
59
58
You can’t perform that action at this time.
0 commit comments