Skip to content

Commit 6a21590

Browse files
committed
Fix all code to have more sensible differentiation between stdout and stderr
1 parent 6b4a698 commit 6a21590

15 files changed

Lines changed: 289 additions & 286 deletions

Inc/generics.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <stdbool.h>
1313
#include <limits.h>
1414
#include <stdint.h>
15+
#include <stdio.h>
1516
#include <errno.h>
1617

1718
#define EOL "\n"
@@ -98,7 +99,7 @@ char *genericsUnescape( char *str );
9899
uint64_t genericsTimestampuS( void );
99100
uint32_t genericsTimestampmS( void );
100101
bool genericsSetReportLevel( enum verbLevel lset );
101-
void genericsPrintf( const char *fmt, ... );
102+
void genericsFPrintf( FILE *stream, const char *fmt, ... );
102103
char *genericsGetBaseDirectory( void );
103104
const char *genericsBasename( const char *n );
104105
const char *genericsBasenameN( const char *n, int c );

Src/generics.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ char *genericsGetBaseDirectory( void )
338338
#endif
339339
}
340340
// ====================================================================================================
341-
void genericsPrintf( const char *fmt, ... )
341+
void genericsFPrintf( FILE *stream, const char *fmt, ... )
342342

343343
/* Print to output stream */
344344

@@ -355,7 +355,7 @@ void genericsPrintf( const char *fmt, ... )
355355
{
356356
if ( *p != CMD_ALERT[0] )
357357
{
358-
putc( *p++, stderr );
358+
putc( *p++, stream );
359359
}
360360
else
361361
{
@@ -367,7 +367,7 @@ void genericsPrintf( const char *fmt, ... )
367367
case 'a'...'f':
368368
if ( _screenHandling )
369369
{
370-
fprintf( stderr, CC_COLOUR, _htoi( *p ) > 7, _htoi( *p ) & 7 );
370+
fprintf( stream, CC_COLOUR, _htoi( *p ) > 7, _htoi( *p ) & 7 );
371371
}
372372

373373
p++;
@@ -376,7 +376,7 @@ void genericsPrintf( const char *fmt, ... )
376376
case 'u':
377377
if ( _screenHandling )
378378
{
379-
fprintf( stderr, CC_PREV_LN );
379+
fprintf( stream, CC_PREV_LN );
380380
}
381381

382382
p++;
@@ -385,7 +385,7 @@ void genericsPrintf( const char *fmt, ... )
385385
case 'U':
386386
if ( _screenHandling )
387387
{
388-
fprintf( stderr, CC_CLR_LN );
388+
fprintf( stream, CC_CLR_LN );
389389
}
390390

391391
p++;
@@ -394,15 +394,15 @@ void genericsPrintf( const char *fmt, ... )
394394
case 'r':
395395
if ( _screenHandling )
396396
{
397-
fprintf( stderr, CC_RES );
397+
fprintf( stream, CC_RES );
398398
}
399399

400400
p++;
401401
break;
402402

403403
case 'z':
404404
/* We'll take a flyer on it being vt100 compatible */
405-
fprintf( stderr, CC_CLEAR_SCREEN );
405+
fprintf( stream, CC_CLEAR_SCREEN );
406406
p++;
407407
break;
408408

@@ -412,7 +412,7 @@ void genericsPrintf( const char *fmt, ... )
412412
}
413413
}
414414

415-
fflush( stdout );
415+
fflush( stream );
416416
}
417417
// ====================================================================================================
418418
void genericsReport( enum verbLevel l, const char *fmt, ... )
@@ -426,13 +426,13 @@ void genericsReport( enum verbLevel l, const char *fmt, ... )
426426
if ( l <= lstore )
427427
{
428428
fflush( stdout );
429-
genericsPrintf( colours[l] );
429+
genericsFPrintf( stderr, colours[l] );
430430
va_list va;
431431
va_start( va, fmt );
432432
vsnprintf( op, MAX_STRLEN, fmt, va );
433433
va_end( va );
434-
genericsPrintf( "%s", op );
435-
genericsPrintf( C_RESET );
434+
genericsFPrintf( stderr, "%s", op );
435+
genericsFPrintf( stderr, C_RESET );
436436
fflush( stderr );
437437
}
438438
}
@@ -447,9 +447,9 @@ void genericsExit( int status, const char *fmt, ... )
447447
va_start( va, fmt );
448448
vsnprintf( op, MAX_STRLEN, fmt, va );
449449
va_end( va );
450-
genericsPrintf( C_VERB_ERROR );
451-
genericsPrintf( op );
452-
genericsPrintf( C_RESET );
450+
genericsFPrintf( stderr, C_VERB_ERROR );
451+
genericsFPrintf( stderr, op );
452+
genericsFPrintf( stderr, C_RESET );
453453
fflush( stderr );
454454

455455
exit( status );

Src/msgDecoder.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,12 @@ static bool _handleTS( struct ITMPacket *packet, struct TSMsg *decoded )
209209
{
210210
stamp |= ( packet->d[2] & 0x7F ) << 7;
211211
}
212+
212213
if ( packet->len > 3 )
213214
{
214215
stamp |= ( packet->d[3] & 0x7F ) << 14;
215216
}
217+
216218
if ( packet->len > 4 )
217219
{
218220
stamp |= ( packet->d[4] & 0x7f ) << 21;

Src/orbcat.c

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ static void _outputText( char *p )
248248
if ( !_r.inLine )
249249
{
250250
_printTimestamp( opConstruct );
251-
genericsPrintf( "%s", opConstruct );
251+
genericsFPrintf( stdout, "%s", opConstruct );
252252
_r.inLine = true;
253253
}
254254

@@ -258,21 +258,21 @@ static void _outputText( char *p )
258258
if ( q )
259259
{
260260
*q = 0;
261-
genericsPrintf( "%s" EOL, p );
261+
genericsFPrintf( stdout, "%s" EOL, p );
262262
/* Once we've output these data then we're not in a line any more */
263263
_r.inLine = false;
264264

265265
/* ...and if there were any DWT messages to print we'd better output those */
266266
if ( _r.dwtText[0] )
267267
{
268-
genericsPrintf( "%s" EOL, _r.dwtText );
268+
genericsFPrintf( stdout, "%s" EOL, _r.dwtText );
269269
_r.dwtText[0] = 0;
270270
}
271271
}
272272
else
273273
{
274274
/* Just output the whole of the data we've got, then we're done */
275-
genericsPrintf( "%s", p );
275+
genericsFPrintf( stdout, "%s", p );
276276
break;
277277
}
278278

@@ -298,7 +298,7 @@ void _expex( const char *fmt, ... )
298298
/* See if we exceeded max length...if so then output what we have and start a fresh buffer */
299299
if ( MAX_STRING_LENGTH - strlen( _r.dwtText ) < 100 )
300300
{
301-
genericsPrintf( "%s", _r.dwtText );
301+
genericsFPrintf( stdout, "%s", _r.dwtText );
302302
_r.dwtText[0] = 0;
303303
}
304304

@@ -312,7 +312,7 @@ void _expex( const char *fmt, ... )
312312

313313
if ( !_r.inLine )
314314
{
315-
genericsPrintf( "%s", _r.dwtText );
315+
genericsFPrintf( stdout, "%s", _r.dwtText );
316316
_r.dwtText[0] = 0;
317317
}
318318
}
@@ -551,30 +551,30 @@ static void _itmPumpProcess( char c )
551551
static void _printHelp( const char *const progName )
552552

553553
{
554-
genericsPrintf( "Usage: %s [options]" EOL, progName );
555-
genericsPrintf( " -c, --channel: <Number>,<Format> of channel to add into output stream (repeat per channel)" EOL );
556-
genericsPrintf( " -C, --cpufreq: <Frequency in KHz> (Scaled) speed of the CPU" EOL
557-
" generally /1, /4, /16 or /64 of the real CPU speed," EOL );
558-
genericsPrintf( " -E, --eof: Terminate when the file/socket ends/is closed, or wait for more/reconnect" EOL );
559-
genericsPrintf( " -f, --input-file: <filename> Take input from specified file" EOL );
560-
genericsPrintf( " -g, --trigger: <char> to use to trigger timestamp (default is newline)" EOL );
561-
genericsPrintf( " -h, --help: This help" EOL );
562-
genericsPrintf( " -n, --itm-sync: Enforce sync requirement for ITM (i.e. ITM needs to issue syncs)" EOL );
563-
genericsPrintf( " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
564-
genericsPrintf( " -s, --server: <Server>:<Port> to use" EOL );
565-
genericsPrintf( " -t, --tag: <stream>: Which orbflow tag to use (normally 1)" EOL );
566-
genericsPrintf( " -T, --timestamp: <a|r|d|s|t>: Add absolute, relative (to session start)," EOL
567-
" delta, system timestamp or system timestamp delta to output. Note" EOL
568-
" the accuracy of a,r & d are host dependent." EOL );
569-
genericsPrintf( " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
570-
genericsPrintf( " -V, --version: Print version and exit" EOL );
571-
genericsPrintf( " -x, --exceptions: Include exception information in output, in time order" EOL );
554+
genericsFPrintf( stderr, "Usage: %s [options]" EOL, progName );
555+
genericsFPrintf( stderr, " -c, --channel: <Number>,<Format> of channel to add into output stream (repeat per channel)" EOL );
556+
genericsFPrintf( stderr, " -C, --cpufreq: <Frequency in KHz> (Scaled) speed of the CPU" EOL
557+
" generally /1, /4, /16 or /64 of the real CPU speed," EOL );
558+
genericsFPrintf( stderr, " -E, --eof: Terminate when the file/socket ends/is closed, or wait for more/reconnect" EOL );
559+
genericsFPrintf( stderr, " -f, --input-file: <filename> Take input from specified file" EOL );
560+
genericsFPrintf( stderr, " -g, --trigger: <char> to use to trigger timestamp (default is newline)" EOL );
561+
genericsFPrintf( stderr, " -h, --help: This help" EOL );
562+
genericsFPrintf( stderr, " -n, --itm-sync: Enforce sync requirement for ITM (i.e. ITM needs to issue syncs)" EOL );
563+
genericsFPrintf( stderr, " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
564+
genericsFPrintf( stderr, " -s, --server: <Server>:<Port> to use" EOL );
565+
genericsFPrintf( stderr, " -t, --tag: <stream>: Which orbflow tag to use (normally 1)" EOL );
566+
genericsFPrintf( stderr, " -T, --timestamp: <a|r|d|s|t>: Add absolute, relative (to session start)," EOL
567+
" delta, system timestamp or system timestamp delta to output. Note" EOL
568+
" the accuracy of a,r & d are host dependent." EOL );
569+
genericsFPrintf( stderr, " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
570+
genericsFPrintf( stderr, " -V, --version: Print version and exit" EOL );
571+
genericsFPrintf( stderr, " -x, --exceptions: Include exception information in output, in time order" EOL );
572572
}
573573
// ====================================================================================================
574574
static void _printVersion( void )
575575

576576
{
577-
genericsPrintf( "orbcat version " GIT_DESCRIBE EOL );
577+
genericsFPrintf( stderr, "orbcat version " GIT_DESCRIBE EOL );
578578
}
579579
// ====================================================================================================
580580
static struct option _longOptions[] =
@@ -991,7 +991,7 @@ static void _feedStream( struct Stream *stream )
991991
/* Check if an exception report timed out */
992992
if ( ( _r.inLine ) && _r.dwtText[0] && ( _timestamp() - _r.dwtte > DWT_TO_US ) )
993993
{
994-
genericsPrintf( EOL "%s", _r.dwtText );
994+
genericsFPrintf( stderr, EOL "%s", _r.dwtText );
995995
_r.dwtText[0] = 0;
996996
_r.inLine = false;
997997
}

Src/orbdump.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,24 +98,24 @@ uint64_t _timestamp( void )
9898
void _printHelp( const char *const progName )
9999

100100
{
101-
genericsPrintf( "Usage: %s [options]" EOL, progName );
102-
genericsPrintf( " -h, --help: This help" EOL );
103-
genericsPrintf( " -l, --length: <timelen> Length of time in ms to record from point of acheiving sync (defaults to %dmS)" EOL, options.timelen );
104-
genericsPrintf( " -M, --no-colour: Supress colour in output" EOL );
105-
genericsPrintf( " -n, --itm-sync: Enforce sync requirement for ITM (i.e. ITM needs to issue syncs)" EOL );
106-
genericsPrintf( " -o, --output-file: <filename> to be used for dump file (defaults to %s)" EOL, options.outfile );
107-
genericsPrintf( " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
108-
genericsPrintf( " -s, --server: <Server>:<Port> to use" EOL );
109-
genericsPrintf( " -t, --tag: <stream> Which Orbflow tag to use (normally 1)" EOL );
110-
genericsPrintf( " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
111-
genericsPrintf( " -V, --version: Print version and exit" EOL );
112-
genericsPrintf( " -w, --sync-write: Write synchronously to the output file after every packet" EOL );
101+
genericsFPrintf( stderr, "Usage: %s [options]" EOL, progName );
102+
genericsFPrintf( stderr, " -h, --help: This help" EOL );
103+
genericsFPrintf( stderr, " -l, --length: <timelen> Length of time in ms to record from point of acheiving sync (defaults to %dmS)" EOL, options.timelen );
104+
genericsFPrintf( stderr, " -M, --no-colour: Supress colour in output" EOL );
105+
genericsFPrintf( stderr, " -n, --itm-sync: Enforce sync requirement for ITM (i.e. ITM needs to issue syncs)" EOL );
106+
genericsFPrintf( stderr, " -o, --output-file: <filename> to be used for dump file (defaults to %s)" EOL, options.outfile );
107+
genericsFPrintf( stderr, " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
108+
genericsFPrintf( stderr, " -s, --server: <Server>:<Port> to use" EOL );
109+
genericsFPrintf( stderr, " -t, --tag: <stream> Which Orbflow tag to use (normally 1)" EOL );
110+
genericsFPrintf( stderr, " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
111+
genericsFPrintf( stderr, " -V, --version: Print version and exit" EOL );
112+
genericsFPrintf( stderr, " -w, --sync-write: Write synchronously to the output file after every packet" EOL );
113113
}
114114
// ====================================================================================================
115115
void _printVersion( void )
116116

117117
{
118-
genericsPrintf( "orbdump version " GIT_DESCRIBE EOL );
118+
genericsFPrintf( stderr, "orbdump version " GIT_DESCRIBE EOL );
119119
}
120120
// ====================================================================================================
121121
static struct option _longOptions[] =

Src/orbfifo.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,26 +71,26 @@ struct
7171
static void _printHelp( const char *const progName )
7272

7373
{
74-
genericsPrintf( "Usage: %s [options]" EOL, progName );
75-
genericsPrintf( " -b, --basedir: <basedir> for channels" EOL );
76-
genericsPrintf( " -c, --channel: <Number>,<Name>,<Format> of channel to populate (repeat per channel)" EOL );
77-
genericsPrintf( " -E, --eof: When reading from file, terminate at end of file" EOL );
78-
genericsPrintf( " -f, --input-file: <filename> Take input from specified file" EOL );
79-
genericsPrintf( " -h, --help: This help" EOL );
80-
genericsPrintf( " -M, --no-colour: Supress colour in output" EOL );
81-
genericsPrintf( " -P, --permanent: Create permanent files rather than fifos" EOL );
82-
genericsPrintf( " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
83-
genericsPrintf( " -s, --server: <Server>:<Port> to use" EOL );
84-
genericsPrintf( " -t, --tag: <stream> Which OFLOW tag to use (normally 1)" EOL );
85-
genericsPrintf( " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
86-
genericsPrintf( " -V, --version: Print version and exit" EOL );
87-
genericsPrintf( " -W, --writer-path: <path> Enable filewriter functionality using specified base path" EOL );
74+
genericsFPrintf( stderr, "Usage: %s [options]" EOL, progName );
75+
genericsFPrintf( stderr, " -b, --basedir: <basedir> for channels" EOL );
76+
genericsFPrintf( stderr, " -c, --channel: <Number>,<Name>,<Format> of channel to populate (repeat per channel)" EOL );
77+
genericsFPrintf( stderr, " -E, --eof: When reading from file, terminate at end of file" EOL );
78+
genericsFPrintf( stderr, " -f, --input-file: <filename> Take input from specified file" EOL );
79+
genericsFPrintf( stderr, " -h, --help: This help" EOL );
80+
genericsFPrintf( stderr, " -M, --no-colour: Supress colour in output" EOL );
81+
genericsFPrintf( stderr, " -P, --permanent: Create permanent files rather than fifos" EOL );
82+
genericsFPrintf( stderr, " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
83+
genericsFPrintf( stderr, " -s, --server: <Server>:<Port> to use" EOL );
84+
genericsFPrintf( stderr, " -t, --tag: <stream> Which OFLOW tag to use (normally 1)" EOL );
85+
genericsFPrintf( stderr, " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
86+
genericsFPrintf( stderr, " -V, --version: Print version and exit" EOL );
87+
genericsFPrintf( stderr, " -W, --writer-path: <path> Enable filewriter functionality using specified base path" EOL );
8888
}
8989
// ====================================================================================================
9090
void _printVersion( void )
9191

9292
{
93-
genericsPrintf( "orbfifo version " GIT_DESCRIBE );
93+
genericsFPrintf( stderr, "orbfifo version " GIT_DESCRIBE );
9494
}
9595
// ====================================================================================================
9696
struct option _longOptions[] =

Src/orblcd.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -422,26 +422,26 @@ static bool _feedStream( struct Stream *stream, struct RunTime *r )
422422
void _printHelp( const char *const progName )
423423

424424
{
425-
genericsPrintf( "Usage: %s [options]" EOL, progName );
426-
genericsPrintf( " -c, --channel: <Number> of first channel in pair containing display data" EOL );
427-
genericsPrintf( " -f, --input-file: <filename> Take input from specified file" EOL );
428-
genericsPrintf( " -h, --help: This help" EOL );
429-
genericsPrintf( " -n, --itm-sync: Enforce sync requirement for ITM (i.e. ITM needs to issue syncs)" EOL );
430-
genericsPrintf( " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
431-
genericsPrintf( " -s, --server: <Server>:<Port> to use" EOL );
432-
genericsPrintf( " -S, --sbcolour: <Colour> to be used for single bit renders, ignored for other bit depths" EOL );
433-
genericsPrintf( " -t, --tag: <stream> Which OFLOW tag to use (normally 1)" EOL );
434-
genericsPrintf( " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
435-
genericsPrintf( " -V, --version: Print version and exit" EOL );
436-
genericsPrintf( " -w, --window: <string> Set title for output window" EOL );
437-
genericsPrintf( " -z, --size: <Scale(float)> Set relative size of output window (normally 1.0)" EOL );
425+
genericsFPrintf( stderr, "Usage: %s [options]" EOL, progName );
426+
genericsFPrintf( stderr, " -c, --channel: <Number> of first channel in pair containing display data" EOL );
427+
genericsFPrintf( stderr, " -f, --input-file: <filename> Take input from specified file" EOL );
428+
genericsFPrintf( stderr, " -h, --help: This help" EOL );
429+
genericsFPrintf( stderr, " -n, --itm-sync: Enforce sync requirement for ITM (i.e. ITM needs to issue syncs)" EOL );
430+
genericsFPrintf( stderr, " -p, --protocol: Protocol to communicate. Defaults to OFLOW if -s is not set, otherwise ITM" EOL );
431+
genericsFPrintf( stderr, " -s, --server: <Server>:<Port> to use" EOL );
432+
genericsFPrintf( stderr, " -S, --sbcolour: <Colour> to be used for single bit renders, ignored for other bit depths" EOL );
433+
genericsFPrintf( stderr, " -t, --tag: <stream> Which OFLOW tag to use (normally 1)" EOL );
434+
genericsFPrintf( stderr, " -v, --verbose: <level> Verbose mode 0(errors)..3(debug)" EOL );
435+
genericsFPrintf( stderr, " -V, --version: Print version and exit" EOL );
436+
genericsFPrintf( stderr, " -w, --window: <string> Set title for output window" EOL );
437+
genericsFPrintf( stderr, " -z, --size: <Scale(float)> Set relative size of output window (normally 1.0)" EOL );
438438
}
439439

440440
// ====================================================================================================
441441
void _printVersion( void )
442442

443443
{
444-
genericsPrintf( "orblcd version " GIT_DESCRIBE EOL );
444+
genericsFPrintf( stderr, "orblcd version " GIT_DESCRIBE EOL );
445445
}
446446
// ====================================================================================================
447447
static struct option _longOptions[] =

0 commit comments

Comments
 (0)