@@ -2958,7 +2958,8 @@ static void dmi_fixup_type_34(struct dmi_header *h, int display)
2958
2958
&& is_printable (p + 0x0B , 0x10 - 0x0B ))
2959
2959
{
2960
2960
if (!(opt .flags & FLAG_QUIET ) && display )
2961
- printf ("Invalid entry length (%u). Fixed up to %u.\n" ,
2961
+ fprintf (stderr ,
2962
+ "Invalid entry length (%u). Fixed up to %u.\n" ,
2962
2963
0x10 , 0x0B );
2963
2964
h -> length = 0x0B ;
2964
2965
}
@@ -4427,9 +4428,14 @@ static void dmi_table_decode(u8 *buf, u32 len, u16 num, u16 ver, u32 flags)
4427
4428
*/
4428
4429
if (h .length < 4 )
4429
4430
{
4430
- printf ("Invalid entry length (%u). DMI table is "
4431
- "broken! Stop.\n\n" , (unsigned int )h .length );
4432
- opt .flags |= FLAG_QUIET ;
4431
+ if (!(opt .flags & FLAG_QUIET ))
4432
+ {
4433
+ fprintf (stderr ,
4434
+ "Invalid entry length (%u). DMI table "
4435
+ "is broken! Stop.\n\n" ,
4436
+ (unsigned int )h .length );
4437
+ opt .flags |= FLAG_QUIET ;
4438
+ }
4433
4439
break ;
4434
4440
}
4435
4441
@@ -4490,11 +4496,11 @@ static void dmi_table_decode(u8 *buf, u32 len, u16 num, u16 ver, u32 flags)
4490
4496
if (!(opt .flags & FLAG_QUIET ))
4491
4497
{
4492
4498
if (num && i != num )
4493
- printf ( "Wrong DMI structures count: %d announced, "
4499
+ fprintf ( stderr , "Wrong DMI structures count: %d announced, "
4494
4500
"only %d decoded.\n" , num , i );
4495
4501
if ((unsigned long )(data - buf ) > len
4496
4502
|| (num && (unsigned long )(data - buf ) < len ))
4497
- printf ( "Wrong DMI structures length: %u bytes "
4503
+ fprintf ( stderr , "Wrong DMI structures length: %u bytes "
4498
4504
"announced, structures occupy %lu bytes.\n" ,
4499
4505
len , (unsigned long )(data - buf ));
4500
4506
}
@@ -4539,7 +4545,7 @@ static void dmi_table(off_t base, u32 len, u16 num, u16 ver, const char *devmem,
4539
4545
buf = read_file (& size , devmem );
4540
4546
if (!(opt .flags & FLAG_QUIET ) && num && size != (size_t )len )
4541
4547
{
4542
- printf ( "Wrong DMI structures length: %u bytes "
4548
+ fprintf ( stderr , "Wrong DMI structures length: %u bytes "
4543
4549
"announced, only %lu bytes available.\n" ,
4544
4550
len , (unsigned long )size );
4545
4551
}
@@ -4652,14 +4658,16 @@ static int smbios_decode(u8 *buf, const char *devmem, u32 flags)
4652
4658
case 0x021F :
4653
4659
case 0x0221 :
4654
4660
if (!(opt .flags & FLAG_QUIET ))
4655
- printf ("SMBIOS version fixup (2.%d -> 2.%d).\n" ,
4656
- ver & 0xFF , 3 );
4661
+ fprintf (stderr ,
4662
+ "SMBIOS version fixup (2.%d -> 2.%d).\n" ,
4663
+ ver & 0xFF , 3 );
4657
4664
ver = 0x0203 ;
4658
4665
break ;
4659
4666
case 0x0233 :
4660
4667
if (!(opt .flags & FLAG_QUIET ))
4661
- printf ("SMBIOS version fixup (2.%d -> 2.%d).\n" ,
4662
- 51 , 6 );
4668
+ fprintf (stderr ,
4669
+ "SMBIOS version fixup (2.%d -> 2.%d).\n" ,
4670
+ 51 , 6 );
4663
4671
ver = 0x0206 ;
4664
4672
break ;
4665
4673
}
@@ -4771,6 +4779,13 @@ int main(int argc, char * const argv[])
4771
4779
int efi ;
4772
4780
u8 * buf ;
4773
4781
4782
+ /*
4783
+ * We don't want stdout and stderr to be mixed up if both are
4784
+ * redirected to the same file.
4785
+ */
4786
+ setlinebuf (stdout );
4787
+ setlinebuf (stderr );
4788
+
4774
4789
if (sizeof (u8 ) != 1 || sizeof (u16 ) != 2 || sizeof (u32 ) != 4 || '0円' != 0 )
4775
4790
{
4776
4791
fprintf (stderr , "%s: compiler incompatibility\n" , argv [0 ]);
0 commit comments