diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2012-10-15 15:51:55 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2012-10-15 15:51:55 +0100 |
commit | a0722c7ad846960be54978a31ebe73b76e119203 (patch) | |
tree | c9fab095150ff62572e29d0a88653d70b4041d73 /resize | |
parent | c9acb029edf7c20ca937a1f6051b5834cdfdddf7 (diff) | |
download | libguestfs-a0722c7ad846960be54978a31ebe73b76e119203.tar.gz libguestfs-a0722c7ad846960be54978a31ebe73b76e119203.tar.xz libguestfs-a0722c7ad846960be54978a31ebe73b76e119203.zip |
resize, sparsify: Suppress progress bar when output is not a tty.
Diffstat (limited to 'resize')
-rw-r--r-- | resize/progress.ml | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/resize/progress.ml b/resize/progress.ml index 993a0b7d..7a94c6c6 100644 --- a/resize/progress.ml +++ b/resize/progress.ml @@ -16,6 +16,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) +open Unix open Printf module G = Guestfs @@ -29,24 +30,29 @@ external progress_bar_set : progress_bar -> int64 -> int64 -> unit = "virt_resize_progress_bar_set" let set_up_progress_bar ?(machine_readable = false) (g : Guestfs.guestfs) = - (* Initialize the C mini library. *) - let bar = progress_bar_init ~machine_readable in - - (* Reset the progress bar before every libguestfs function. *) - let enter_callback g event evh buf array = - if event = G.EVENT_ENTER then - progress_bar_reset bar - in - - (* A progress event: move the progress bar. *) - let progress_callback g event evh buf array = - if event = G.EVENT_PROGRESS && Array.length array >= 4 then ( - let position = array.(2) - and total = array.(3) in - - progress_bar_set bar position total - ) - in - - ignore (g#set_event_callback enter_callback [G.EVENT_ENTER]); - ignore (g#set_event_callback progress_callback [G.EVENT_PROGRESS]) + (* Only display progress bars if the machine_readable flag is set or + * the output is a tty. + *) + if machine_readable || isatty stdout then ( + (* Initialize the C mini library. *) + let bar = progress_bar_init ~machine_readable in + + (* Reset the progress bar before every libguestfs function. *) + let enter_callback g event evh buf array = + if event = G.EVENT_ENTER then + progress_bar_reset bar + in + + (* A progress event: move the progress bar. *) + let progress_callback g event evh buf array = + if event = G.EVENT_PROGRESS && Array.length array >= 4 then ( + let position = array.(2) + and total = array.(3) in + + progress_bar_set bar position total + ) + in + + ignore (g#set_event_callback enter_callback [G.EVENT_ENTER]); + ignore (g#set_event_callback progress_callback [G.EVENT_PROGRESS]) + ) |