diff options
Diffstat (limited to '')
-rw-r--r-- | zgrep.cc | 20 |
1 files changed, 13 insertions, 7 deletions
@@ -1,5 +1,5 @@ /* Zgrep - search compressed files for a regular expression - Copyright (C) 2010-2015 Antonio Diaz Diaz. + Copyright (C) 2010-2016 Antonio Diaz Diaz. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -52,10 +52,11 @@ void show_help() "file is compressed, its decompressed content is used. If a given file\n" "does not exist, and its name does not end with one of the known\n" "extensions, zgrep tries the compressed file names corresponding to the\n" - "supported formats. If no files are specified, data is read from\n" - "standard input, decompressed if needed, and fed to grep. Data read from\n" - "standard input must be of the same type; all uncompressed or all\n" - "in the same compression format.\n" + "supported formats.\n" + "\nIf no files are specified, or if a file is specified as '-', data is\n" + "read from standard input, decompressed if needed, and fed to grep. Data\n" + "read from standard input must be of the same type; all uncompressed or\n" + "all in the same compression format.\n" "\nThe supported formats are bzip2, gzip, lzip and xz.\n" "\nUsage: zgrep [options] <pattern> [files]\n" "\nExit status is 0 if match, 1 if no match, 2 if trouble.\n" @@ -337,16 +338,21 @@ int main( const int argc, const char * const argv[] ) for( ; argind < parser.arguments(); ++argind ) filenames.push_back( parser.argument( argind ) ); - if( filenames.empty() ) filenames.push_back("-"); + if( filenames.empty() ) filenames.push_back( "-" ); if( show_name < 0 ) show_name = ( filenames.size() != 1 || recursive ); int retval = 1; bool error = false; + bool stdin_used = false; while( next_filename( filenames, input_filename, error, recursive, false, no_messages ) ) { - if( input_filename.empty() ) infd = STDIN_FILENO; + if( input_filename.empty() ) + { + if( stdin_used ) continue; else stdin_used = true; + infd = STDIN_FILENO; + } else { infd = open_instream( input_filename, format_index < 0, no_messages ); |