From patchwork Mon Sep 30 21:38:26 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Leblond X-Patchwork-Id: 279277 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3575C2C00CD for ; Tue, 1 Oct 2013 07:38:50 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755916Ab3I3Vis (ORCPT ); Mon, 30 Sep 2013 17:38:48 -0400 Received: from ks28632.kimsufi.com ([91.121.96.152]:34098 "EHLO ks28632.kimsufi.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755663Ab3I3Vis (ORCPT ); Mon, 30 Sep 2013 17:38:48 -0400 Received: from bayen.regit.org ([81.57.69.189] helo=localhost.localdomain) by ks28632.kimsufi.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1VQlAz-0007J2-Ue; Mon, 30 Sep 2013 23:38:46 +0200 From: Eric Leblond To: netfilter-devel@vger.kernel.org, pablo@netfilter.org Cc: eric@regit.org Subject: [libmnl PATCH] debug: don't colorize output on non tty Date: Mon, 30 Sep 2013 23:38:26 +0200 Message-Id: <1380577106-13006-1-git-send-email-eric@regit.org> X-Mailer: git-send-email 1.8.4.rc3 X-Spam-Score: -2.9 (--) Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org When output is not a tty (pipe or redirect to a file), the color display is causing the output to be unreadable: 02 00 00 00 | | extra header | |ESC[1;31m00008ESC[0m|ESC[1;32m--ESC[0m|ESC[1;34m00001ESC[0m| |len |flags| type| This patch tests if the output is a terminal and only add color in this case. It also displays space instead of char 0 if a letter is not existing. Signed-off-by: Eric Leblond --- src/nlmsg.c | 69 ++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/src/nlmsg.c b/src/nlmsg.c index fdb7af8..07f19ba 100644 --- a/src/nlmsg.c +++ b/src/nlmsg.c @@ -281,28 +281,45 @@ mnl_nlmsg_fprintf_payload(FILE *fd, const struct nlmsghdr *nlh, fprintf(fd, "| extra header |\n"); /* this seems like an attribute header. */ } else if (rem == 0 && (attr->nla_type & NLA_TYPE_MASK) != 0) { - fprintf(fd, "|%c[%d;%dm" - "%.5u" - "%c[%dm" - "|" - "%c[%d;%dm" - "%c%c" - "%c[%dm" - "|" - "%c[%d;%dm" - "%.5u" - "%c[%dm|\t", - 27, 1, 31, - attr->nla_len, - 27, 0, - 27, 1, 32, - attr->nla_type & NLA_F_NESTED ? 'N' : '-', - attr->nla_type & - NLA_F_NET_BYTEORDER ? 'B' : '-', - 27, 0, - 27, 1, 34, - attr->nla_type & NLA_TYPE_MASK, - 27, 0); + if (isatty(fileno(fd))) { + fprintf(fd, "|%c[%d;%dm" + "%.5u" + "%c[%dm" + "|" + "%c[%d;%dm" + "%c%c" + "%c[%dm" + "|" + "%c[%d;%dm" + "%.5u" + "%c[%dm|\t", + 27, 1, 31, + attr->nla_len, + 27, 0, + 27, 1, 32, + attr->nla_type & + NLA_F_NESTED ? 'N' : '-', + attr->nla_type & + NLA_F_NET_BYTEORDER ? 'B' : '-', + 27, 0, + 27, 1, 34, + attr->nla_type & NLA_TYPE_MASK, + 27, 0); + } else { + fprintf(fd, "|" + "%.5u" + "|" + "%c%c" + "|" + "%.5u" + "|\t", + attr->nla_len, + attr->nla_type & + NLA_F_NESTED ? 'N' : '-', + attr->nla_type & + NLA_F_NET_BYTEORDER ? 'B' : '-', + attr->nla_type & NLA_TYPE_MASK); + } fprintf(fd, "|len |flags| type|\n"); if (!(attr->nla_type & NLA_F_NESTED)) { @@ -317,10 +334,10 @@ mnl_nlmsg_fprintf_payload(FILE *fd, const struct nlmsghdr *nlh, 0xff & b[i+2], 0xff & b[i+3]); fprintf(fd, "| data |"); fprintf(fd, "\t %c %c %c %c\n", - isalnum(b[i]) ? b[i] : 0, - isalnum(b[i+1]) ? b[i+1] : 0, - isalnum(b[i+2]) ? b[i+2] : 0, - isalnum(b[i+3]) ? b[i+3] : 0); + isalnum(b[i]) ? b[i] : 32, + isalnum(b[i+1]) ? b[i+1] : 32, + isalnum(b[i+2]) ? b[i+2] : 32, + isalnum(b[i+3]) ? b[i+3] : 32); } } fprintf(fd, "----------------\t------------------\n");