[notmuch] [PATCH 3/3] change config file location to be ~/.notmuch/config

Bart Trojanowski bart at jukie.net
Sun Nov 22 14:24:53 PST 2009


I totally agree with Jamie about the config rename.  I don't know if I
agree with the database location change... but I might just need some
convincing.

Would it be enough to just read .notmuch/config and fall back to
.notmuch-config otherwise?

-Bart

* Jameson Graef Rollins <jrollins at finestructure.net> [091122 17:15]:
> Hi, folks.  I wanted to comment on this patch request.
> 
> I personally think it makes a lot of sense to use config directories.
> This makes things much neater, since all config files can be kept in
> one place without clutter the config name space.  I can imagine down
> the line that there may be more notmuch config files, and it would be
> nicer to have a config directory rather than a bunch of ~/.notmuch-*
> files in the user dot file config space.
> 
> I also imagine this config directory as a place to store the notmuch
> database files.  I would rather keep all the notmuch data and config
> files together in one place, and keep my mail directories completely
> untouched (only read) by notmuch, if possible.
> 
> I realize, however, there is a transition problem associated with
> moving the config file, which is why I propose it be moved sooner
> rather than later.  If folks are interested in this change, and are
> worried about transition even at this early stage, we can try to come
> up with some smoother transition code.
> 
> Finally, I am (maybe clearly) *not* particularly adept at c
> programming.  I'm still learning.  I think I already have better ways
> to improve this patch.  I will try to make some improvements and send
> those along as well.
> 
> jamie.
> 
> PS. I'm sure this has already been discussed on the list, but if this
> is not the best way to send patches, please let me know.  I would be
> happy to send a pointer to my notmuch git repo if it would be
> preferable to just pull from it directly.
> 
> 
> On Sun, Nov 22, 2009 at 04:58:36PM -0500, Jameson Graef Rollins wrote:
> > This change creates a ~/.notmuch config directory where the config
> > file is stored when created with the "setup" command.  The use of a
> > ~/.notmuch config directory creates one place where all notmuch config
> > files and data can be stored, which will greatly simplify managing
> > notmuch, and reduce cluter of user dot files.
> > ---
> >  notmuch-config.c |   21 ++++++++++++++++++---
> >  notmuch-setup.c  |    2 +-
> >  notmuch.1        |    4 ++--
> >  notmuch.c        |    2 +-
> >  4 files changed, 22 insertions(+), 7 deletions(-)
> > 
> > diff --git a/notmuch-config.c b/notmuch-config.c
> > index 7252a19..321c880 100644
> > --- a/notmuch-config.c
> > +++ b/notmuch-config.c
> > @@ -22,9 +22,11 @@
> >  
> >  #include <pwd.h>
> >  #include <netdb.h>
> > +#include <libgen.h>
> > +#include <sys/stat.h>
> >  
> >  static const char toplevel_config_comment[] =
> > -    " .notmuch-config - Configuration file for the notmuch mail system\n"
> > +    " .notmuch/config - Configuration file for the notmuch mail system\n"
> >      "\n"
> >      " For more information about notmuch, see http://notmuchmail.org";
> >  
> > @@ -134,7 +136,7 @@ get_username_from_passwd_file (void *ctx)
> >  
> >  /* Open the named notmuch configuration file. A filename of NULL will
> >   * be interpreted as the default configuration file
> > - * ($HOME/.notmuch-config).
> > + * ($HOME/.notmuch/config).
> >   *
> >   * If any error occurs, (out of memory, or a permission-denied error,
> >   * etc.), this function will print a message to stderr and return
> > @@ -183,7 +185,7 @@ notmuch_config_open (void *ctx,
> >      if (filename)
> >  	config->filename = talloc_strdup (config, filename);
> >      else
> > -	config->filename = talloc_asprintf (config, "%s/.notmuch-config",
> > +	config->filename = talloc_asprintf (config, "%s/.notmuch/config",
> >  					    getenv ("HOME"));
> >  
> >      config->key_file = g_key_file_new ();
> > @@ -297,14 +299,27 @@ notmuch_config_save (notmuch_config_t *config)
> >  {
> >      size_t length;
> >      char *data;
> > +    char buf[256];
> >      GError *error = NULL;
> >  
> > +    struct stat statbuf;
> > +
> >      data = g_key_file_to_data (config->key_file, &length, NULL);
> >      if (data == NULL) {
> >  	fprintf (stderr, "Out of memory.\n");
> >  	return 1;
> >      }
> >  
> > +    /* Create config directory if it doesn't already exist */
> > +    snprintf(buf, sizeof buf, "%s", config->filename);
> > +    dirname(buf);
> > +    if (stat(buf, &statbuf) < 0) {
> > +      if (mkdir(buf, 0755) < 0) {
> > +	fprintf (stderr, "Could not create directory '%s'\n.", buf);
> > +	return 1;
> > +      }
> > +    }
> > +
> >      if (! g_file_set_contents (config->filename, data, length, &error)) {
> >  	fprintf (stderr, "Error saving configuration to %s: %s\n",
> >  		 config->filename, error->message);
> > diff --git a/notmuch-setup.c b/notmuch-setup.c
> > index 68788e1..76e104c 100644
> > --- a/notmuch-setup.c
> > +++ b/notmuch-setup.c
> > @@ -74,7 +74,7 @@ welcome_message_post_setup (void)
> >  {
> >      printf ("\n"
> >  "Notmuch is now configured, and the configuration settings are saved in\n"
> > -"a file in your home directory named .notmuch-config . If you'd like to\n"
> > +"a file in your home directory named .notmuch/config . If you'd like to\n"
> >  "change the configuration in the future, you can either edit that file\n"
> >  "directly or run \"notmuch setup\".\n\n"
> >  
> > diff --git a/notmuch.1 b/notmuch.1
> > index 8a3fb40..9ea1d42 100644
> > --- a/notmuch.1
> > +++ b/notmuch.1
> > @@ -53,7 +53,7 @@ Interactively sets up notmuch for first use.
> >  The setup command will prompt for your full name, your primary email
> >  address, any alternate email addresses you use, and the directory
> >  containing your email archives. Your answers will be written to a
> > -configuration file in ${HOME}/.notmuch-config . This configuration
> > +configuration file in ${HOME}/.notmuch/config . This configuration
> >  file will be created with descriptive comments, making it easy to edit
> >  by hand later to change the configuration. Or you can run
> >  .B "notmuch setup"
> > @@ -245,7 +245,7 @@ takes an existing set of messages and constructs a suitable mail
> >  template. The Reply-to header (if any, otherwise From:) is used for
> >  the To: address. Vales from the To: and Cc: headers are copied, but
> >  not including any of the current user's email addresses (as configured
> > -in primary_mail or other_email in the .notmuch-config file) in the
> > +in primary_mail or other_email in the .notmuch/config file) in the
> >  recipient list
> >  
> >  It also builds a suitable new subject, including Re: at the front (if
> > diff --git a/notmuch.c b/notmuch.c
> > index 5cc8e4c..2d19a91 100644
> > --- a/notmuch.c
> > +++ b/notmuch.c
> > @@ -98,7 +98,7 @@ command_t commands[] = {
> >        "\t\tThe setup command will prompt for your full name, your primary\n"
> >        "\t\temail address, any alternate email addresses you use, and the\n"
> >        "\t\tdirectory containing your email archives. Your answers will be\n"
> > -      "\t\twritten to a configuration file in ${HOME}/.notmuch-config .\n"
> > +      "\t\twritten to a configuration file in ${HOME}/.notmuch/config .\n"
> >        "\n"
> >        "\t\tThis configuration file will be created with descriptive\n"
> >        "\t\tcomments, making it easy to edit by hand later to change the\n"
> > -- 
> > 1.6.5
> > 



> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


-- 
				WebSig: http://www.jukie.net/~bart/sig/


More information about the notmuch mailing list