aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Adrian Perez <aperez@igalia.com>2009-11-23 01:54:35 +0100
committerGravatar Carl Worth <cworth@cworth.org>2009-11-23 06:02:06 +0100
commitd024ab4a046b0eb53bfdbb7eb9d5f25a52172271 (patch)
tree14722e17f426b347efb2b8add2149198bcc32755
parentceee152fca2be5cec9dd5873748539ff2642c91b (diff)
ANSI escapes in "new" only when output is a tty
When running "notmuch new --verbose", ANSI escapes are used. This may not be desirable when the output of the command is *not* being sent to a terminal (e.g. when piping output into another command). In that case each file processed is printed in a new line and ANSI escapes are not used at all.
-rw-r--r--notmuch-client.h1
-rw-r--r--notmuch-new.c12
2 files changed, 9 insertions, 4 deletions
diff --git a/notmuch-client.h b/notmuch-client.h
index f105c8b2..4fe182ee 100644
--- a/notmuch-client.h
+++ b/notmuch-client.h
@@ -74,6 +74,7 @@ typedef void (*add_files_callback_t) (notmuch_message_t *message);
typedef struct {
int ignore_read_only_directories;
int saw_read_only_directory;
+ int output_is_a_tty;
int verbose;
int total_files;
diff --git a/notmuch-new.c b/notmuch-new.c
index a2b30bdc..8172b498 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -180,10 +180,15 @@ add_files_recursive (notmuch_database_t *notmuch,
state->processed_files++;
if (state->verbose) {
- printf ("\r\033[K%i/%i: %s\r",
+ if (state->output_is_a_tty)
+ printf("\r\033[K");
+
+ printf ("%i/%i: %s",
state->processed_files,
state->total_files,
next);
+
+ putchar((state->output_is_a_tty) ? '\r' : '\n');
fflush (stdout);
}
@@ -282,9 +287,7 @@ add_files (notmuch_database_t *notmuch,
return NOTMUCH_STATUS_FILE_ERROR;
}
- if (isatty (fileno (stdout)) && ! debugger_is_active ()
- && ! state->verbose)
- {
+ if (state->output_is_a_tty && ! debugger_is_active () && ! state->verbose) {
/* Setup our handler for SIGALRM */
memset (&action, 0, sizeof (struct sigaction));
action.sa_handler = handle_sigalrm;
@@ -405,6 +408,7 @@ notmuch_new_command (void *ctx, int argc, char *argv[])
int i;
add_files_state.verbose = 0;
+ add_files_state.output_is_a_tty = isatty (fileno (stdout));
for (i = 0; i < argc && argv[i][0] == '-'; i++) {
if (STRNCMP_LITERAL (argv[i], "--verbose") == 0) {