diff --git a/g10/ChangeLog b/g10/ChangeLog index 872791703..c4ff17743 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,9 @@ +2001-01-09 Timo Schulz + + * encode.c (encode_crypt_files): Now it behaves like verify_files. + * g10.c (main): We don't need to check argc for encode_crypt_files + any longer. + 2001-01-09 Timo Schulz * exec.c: Include windows.h for dosish systems. diff --git a/g10/encode.c b/g10/encode.c index 3a90c3712..d2dba0fd0 100644 --- a/g10/encode.c +++ b/g10/encode.c @@ -566,16 +566,35 @@ write_pubkey_enc_from_list( PK_LIST pk_list, DEK *dek, IOBUF out ) } void -encode_crypt_files(int argc, char **argv, STRLIST remusr) +encode_crypt_files(int nfiles, char **files, STRLIST remusr) { int rc = 0; - - while (argc--) { - print_file_status(STATUS_FILE_START, *argv, 2); - if ( (rc = encode_crypt(*argv, remusr)) ) - log_error("%s: encryption failed: %s\n", print_fname_stdin(*argv), - g10_errstr(rc) ); - write_status( STATUS_FILE_DONE ); - argv++; + + if (!nfiles) { + char line[2048]; + unsigned int lno = 0; + while ( fgets(line, DIM(line), stdin) ) { + lno++; + if (!*line || line[strlen(line)-1] != '\n') { + log_error("input line %u too long or missing LF\n", lno); + return; + } + line[strlen(line)-1] = '\0'; + print_file_status(STATUS_FILE_START, line, 2); + if ( (rc = encode_crypt(line, remusr)) ) + log_error("%s: encryption failed: %s\n", print_fname_stdin(line), + g10_errstr(rc) ); + write_status( STATUS_FILE_DONE ); + } + } + else { + while (nfiles--) { + print_file_status(STATUS_FILE_START, *files, 2); + if ( (rc = encode_crypt(*files, remusr)) ) + log_error("%s: encryption failed: %s\n", print_fname_stdin(*files), + g10_errstr(rc) ); + write_status( STATUS_FILE_DONE ); + files++; + } } } diff --git a/g10/g10.c b/g10/g10.c index 0fc15d25e..ac685fd73 100644 --- a/g10/g10.c +++ b/g10/g10.c @@ -816,7 +816,7 @@ main( int argc, char **argv ) opt.homedir = buf; } #endif - + #undef USE_SHM_COPROCESSING #ifdef USE_SHM_COPROCESSING if( opt.shm_coprocess ) { init_shm_coprocessing(requested_shm_size, 1 ); @@ -1541,9 +1541,8 @@ main( int argc, char **argv ) break; case aEncrFiles: /* encrypt the given files */ - if (argc) encode_crypt_files(argc, argv, remusr); - break; + break; case aSign: /* sign the given file */ sl = NULL; diff --git a/g10/main.h b/g10/main.h index 772e1c432..b262056b0 100644 --- a/g10/main.h +++ b/g10/main.h @@ -76,7 +76,7 @@ void display_online_help( const char *keyword ); int encode_symmetric( const char *filename ); int encode_store( const char *filename ); int encode_crypt( const char *filename, STRLIST remusr ); -void encode_crypt_files(int argc, char **argv, STRLIST remusr); +void encode_crypt_files(int nfiles, char **files, STRLIST remusr); int encrypt_filter( void *opaque, int control, IOBUF a, byte *buf, size_t *ret_len);