File tree Expand file tree Collapse file tree 1 file changed +18
-17
lines changed Expand file tree Collapse file tree 1 file changed +18
-17
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"
2830#include "py/mphal.h"
2931
3032/*
3335 * implementation below can be used.
3436 */
3537
38+ // CIRCUITPY-CHANGE: changes
3639// 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.
4041void 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 ;
5248 }
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 ;
5657 }
5758}
5859
You can’t perform that action at this time.
0 commit comments