sim-card
/
qemu
Archived
10
0
Fork 0

qemu-progress.c: printf isn't signal safe

Change the signal handling to indicate a signal is pending, rather
then printing directly from the signal handler.

In addition make the signal prints go to stderr, rather than stdout.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Jes Sorensen 2011-04-28 13:58:30 +02:00 committed by Kevin Wolf
parent ab71982716
commit 2ab3cb8c0a
1 changed files with 6 additions and 1 deletions

View File

@ -37,6 +37,7 @@ struct progress_state {
};
static struct progress_state state;
static volatile sig_atomic_t print_pending;
/*
* Simple progress print function.
@ -63,12 +64,16 @@ static void progress_simple_init(void)
#ifdef CONFIG_POSIX
static void sigusr_print(int signal)
{
printf(" (%3.2f/100%%)\n", state.current);
print_pending = 1;
}
#endif
static void progress_dummy_print(void)
{
if (print_pending) {
fprintf(stderr, " (%3.2f/100%%)\n", state.current);
print_pending = 0;
}
}
static void progress_dummy_end(void)