The first patch looks ok. I like the new API overall. As far as breaking contrib/notmuch-deliver, I'd rather fix notmuch-insert than put effort into notmuch-deliver at this point. I guess it could be a rough transition for people running notmuch-deliver from git. Jani Nikula <jani@nikula.org> writes: > +/* > + * XXX: error handling should clean up *all* state created! > + */ is this a warning to future hackers or some current problem? > notmuch_status_t > -notmuch_database_open (const char *path, > - notmuch_database_mode_t mode, > - notmuch_database_t **database) > +notmuch_database_open (notmuch_database_t *notmuch, const char *path, > + notmuch_database_mode_t mode) > > +/* Initialize a new, empty database handle. > + * I wondered about making the new documentation adhere to doxygen? > + if (notmuch_database_open (notmuch, > + notmuch_config_get_database_path (config), > + NOTMUCH_DATABASE_MODE_READ_ONLY)) Would it make any sense to migrate the mode argument to an option setting while we're messing with the API?