aboutsummaryrefslogtreecommitdiffstats
path: root/common/iobuf.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-11-29 15:18:24 +0000
committerWerner Koch <[email protected]>2016-11-29 15:54:36 +0000
commit60b4982836a00ef6b2a97d16f735b3f6b74dce62 (patch)
tree95b51ae8ed413646ebdc601d8344fd85e34965dd /common/iobuf.c
parentg10: Fix memory leak. (diff)
downloadgnupg-60b4982836a00ef6b2a97d16f735b3f6b74dce62.tar.gz
gnupg-60b4982836a00ef6b2a97d16f735b3f6b74dce62.zip
gpg,sm: Merge the two versions of check_special_filename.
* sm/gpgsm.c (check_special_filename): Move to .. * common/sysutils.c (check_special_filename): here. Add arg NOTRANSLATE. (allow_special_filenames): New local var. (enable_special_filenames): New public functions. * sm/gpgsm.c (allow_special_filenames): Remove var. (main): Call enable_special_filenames instead of setting the var. (open_read, open_es_fread, open_es_fwrite): Call check_special_filename with 0 for NOTRANSLATE. * common/iobuf.c (special_names_enabled): Remove var. (iobuf_enable_special_filenames): Remove func. (check_special_filename): Remove func. (iobuf_is_pipe_filename): Call new version of the function with NOTRANSLATE set. (do_open): Ditto. * g10/gpg.c (main): Call enable_special_filenames instead of iobuf_enable_special_filenames. * g10/gpgv.c (main): Ditto. -- Note that we keep the iobuf.c:translate_file_handle because it is a bit different (for whatever reasons) than the translate function from sysutils. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'common/iobuf.c')
-rw-r--r--common/iobuf.c37
1 files changed, 4 insertions, 33 deletions
diff --git a/common/iobuf.c b/common/iobuf.c
index ed90bd7a2..d346027e4 100644
--- a/common/iobuf.c
+++ b/common/iobuf.c
@@ -155,11 +155,6 @@ typedef struct
block_filter_ctx_t;
-/* Global flag to tell whether special file names are enabled. See
- gpg.c for an explanation of these file names. FIXME: This does not
- belong in the iobuf subsystem. */
-static int special_names_enabled;
-
/* Local prototypes. */
static int underflow (iobuf_t a, int clear_pending_eof);
static int underflow_target (iobuf_t a, int clear_pending_eof, size_t target);
@@ -1237,41 +1232,16 @@ iobuf_temp_with_content (const char *buffer, size_t length)
return a;
}
-void
-iobuf_enable_special_filenames (int yes)
-{
- special_names_enabled = yes;
-}
-
-
-/* See whether the filename has the form "-&nnnn", where n is a
- non-zero number. Returns this number or -1 if it is not the
- case. */
-static int
-check_special_filename (const char *fname)
-{
- if (special_names_enabled && fname && *fname == '-' && fname[1] == '&')
- {
- int i;
-
- fname += 2;
- for (i = 0; digitp (fname+i); i++)
- ;
- if (!fname[i])
- return atoi (fname);
- }
- return -1;
-}
-
int
iobuf_is_pipe_filename (const char *fname)
{
if (!fname || (*fname=='-' && !fname[1]) )
return 1;
- return check_special_filename (fname) != -1;
+ return check_special_filename (fname, 0, 1) != -1;
}
+
static iobuf_t
do_open (const char *fname, int special_filenames,
int use, const char *opentype, int mode700)
@@ -1304,7 +1274,8 @@ do_open (const char *fname, int special_filenames,
}
else if (!fname)
return NULL;
- else if (special_filenames && (fd = check_special_filename (fname)) != -1)
+ else if (special_filenames
+ && (fd = check_special_filename (fname, 0, 1)) != -1)
return iobuf_fdopen (translate_file_handle (fd, use == IOBUF_INPUT ? 0 : 1),
opentype);
else