summaryrefslogtreecommitdiffstats
path: root/resize
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-10-15 15:51:55 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-10-15 15:51:55 +0100
commita0722c7ad846960be54978a31ebe73b76e119203 (patch)
treec9fab095150ff62572e29d0a88653d70b4041d73 /resize
parentc9acb029edf7c20ca937a1f6051b5834cdfdddf7 (diff)
downloadlibguestfs-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.ml48
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])
+ )