[OpenSRF-GIT] OpenSRF branch master updated. 42f14c919d82abbf5927775b933ff8c5d4070d2e

Evergreen Git git at git.evergreen-ils.org
Wed Jun 3 13:21:00 EDT 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "OpenSRF".

The branch, master has been updated
       via  42f14c919d82abbf5927775b933ff8c5d4070d2e (commit)
       via  d9cbdfd1deb13932720ddffc7f01e976e8efaeda (commit)
      from  966fb05ed6b47b9a8982cbef2b665f8bab4f75d1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 42f14c919d82abbf5927775b933ff8c5d4070d2e
Author: Galen Charlton <gmc at esilibrary.com>
Date:   Tue Mar 24 21:00:57 2015 +0000

    LP#1436047: make srfsh --safe act as if "! command" doesn't exist
    
    This patch make srfsh treat attempting to run an external
    command via "! command" as a parsing error if --safe is
    supplied.  It also suppress mention of "! commands" from
    the internal help.
    
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/src/srfsh/srfsh.c b/src/srfsh/srfsh.c
index aed9536..753180b 100644
--- a/src/srfsh/srfsh.c
+++ b/src/srfsh/srfsh.c
@@ -376,8 +376,10 @@ static int process_request( const char* request ) {
 		ret_val = handle_close( cmd_array );
 
 	else if ( request[0] == '!') {
-		if (!no_bang) system( request + 1 );
-		ret_val = 1;
+		if (!no_bang) {
+			system( request + 1 );
+			ret_val = 1;
+		}
 	}
 
 	osrfStringArrayFree( cmd_array );
@@ -985,8 +987,12 @@ static int print_help( void ) {
 			"---------------------------------------------------------------------------------\n"
 			"General commands:\n"
 			"---------------------------------------------------------------------------------\n"
-			"help                   - Display this message\n"
-			"!<command> [args]      - Forks and runs the given command in the shell\n"
+			"help                   - Display this message\n",
+			stdout );
+	if (!no_bang) fputs(
+			"!<command> [args]      - Forks and runs the given command in the shell\n",
+			stdout );
+	fputs(
 		/*
 			"time			- Prints the current time\n"
 			"time <timestamp>	- Formats seconds since epoch into readable format\n"

commit d9cbdfd1deb13932720ddffc7f01e976e8efaeda
Author: Mike Rylander <mrylander at gmail.com>
Date:   Tue Mar 24 16:22:16 2015 -0400

    LP#1436047: Allow disabling of "bang commands" in srfsh
    
    srfsh has the ability to execute commands via system() calls using
    the common "!command" syntax.  This is very useful, but it would
    be nice to be able to turn that functionality off in some cases.
    
    This branch adds argument parsing to detect a new '--safe' command
    line parameter, which disables the "!command" syntax.
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/src/srfsh/srfsh.c b/src/srfsh/srfsh.c
index 956d62a..aed9536 100644
--- a/src/srfsh/srfsh.c
+++ b/src/srfsh/srfsh.c
@@ -95,6 +95,7 @@ static void close_all_sessions( void );
 
 static int recv_timeout = 120;
 static int is_from_script = 0;
+static int no_bang = 0;
 
 static osrfHash* server_hash = NULL;
 
@@ -120,20 +121,31 @@ int main( int argc, char* argv[] ) {
 	}
 
 	if(argc > 1) {
-		/* for now.. the first arg is used as a script file for processing */
 		int f;
-		if( (f = open(argv[1], O_RDONLY)) == -1 ) {
-			osrfLogError( OSRF_LOG_MARK, "Unable to open file %s for reading, exiting...", argv[1]);
-			return -1;
-		}
+		int i;
+		for (i = 1; i < argc; i++) {
 
-		if(dup2(f, STDIN_FILENO) == -1) {
-			osrfLogError( OSRF_LOG_MARK, "Unable to duplicate STDIN, exiting...");
-			return -1;
-		}
+			if( !strcmp( argv[i], "--safe" ) ) {
+				no_bang = 1;
+				continue;
+			}
 
-		close(f);
-		is_from_script = 1;
+			/* for now.. the first unrecognized arg is used as a script file for processing */
+			if (is_from_script) continue;
+
+			if( (f = open(argv[i], O_RDONLY)) == -1 ) {
+				osrfLogError( OSRF_LOG_MARK, "Unable to open file %s for reading, exiting...", argv[i]);
+				return -1;
+			}
+
+			if(dup2(f, STDIN_FILENO) == -1) {
+				osrfLogError( OSRF_LOG_MARK, "Unable to duplicate STDIN, exiting...");
+				return -1;
+			}
+
+			close(f);
+			is_from_script = 1;
+		}
 	}
 		
 	/* --------------------------------------------- */
@@ -364,7 +376,7 @@ static int process_request( const char* request ) {
 		ret_val = handle_close( cmd_array );
 
 	else if ( request[0] == '!') {
-		system( request + 1 );
+		if (!no_bang) system( request + 1 );
 		ret_val = 1;
 	}
 

-----------------------------------------------------------------------

Summary of changes:
 src/srfsh/srfsh.c |   48 +++++++++++++++++++++++++++++++++---------------
 1 files changed, 33 insertions(+), 15 deletions(-)


hooks/post-receive
-- 
OpenSRF


More information about the opensrf-commits mailing list