[Opensrf-commits] r1057 - trunk/src/srfsh

svn at svn.open-ils.org svn at svn.open-ils.org
Mon Jul 23 13:45:29 EDT 2007


Author: miker
Date: 2007-07-23 13:44:46 -0400 (Mon, 23 Jul 2007)
New Revision: 1057

Modified:
   trunk/src/srfsh/srfsh.c
Log:
Patch from Scott McKellar providing:

1. In handle_print(), I added the ability to display the value of
raw_print.  If we can display pretty_print, we should be able to
display raw_print.

2. In a couple of places we display the value of login_session.
However if we aren't logged in, we end up passing NULL to printf(),
thereby invoking undefined behavior.  Apparently glibc responds by
printing "(null)".  I contrived explicitly to print "(none)" rather
than rely on glibc.

3. Since login_session is assigned from strdup() if not NULL, I added
a free() for it in a couple of places: one at the end of main(), and
one just before the assignment from strdup().




Modified: trunk/src/srfsh/srfsh.c
===================================================================
--- trunk/src/srfsh/srfsh.c	2007-07-22 22:06:49 UTC (rev 1056)
+++ trunk/src/srfsh/srfsh.c	2007-07-23 17:44:46 UTC (rev 1057)
@@ -182,6 +182,7 @@
 		write_history(history_file);
 
 	free(request);
+	free(login_session);
 
 	osrf_system_shutdown();
 	return 0;
@@ -394,12 +395,15 @@
 					jsonObjectGetKey(jsonObjectGetKey(x,"payload"), "authtoken"));
 			authtime  = jsonObjectGetNumber(
 					jsonObjectGetKey(jsonObjectGetKey(x,"payload"), "authtime"));
-			if(authtoken) login_session = strdup(authtoken);
-			else login_session = NULL;
+			if(authtoken) {
+				free(login_session);
+				login_session = strdup(authtoken);
+			} else login_session = NULL;
 		}
 		else login_session = NULL;
 
-		printf("Login Session: %s.  Session timeout: %f\n", login_session, authtime );
+		printf("Login Session: %s.  Session timeout: %f\n",
+			   (login_session ? login_session : "(none)"), authtime );
 		
 		return 1;
 
@@ -463,8 +467,19 @@
 			}
 		}
 
+		if(!strcmp(variable,"raw_print")) {
+			if(raw_print) {
+				printf("raw_print = true\n");
+				return 1;
+			} else {
+				printf("raw_print = false\n");
+				return 1;
+			}
+		}
+
 		if(!strcmp(variable,"login")) {
-			printf("login session = %s\n", login_session );
+			printf("login session = %s\n",
+				   login_session ? login_session : "(none)" );
 			return 1;
 		}
 



More information about the opensrf-commits mailing list