unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Tomi Ollila <tomi.ollila@iki.fi>
To: Austin Clements <amdragon@MIT.EDU>
Cc: notmuch@notmuchmail.org
Subject: Re: [PATCH v2 1/4] cli: add global option --stderr=FILE
Date: Tue, 28 May 2013 09:34:08 +0300	[thread overview]
Message-ID: <m2a9nfr4tb.fsf@guru.guru-group.fi> (raw)
In-Reply-To: <20130527214436.GT5999@mit.edu>

On Tue, May 28 2013, Austin Clements <amdragon@MIT.EDU> wrote:

> Quoth Tomi Ollila on May 26 at 11:45 am:
>> With this option all writes to stderr are redirected to the spesified
>> FILE (or to stdout on case FILE is '-'). This is immediately useful
>> in emacs interface as some of its exec intefaces do not provide
>> separation of stdout and stderr.
>> ---
>>  notmuch-client.h |  1 +
>>  notmuch.c        | 32 ++++++++++++++++++++++++++++++++
>>  2 files changed, 33 insertions(+)
>> 
>> diff --git a/notmuch-client.h b/notmuch-client.h
>> index 45749a6..4a3c7ac 100644
>> --- a/notmuch-client.h
>> +++ b/notmuch-client.h
>> @@ -54,6 +54,7 @@ typedef GMimeCipherContext notmuch_crypto_context_t;
>>  #include <sys/stat.h>
>>  #include <sys/time.h>
>>  #include <unistd.h>
>> +#include <fcntl.h>
>>  #include <dirent.h>
>>  #include <errno.h>
>>  #include <signal.h>
>> diff --git a/notmuch.c b/notmuch.c
>> index f51a84f..654a568 100644
>> --- a/notmuch.c
>> +++ b/notmuch.c
>> @@ -251,6 +251,32 @@ notmuch_command (notmuch_config_t *config,
>>      return 0;
>>  }
>>  
>> +static int
>> +redirect_stderr (const char * stderr_file)
>> +{
>> +    if (strcmp (stderr_file, "-") == 0) {
>> +	if (dup2 (STDOUT_FILENO, STDERR_FILENO) < 0) {
>> +	    perror ("dup2");
>> +	    return 1;
>> +	}
>> +    } else {
>> +	int fd = open (stderr_file, O_WRONLY|O_CREAT|O_APPEND, 0644);
>
> I think this should include O_TRUNC; otherwise it's too error-prone to
> use programmatically. 

You're right! I thought this one night and was supposed check that it is
O_TRUNC there -- forgot and obviously it wasn't ;/

> The permissions should be 0666 (if the user's
> umask says things should be group or world writable, it's not our job
> to disagree).

I agree that 0644 is incorrect -- but IMHO it should be 0600 -- when the
data is written to /tmp world-readable file gave others chance to read
potentially sensitive information from that file...

I'll ask this (also) in IRC -- if people generally agree the bits should
be 0666 I'll do that change instead (even personally opposing ATM).

I'll also do the man and NEWS chances suggested for v3.

Thanks for the review (this also goes to Jani & Mark).

Tomi

>> +	if (fd < 0) {
>> +	    fprintf (stderr, "Error: Cannot redirect stderr to '%s': %s\n",
>> +		     stderr_file, strerror (errno));
>> +	    return 1;
>> +	}
>> +	if (fd != STDERR_FILENO) {
>> +	    if (dup2 (fd, STDERR_FILENO) < 0) {
>> +		perror ("dup2");
>> +		return 1;
>> +	    }
>> +	    close (fd);
>> +	}
>> +    }
>> +    return 0;
>> +}
>> +
>>  int
>>  main (int argc, char *argv[])
>>  {
>> @@ -259,6 +285,7 @@ main (int argc, char *argv[])
>>      const char *command_name = NULL;
>>      command_t *command;
>>      char *config_file_name = NULL;
>> +    char *stderr_file = NULL;
>>      notmuch_config_t *config;
>>      notmuch_bool_t print_help=FALSE, print_version=FALSE;
>>      int opt_index;
>> @@ -268,6 +295,7 @@ main (int argc, char *argv[])
>>  	{ NOTMUCH_OPT_BOOLEAN, &print_help, "help", 'h', 0 },
>>  	{ NOTMUCH_OPT_BOOLEAN, &print_version, "version", 'v', 0 },
>>  	{ NOTMUCH_OPT_STRING, &config_file_name, "config", 'c', 0 },
>> +	{ NOTMUCH_OPT_STRING, &stderr_file, "stderr", '\0', 0 },
>>  	{ 0, 0, 0, 0, 0 }
>>      };
>>  
>> @@ -287,6 +315,10 @@ main (int argc, char *argv[])
>>  	return 1;
>>      }
>>  
>> +    if (stderr_file && redirect_stderr (stderr_file) != 0) {
>> +	/* error already printed */
>> +	return 1;
>> +    }
>>      if (print_help)
>>  	return notmuch_help_command (NULL, argc - 1, &argv[1]);
>>  
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

  reply	other threads:[~2013-05-28  6:34 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-26  8:45 v2 of --stderr=FILE patches Tomi Ollila
2013-05-26  8:45 ` [PATCH v2 1/4] cli: add global option --stderr=FILE Tomi Ollila
2013-05-27 21:44   ` Austin Clements
2013-05-28  6:34     ` Tomi Ollila [this message]
2013-05-26  8:45 ` [PATCH v2 2/4] test: added --stderr=FILE tests Tomi Ollila
2013-05-26  8:45 ` [PATCH v2 3/4] man: documented --stderr=FILE in notmuch.1 manual page Tomi Ollila
2013-05-27 21:47   ` Austin Clements
2013-05-26  8:45 ` [PATCH v2 4/4] NEWS: added information about new --stderr=FILE global option Tomi Ollila
2013-05-27 19:29 ` [PATCH v2 4b/4] NEWS: added information about new --stderr=FILE top level option Tomi Ollila

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2a9nfr4tb.fsf@guru.guru-group.fi \
    --to=tomi.ollila@iki.fi \
    --cc=amdragon@MIT.EDU \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).