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:
parent
ab71982716
commit
2ab3cb8c0a
@ -37,6 +37,7 @@ struct progress_state {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct progress_state state;
|
static struct progress_state state;
|
||||||
|
static volatile sig_atomic_t print_pending;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple progress print function.
|
* Simple progress print function.
|
||||||
@ -63,12 +64,16 @@ static void progress_simple_init(void)
|
|||||||
#ifdef CONFIG_POSIX
|
#ifdef CONFIG_POSIX
|
||||||
static void sigusr_print(int signal)
|
static void sigusr_print(int signal)
|
||||||
{
|
{
|
||||||
printf(" (%3.2f/100%%)\n", state.current);
|
print_pending = 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void progress_dummy_print(void)
|
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)
|
static void progress_dummy_end(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user