LP#1152272: do not log batch invocation of srfsh in .srfsh_history
authorGalen Charlton <gmc@esilibrary.com>
Wed, 3 Jun 2015 18:35:35 +0000 (18:35 +0000)
committerMike Rylander <mrylander@gmail.com>
Wed, 24 Jun 2015 13:45:46 +0000 (09:45 -0400)
When running srfsh to process a script, do not log
the requests in .srfsh_history.

To test
-------
[1] Run the following command:

    echo 'request opensrf.math opensrf.system.echo "foo"' | srfsh

[2] Note that the last line of ~/.srfsh_history should be
    'request opensrf.math opensrf.system.echo "foo"'

[3] Apply the patch, compile, and run

    echo 'request opensrf.math opensrf.system.echo "bar"' | srfsh

[4] This time, no additional line should have been added to
    ~/.srfsh_history

[5] Another variation to try:

    srfsh test.srfsh

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>

src/srfsh/srfsh.c

index a383492..d8132d1 100644 (file)
@@ -147,9 +147,13 @@ int main( int argc, char* argv[] ) {
                        is_from_script = 1;
                }
        }
-               
+
+       // if stdin is not a tty, assume that we're running
+       // a script and don't want to record history
+       if (!isatty(fileno(stdin))) is_from_script = 1;
+
        /* --------------------------------------------- */
-       load_history();
+       if (!is_from_script) load_history();
 
        client = osrfSystemGetTransportClient();
        osrfAppSessionSetIngress("srfsh");
@@ -192,7 +196,7 @@ int main( int argc, char* argv[] ) {
                }
 
                process_request( cmd );
-               if( request && *cmd ) {
+               if( !is_from_script && request && *cmd ) {
                        add_history(request);
                }