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/