ports/175768: ports-mgmt/pkg sends terminal control codes (and duplicate output) even when not running in one

Gerald Pfeifer gerald at pfeifer.com
Fri Feb 1 19:10:00 UTC 2013


>Number:         175768
>Category:       ports
>Synopsis:       ports-mgmt/pkg sends terminal control codes (and duplicate output) even when not running in one
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Feb 01 19:10:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Gerald Pfeifer
>Release:        
>Organization:
>Environment:
>Description:
	Doing my ports tests via scripts and partly using nohup, I
	found duplicate output in my logs and escape sequences.

	So, really two bugs:
	 - status messages appear twice
	 - one of the two copies has an escape sequence and beep embedded
>How-To-Repeat:
	1. nohup make deinstall
	 or
	1. nohup pkg delete ...
	2. vi nohup.out
>Fix:

commit f196ea741f28a7e8919b29b69c7fc815ee882018
Author: Gerald Pfeifer <gerald at pfeifer.com>
Date:   Fri Feb 1 17:31:17 2013 +0000

    Only (try to) set the terminal title if we are actually connected
    to a terminal.

diff --git a/pkg/event.c b/pkg/event.c
index 97d6662..f85efd2 100644
--- a/pkg/event.c
+++ b/pkg/event.c
@@ -96,8 +96,9 @@ event_callback(void *data, struct pkg_event *ev)
 			printf("[%d/%d] ", nbdone, nbactions);
 		printf("Installing %s-%s...", name, version);
 		/* print to the terminal title*/
-		printf("%c]0;[%d/%d] Installing %s-%s%c", '\033', nbdone, nbactions, name, version, '\007');
-
+		if (isatty(fileno(stdout)))
+			printf("%c]0;[%d/%d] Installing %s-%s%c", '\033',
+			       nbdone, nbactions, name, version, '\007');
 		break;
 	case PKG_EVENT_INSTALL_FINISHED:
 		if (quiet)
@@ -129,8 +130,9 @@ event_callback(void *data, struct pkg_event *ev)
 		if (nbactions > 0)
 			printf("[%d/%d] ", nbdone, nbactions);
 		printf("Deleting %s-%s...", name, version);
-		printf("%c]0;[%d/%d] Deleting %s-%s%c", '\033', nbdone,
-		    nbactions, name, version, '\007');
+		if (isatty(fileno(stdout)))
+			printf("%c]0;[%d/%d] Deleting %s-%s%c", '\033', nbdone,
+			       nbactions, name, version, '\007');
 		break;
 	case PKG_EVENT_DEINSTALL_FINISHED:
 		if (quiet)
@@ -149,22 +151,25 @@ event_callback(void *data, struct pkg_event *ev)
 		case 1:
 			printf("Downgrading %s from %s to %s...",
 			    name, version, newversion);
-			printf("%c]0;[%d/%d] Downgrading %s from %s to %s%c",
-			    '\033', nbdone, nbactions, name, version,
-			    newversion, '\007');
+			if (isatty(fileno(stdout)))
+				printf("%c]0;[%d/%d] Downgrading %s from %s to %s%c",
+				       '\033', nbdone, nbactions, name, version,
+				       newversion, '\007');
 			break;
 		case 0:
 			printf("Reinstalling %s-%s",
-			    name, version);
-			printf("%c]0;[%d/%d] Reinstalling %s-%s%c", '\033',
-			    nbdone, nbactions, name, version, '\007');
+			    name, version); 
+			if (isatty(fileno(stdout)))
+				printf("%c]0;[%d/%d] Reinstalling %s-%s%c", '\033',
+				       nbdone, nbactions, name, version, '\007');
 			break;
 		case -1:
 			printf("Upgrading %s from %s to %s...",
 			    name, version, newversion);
-			printf("%c]0;[%d/%d] Upgrading %s from %s to %s%c",
-			    '\033', nbdone, nbactions, name, version,
-			    newversion, '\007');
+			if (isatty(fileno(stdout)))
+				printf("%c]0;[%d/%d] Upgrading %s from %s to %s%c",
+				    '\033', nbdone, nbactions, name, version,
+				    newversion, '\007');
 			break;
 		}
 		break;
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-ports-bugs mailing list