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 2525 */
2626
2727#include <string.h>
28- #include <unistd.h>
29- #include "py/mpconfig.h"
3028#include "py/mphal.h"
3129
3230/*
3533 * implementation below can be used.
3634 */
3735
38- // CIRCUITPY-CHANGE: changes
3936// 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.
4140void 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 ;
4852 }
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 );
5756 }
5857}
5958
You can’t perform that action at this time.
0 commit comments