summaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2008-12-09 09:58:02 +0100
committerWerner Koch <wk@gnupg.org>2008-12-09 09:58:02 +0100
commit382d2f8efbb31b1eee16c1bbcd521099eb42c622 (patch)
tree514044051e08dcc8906d00ddc89a50053483a25b /g10
parentAlign ticker to the full or half second. (diff)
downloadgnupg2-382d2f8efbb31b1eee16c1bbcd521099eb42c622.tar.xz
gnupg2-382d2f8efbb31b1eee16c1bbcd521099eb42c622.zip
Minor fixes.
Diffstat (limited to 'g10')
-rw-r--r--g10/ChangeLog12
-rw-r--r--g10/cpr.c2
-rw-r--r--g10/gpg.c28
-rw-r--r--g10/gpgv.c2
-rw-r--r--g10/keylist.c29
5 files changed, 51 insertions, 22 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 0ad19abaf..23b254ef2 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,15 @@
+2008-12-09 Werner Koch <wk@g10code.com>
+
+ * gpg.c (open_info_file): Add arg BINARY and adjust callers.
+
+ * gpg.c (main): Call i18n_init before init_common_subsystems.
+ * gpgv.c (main): Ditto.
+
+ * keylist.c (set_attrib_fd): Do not close ATTRIB_FP if it is the
+ log stream.
+ (set_attrib_fd) [W32]: Set to binary mode.
+ (dump_attribs): Flush the stream after writing.
+
2008-12-05 Werner Koch <wk@g10code.com>
* call-agent.c (percent_plus_escape): Rename to
diff --git a/g10/cpr.c b/g10/cpr.c
index a1e904e07..6e89d393d 100644
--- a/g10/cpr.c
+++ b/g10/cpr.c
@@ -229,7 +229,7 @@ write_status_buffer ( int no, const char *buffer, size_t len, int wrap )
/* Print the BEGIN_SIGNING status message. If MD is not NULL it is
- used retrieve the hash algorithms used for the message. */
+ used to retrieve the hash algorithms used for the message. */
void
write_status_begin_signing (gcry_md_hd_t md)
{
diff --git a/g10/gpg.c b/g10/gpg.c
index ee6061a22..9af97fb16 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -1036,9 +1036,9 @@ set_screen_dimensions(void)
used with --status-file etc functions. Not generally useful but it
avoids the riscos specific functions and well some Windows people
might like it too. Prints an error message and returns -1 on
- error. On success the file descriptor is returned. */
+ error. On success the file descriptor is returned. */
static int
-open_info_file (const char *fname, int for_write)
+open_info_file (const char *fname, int for_write, int binary)
{
#ifdef __riscos__
return riscos_fdopenfile (fname, for_write);
@@ -1048,10 +1048,16 @@ open_info_file (const char *fname, int for_write)
similar to the option file but in that case it is unlikely that
sensitive information may be retrieved by means of error
messages. */
+ (void)fname;
+ (void)for_write;
+ (void)binary;
return -1;
#else
int fd;
+ if (binary)
+ binary = MY_O_BINARY;
+
/* if (is_secured_filename (fname)) */
/* { */
/* fd = -1; */
@@ -1062,10 +1068,10 @@ open_info_file (const char *fname, int for_write)
do
{
if (for_write)
- fd = open (fname, O_CREAT | O_TRUNC | O_WRONLY,
+ fd = open (fname, O_CREAT | O_TRUNC | O_WRONLY | binary,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
else
- fd = open (fname, O_RDONLY | MY_O_BINARY);
+ fd = open (fname, O_RDONLY | binary);
}
while (fd == -1 && errno == EINTR);
/* } */
@@ -1910,6 +1916,7 @@ main (int argc, char **argv)
log_set_prefix ("gpg", 1);
/* Make sure that our subsystems are ready. */
+ i18n_init();
init_common_subsystems ();
/* Check that the libraries are suitable. Do it right here because the
@@ -1929,7 +1936,6 @@ main (int argc, char **argv)
create_dotlock(NULL); /* Register locking cleanup. */
- i18n_init();
opt.command_fd = -1; /* no command fd */
opt.compress_level = -1; /* defaults to standard compress level */
@@ -2216,16 +2222,16 @@ main (int argc, char **argv)
case oDebugLevel: debug_level = pargs.r.ret_str; break;
case oStatusFD:
- set_status_fd( translate_sys2libc_fd_int (pargs.r.ret_int, 1) );
+ set_status_fd ( translate_sys2libc_fd_int (pargs.r.ret_int, 1) );
break;
case oStatusFile:
- set_status_fd ( open_info_file (pargs.r.ret_str, 1) );
+ set_status_fd ( open_info_file (pargs.r.ret_str, 1, 0) );
break;
case oAttributeFD:
- set_attrib_fd(translate_sys2libc_fd_int (pargs.r.ret_int, 1));
+ set_attrib_fd ( translate_sys2libc_fd_int (pargs.r.ret_int, 1) );
break;
case oAttributeFile:
- set_attrib_fd ( open_info_file (pargs.r.ret_str, 1) );
+ set_attrib_fd ( open_info_file (pargs.r.ret_str, 1, 1) );
break;
case oLoggerFD:
log_set_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1));
@@ -2522,14 +2528,14 @@ main (int argc, char **argv)
pwfd = translate_sys2libc_fd_int (pargs.r.ret_int, 0);
break;
case oPasswdFile:
- pwfd = open_info_file (pargs.r.ret_str, 0);
+ pwfd = open_info_file (pargs.r.ret_str, 0, 1);
break;
case oPasswdRepeat: opt.passwd_repeat=pargs.r.ret_int; break;
case oCommandFD:
opt.command_fd = translate_sys2libc_fd_int (pargs.r.ret_int, 0);
break;
case oCommandFile:
- opt.command_fd = open_info_file (pargs.r.ret_str, 0);
+ opt.command_fd = open_info_file (pargs.r.ret_str, 0, 1);
break;
case oCipherAlgo:
def_cipher_string = xstrdup(pargs.r.ret_str);
diff --git a/g10/gpgv.c b/g10/gpgv.c
index 2f64f83c7..fd0ae8b87 100644
--- a/g10/gpgv.c
+++ b/g10/gpgv.c
@@ -147,10 +147,10 @@ main( int argc, char **argv )
log_set_prefix ("gpgv", 1);
/* Make sure that our subsystems are ready. */
+ i18n_init();
init_common_subsystems ();
gnupg_init_signals (0, NULL);
- i18n_init();
opt.command_fd = -1; /* no command fd */
opt.pgp2_workarounds = 1;
diff --git a/g10/keylist.c b/g10/keylist.c
index 5f86a38e4..91b337407 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -24,6 +24,9 @@
#include <string.h>
#include <errno.h>
#include <assert.h>
+#ifdef HAVE_DOSISH_SYSTEM
+#include <fcntl.h> /* for setmode() */
+#endif
#include "gpg.h"
#include "options.h"
@@ -50,7 +53,8 @@ struct sig_stats
int oth_err;
};
-static FILE *attrib_fp=NULL;
+/* The stream used to write attribute packets to. */
+static FILE *attrib_fp = NULL;
/****************
* List the keys
@@ -745,6 +749,7 @@ dump_attribs(const PKT_user_id *uid,PKT_public_key *pk,PKT_secret_key *sk)
}
fwrite(uid->attribs[i].data,uid->attribs[i].len,1,attrib_fp);
+ fflush (attrib_fp);
}
}
@@ -1609,29 +1614,35 @@ print_card_serialno (PKT_secret_key *sk)
-void set_attrib_fd(int fd)
+void
+set_attrib_fd (int fd)
{
static int last_fd=-1;
if ( fd != -1 && last_fd == fd )
return;
- if ( attrib_fp && attrib_fp != stdout && attrib_fp != stderr )
+ if ( attrib_fp && attrib_fp != stdout && attrib_fp != stderr
+ && attrib_fp != log_get_stream () )
fclose (attrib_fp);
attrib_fp = NULL;
if ( fd == -1 )
return;
+#ifdef HAVE_DOSISH_SYSTEM
+ setmode ( fileno(fp) , O_BINARY );
+#endif
if( fd == 1 )
attrib_fp = stdout;
else if( fd == 2 )
attrib_fp = stderr;
else
- attrib_fp = fdopen( fd, "wb" );
- if( !attrib_fp ) {
- log_fatal("can't open fd %d for attribute output: %s\n",
- fd, strerror(errno));
- }
-
+ attrib_fp = fdopen (fd, "wb");
+ if (!attrib_fp)
+ {
+ log_fatal("can't open fd %d for attribute output: %s\n",
+ fd, strerror(errno));
+ }
+
last_fd = fd;
}