From 685108da60b663059570e5a5a4a72c91b0ca4da9 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 29 Jun 2016 12:49:46 +0100
Subject: [PATCH] utils: Move ansi_* functions to header
guestfs-internal-frontend.h.
This is just code motion.
(cherry picked from commit d2abfc7b486039efdfb3fa9b910e14911215b85a)
---
src/guestfs-internal-frontend.h | 29 ++++++++++++++++++
utils/boot-analysis/boot-analysis.c | 61 ++++++-------------------------------
2 files changed, 39 insertions(+), 51 deletions(-)
diff --git a/src/guestfs-internal-frontend.h b/src/guestfs-internal-frontend.h
index cf0eebc..ed9165a 100644
--- a/src/guestfs-internal-frontend.h
+++ b/src/guestfs-internal-frontend.h
@@ -179,4 +179,33 @@ extern void guestfs_int_cleanup_pclose (void *ptr);
NULL \
)
+/* ANSI colours. These are defined as macros so that we don't have to
+ * define the force_colour global variable in the library.
+ */
+#define ansi_green(fp) \
+ do { \
+ if (force_colour || isatty (fileno (fp))) \
+ fputs ("\033[0;32m", (fp)); \
+ } while (0)
+#define ansi_red(fp) \
+ do { \
+ if (force_colour || isatty (fileno (fp))) \
+ fputs ("\033[1;31m", (fp)); \
+ } while (0)
+#define ansi_blue(fp) \
+ do { \
+ if (force_colour || isatty (fileno (fp))) \
+ fputs ("\033[1;34m", (fp)); \
+ } while (0)
+#define ansi_magenta(fp) \
+ do { \
+ if (force_colour || isatty (fileno (fp))) \
+ fputs ("\033[1;35m", (fp)); \
+ } while (0)
+#define ansi_restore(fp) \
+ do { \
+ if (force_colour || isatty (fileno (fp))) \
+ fputs ("\033[0m", (fp)); \
+ } while (0)
+
#endif /* GUESTFS_INTERNAL_FRONTEND_H_ */
diff --git a/utils/boot-analysis/boot-analysis.c b/utils/boot-analysis/boot-analysis.c
index d06d9a1..1b491c4 100644
--- a/utils/boot-analysis/boot-analysis.c
+++ b/utils/boot-analysis/boot-analysis.c
@@ -51,7 +51,7 @@
#define WARNING_THRESHOLD 1.0
static const char *append = NULL;
-static int force_colour = 0;
+static int force_colour = 0; /* used by ansi_* macros */
static int memsize = 0;
static int smp = 1;
static int verbose = 0;
@@ -85,11 +85,6 @@ static void print_analysis (void);
static void print_longest_to_shortest (void);
static void free_pass_data (void);
static void free_final_timeline (void);
-static void ansi_green (void);
-static void ansi_red (void);
-static void ansi_blue (void);
-static void ansi_magenta (void);
-static void ansi_restore (void);
static void
usage (int exitcode)
@@ -1033,15 +1028,15 @@ dump_timeline (void)
static void
print_activity (struct activity *activity)
{
- if (activity->warning) ansi_red (); else ansi_green ();
+ if (activity->warning) ansi_red (stdout); else ansi_green (stdout);
assert (activity->magic == ACTIVITY_MAGIC);
print_escaped_string (activity->name);
- ansi_restore ();
+ ansi_restore (stdout);
printf (" %.1fms ±%.1fms ",
activity->mean / 1000000, activity->sd / 1000000);
- if (activity->warning) ansi_red (); else ansi_green ();
+ if (activity->warning) ansi_red (stdout); else ansi_green (stdout);
printf ("(%.1f%%) ", activity->percent);
- ansi_restore ();
+ ansi_restore (stdout);
}
static void
@@ -1084,7 +1079,7 @@ print_analysis (void)
/* Draw a spacer line, but only if last_t -> t is a large jump. */
if (t - last_t >= 1000000 /* ns */) {
printf (" ");
- ansi_magenta ();
+ ansi_magenta (stdout);
for (j = 0; j < last_free_column; ++j) {
if (columns[j] >= 0 &&
activities[columns[j]].end_t != last_t /* !▼ */)
@@ -1092,7 +1087,7 @@ print_analysis (void)
else
printf (" ");
}
- ansi_restore ();
+ ansi_restore (stdout);
printf ("\n");
}
@@ -1122,10 +1117,10 @@ print_analysis (void)
}
/* Draw the line. */
- ansi_blue ();
+ ansi_blue (stdout);
printf ("%6.1fms: ", t / 1000000);
- ansi_magenta ();
+ ansi_magenta (stdout);
for (j = 0; j < last_free_column; ++j) {
if (columns[j] >= 0) {
if (activities[columns[j]].t == t)
@@ -1138,7 +1133,7 @@ print_analysis (void)
else
printf (" ");
}
- ansi_restore ();
+ ansi_restore (stdout);
for (j = 0; j < last_free_column; ++j) {
if (columns[j] >= 0 && activities[columns[j]].t == t) /* ▲ */
@@ -1215,39 +1210,3 @@ free_final_timeline (void)
free (activities[i].name);
free (activities);
}
-
-/* Colours. */
-static void
-ansi_green (void)
-{
- if (force_colour || isatty (1))
- fputs ("\033[0;32m", stdout);
-}
-
-static void
-ansi_red (void)
-{
- if (force_colour || isatty (1))
- fputs ("\033[1;31m", stdout);
-}
-
-static void
-ansi_blue (void)
-{
- if (force_colour || isatty (1))
- fputs ("\033[1;34m", stdout);
-}
-
-static void
-ansi_magenta (void)
-{
- if (force_colour || isatty (1))
- fputs ("\033[1;35m", stdout);
-}
-
-static void
-ansi_restore (void)
-{
- if (force_colour || isatty (1))
- fputs ("\033[0m", stdout);
-}
--
1.8.3.1