[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