@@ -76,7 +76,7 @@ static REBREQ *Req_SIO;
76
76
77
77
/***********************************************************************
78
78
**
79
- */ static void Print_OS_Line (void )
79
+ */ static void Print_OS_Line (REBOOL err )
80
80
/*
81
81
** Print a new line.
82
82
**
@@ -89,6 +89,9 @@ static REBREQ *Req_SIO;
89
89
Req_SIO -> length = 1 ;
90
90
Req_SIO -> actual = 0 ;
91
91
92
+ if (err )
93
+ SET_FLAG (Req_SIO -> flags , RRF_ERROR );
94
+
92
95
OS_DO_DEVICE (Req_SIO , RDC_WRITE );
93
96
94
97
if (Req_SIO -> error ) Crash (RP_IO_ERROR );
@@ -97,7 +100,7 @@ static REBREQ *Req_SIO;
97
100
98
101
/***********************************************************************
99
102
**
100
- */ static void Prin_OS_String (const REBYTE * bp , REBINT len , REBOOL uni )
103
+ */ static void Prin_OS_String (const REBYTE * bp , REBINT len , REBOOL uni , REBOOL err )
101
104
/*
102
105
** Print a string, but no line terminator or space.
103
106
**
@@ -118,6 +121,8 @@ static REBREQ *Req_SIO;
118
121
if (len == UNKNOWN ) len = (REBINT )(uni ? wcslen ((const wchar_t * )up ) : LEN_BYTES (bp ));
119
122
120
123
SET_FLAG (Req_SIO -> flags , RRF_FLUSH );
124
+ if (err )
125
+ SET_FLAG (Req_SIO -> flags , RRF_ERROR );
121
126
122
127
Req_SIO -> actual = 0 ;
123
128
Req_SIO -> data = buf ;
@@ -144,23 +149,23 @@ static REBREQ *Req_SIO;
144
149
145
150
/***********************************************************************
146
151
**
147
- */ void Out_Value (REBVAL * value , REBCNT limit , REBOOL mold , REBINT lines )
152
+ */ void Out_Value (REBVAL * value , REBCNT limit , REBOOL mold , REBINT lines , REBOOL err )
148
153
/*
149
154
***********************************************************************/
150
155
{
151
- Print_Value (value , limit , mold ); // higher level!
152
- for (; lines > 0 ; lines -- ) Print_OS_Line ();
156
+ Print_Value (value , limit , mold , err ); // higher level!
157
+ for (; lines > 0 ; lines -- ) Print_OS_Line (err );
153
158
}
154
159
155
160
156
161
/***********************************************************************
157
162
**
158
- */ void Out_Str (const REBYTE * bp , REBINT lines )
163
+ */ void Out_Str (const REBYTE * bp , REBINT lines , REBOOL err )
159
164
/*
160
165
***********************************************************************/
161
166
{
162
- Prin_OS_String (bp , UNKNOWN , 0 );
163
- for (; lines > 0 ; lines -- ) Print_OS_Line ();
167
+ Prin_OS_String (bp , UNKNOWN , 0 , err );
168
+ for (; lines > 0 ; lines -- ) Print_OS_Line (err );
164
169
}
165
170
166
171
@@ -216,11 +221,11 @@ static REBREQ *Req_SIO;
216
221
}
217
222
218
223
if (lines == 0 ) i += 2 ; // start of next line
219
- Prin_OS_String (BIN_SKIP (Trace_Buffer , i ), tail - i , 0 );
224
+ Prin_OS_String (BIN_SKIP (Trace_Buffer , i ), tail - i , 0 , TRUE );
220
225
//RESET_SERIES(Trace_Buffer);
221
226
}
222
227
else {
223
- Out_Str (cb_cast ("backtrace not enabled" ), 1 );
228
+ Out_Str (cb_cast ("backtrace not enabled" ), 1 , TRUE );
224
229
}
225
230
}
226
231
@@ -247,8 +252,8 @@ static REBREQ *Req_SIO;
247
252
for (; lines > 0 ; lines -- ) Append_Byte (Trace_Buffer , LF );
248
253
}
249
254
else {
250
- Prin_OS_String (bp , len , uni );
251
- for (; lines > 0 ; lines -- ) Print_OS_Line ();
255
+ Prin_OS_String (bp , len , uni , TRUE );
256
+ for (; lines > 0 ; lines -- ) Print_OS_Line (TRUE );
252
257
}
253
258
}
254
259
@@ -387,7 +392,7 @@ static REBREQ *Req_SIO;
387
392
/*
388
393
***********************************************************************/
389
394
{
390
- Print_Value (value , limit , mold ); // higher level!
395
+ Print_Value (value , limit , mold , TRUE ); // higher level!
391
396
}
392
397
393
398
@@ -797,29 +802,29 @@ static REBREQ *Req_SIO;
797
802
798
803
/***********************************************************************
799
804
**
800
- */ void Prin_Value (REBVAL * value , REBCNT limit , REBOOL mold )
805
+ */ void Prin_Value (REBVAL * value , REBCNT limit , REBOOL mold , REBOOL err )
801
806
/*
802
807
** Print a value or block's contents for user viewing.
803
808
** Can limit output to a given size. Set limit to 0 for full size.
804
809
**
805
810
***********************************************************************/
806
811
{
807
812
REBSER * out = Mold_Print_Value (value , limit , mold );
808
- Prin_OS_String (out -> data , out -> tail , TRUE);
813
+ Prin_OS_String (out -> data , out -> tail , TRUE, err );
809
814
}
810
815
811
816
812
817
/***********************************************************************
813
818
**
814
- */ void Print_Value (REBVAL * value , REBCNT limit , REBOOL mold )
819
+ */ void Print_Value (REBVAL * value , REBCNT limit , REBOOL mold , REBOOL err )
815
820
/*
816
821
** Print a value or block's contents for user viewing.
817
822
** Can limit output to a given size. Set limit to 0 for full size.
818
823
**
819
824
***********************************************************************/
820
825
{
821
- Prin_Value (value , limit , mold );
822
- Print_OS_Line ();
826
+ Prin_Value (value , limit , mold , err );
827
+ Print_OS_Line (err );
823
828
}
824
829
825
830
0 commit comments