From 7ce72c97bfe1ab2f58248a6afe629aafa20d058b Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 1 Jul 2013 18:08:56 +0200 Subject: [PATCH] ssh: Make the mode extension "x" portable by a call to es_fopen. * agent/command-ssh.c (open_control_file): Use_es_fopen to support the "wx" mode flag. -- This also patch also specifies a file mode parameter. However, this will only be used with an updated version of es_stream which we have not yet done. --- agent/command-ssh.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/agent/command-ssh.c b/agent/command-ssh.c index 2f96ef51b..e96d6f512 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -681,18 +681,16 @@ open_control_file (FILE **r_fp, int append) fp = fopen (fname, append? "a+":"r"); if (!fp && errno == ENOENT) { - /* Fixme: "x" is a GNU extension. We might want to use the es_ - functions here. */ - fp = fopen (fname, "wx"); - if (!fp) + estream_t stream = es_fopen (fname, "wx,mode=-rw-r"); + if (!stream) { - err = gpg_error (gpg_err_code_from_errno (errno)); + err = gpg_error_from_syserror (); log_error (_("can't create `%s': %s\n"), fname, gpg_strerror (err)); xfree (fname); return err; } - fputs (sshcontrolblurb, fp); - fclose (fp); + es_fputs (sshcontrolblurb, stream); + es_fclose (stream); fp = fopen (fname, append? "a+":"r"); }