[97250] trunk/base/src/pextlib1.0/tracelib.c

cal at macports.org cal at macports.org
Sat Sep 1 02:10:36 PDT 2012


Revision: 97250
          https://trac.macports.org/changeset/97250
Author:   cal at macports.org
Date:     2012-09-01 02:10:34 -0700 (Sat, 01 Sep 2012)
Log Message:
-----------
tracelib: check whether tcl eval was successful, print error if it wasn't

Modified Paths:
--------------
    trunk/base/src/pextlib1.0/tracelib.c

Modified: trunk/base/src/pextlib1.0/tracelib.c
===================================================================
--- trunk/base/src/pextlib1.0/tracelib.c	2012-09-01 08:23:52 UTC (rev 97249)
+++ trunk/base/src/pextlib1.0/tracelib.c	2012-09-01 09:10:34 UTC (rev 97250)
@@ -93,6 +93,7 @@
 static void sandbox_violation(int sock, const char * path);
 static void ui_warn(const char * format, ...);
 static void ui_info(const char * format, ...);
+static void ui_error(const char *format, ...);
 
 #define MAX_SOCKETS ((FD_SETSIZE)-1)
 
@@ -321,43 +322,47 @@
 	char * port=0;
 	size_t len=1;
 	char resolution='!';
+	int tcl_retval;
 		
 	Tcl_SetVar(interp, "path", path, 0);
-	Tcl_Eval(interp, "registry::file_registered $path");
-	port=strdup(Tcl_GetStringResult(interp));
+	// FIXME: Use C registry API
+	tcl_retval = Tcl_Eval(interp, "registry::file_registered $path");
+	port = strdup(Tcl_GetStringResult(interp));
 	if (!port) {
 		ui_warn("dep_check: memory allocation failed");
 	    return;
 	}
+	if (tcl_retval != TCL_OK) {
+		ui_error("failed to run registry::file_registered \"%s\": %s", path, port);
+	}
 	Tcl_UnsetVar(interp, "path", 0);
 	
-	if(*port!='0'||port[1])
-	{
-		char * t;
+	if (tcl_retval == TCL_OK && (*port != '0' || port[1])) {
+		char *t;
 	
-		t=depends;
-		for(;*t;t+=strlen(t)+1)
-		{
-			if(!strcmp(t, port))
-			{
-				resolution='+';
+		t = depends;
+		for (; *t; t += strlen(t) + 1) {
+			fprintf(stderr, "trace: %s =?= %s\n", t, port);
+			if (!strcmp(t, port)) {
+				resolution = '+';
 				break;
 			}
 		}
 	}
-	
-	if(resolution!='+') {
-	    if(*port=='0'&&!port[1])
+
+	if (resolution != '+') {
+	    if (*port == '0' && !port[1]) {
 		    ui_info("trace: access denied to %s (*unknown*)", path);
-		else
+		} else {
 		    ui_info("trace: access denied to %s (%s)", path, port);
+		}
     }
 
 	free(port);
 	
-	if(send(sock, &len, sizeof(len), 0)==-1)
+	if (send(sock, &len, sizeof(len), 0) == -1)
 		ui_warn("tracelib send failed");
-	if(send(sock, &resolution, 1, 0)==-1)
+	if (send(sock, &resolution, 1, 0) == -1)
 		ui_warn("tracelib send failed");
 }
 
@@ -370,8 +375,9 @@
 	snprintf(tclcmd, sizeof(tclcmd), "ui_%s $warn", severity);
 	
 	Tcl_SetVar(interp, "warn", buf, 0);
-	
-	Tcl_Eval(interp, tclcmd);
+	if (TCL_OK != Tcl_Eval(interp, tclcmd)) {
+		fprintf(stderr, "Error evaluating tcl statement `%s': %s\n", tclcmd, Tcl_GetStringResult(interp));
+	}
 	Tcl_UnsetVar(interp, "warn", 0);
 	
 }
@@ -381,7 +387,7 @@
 	va_list va;
 	
 	va_start(va, format);
-		ui_msg("warn", format, va);
+	ui_msg("warn", format, va);
 	va_end(va);
 }
 
@@ -390,10 +396,17 @@
 	va_list va;
 	
 	va_start(va, format);
-		ui_msg("msg", format, va);
+	ui_msg("info", format, va);
 	va_end(va);
 }
 
+static void ui_error(const char *format, ...) {
+	va_list va;
+	va_start(va, format);
+	ui_msg("error", format, va);
+	va_end(va);
+}
+
 static int TracelibOpenSocketCmd(Tcl_Interp * in)
 {
 	struct sockaddr_un sun;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20120901/db0d94dd/attachment.html>


More information about the macports-changes mailing list