lib: Perform the same transformation to _notmuch_database_filename_to_direntry

Now _notmuch_database_filename_to_direntry takes a flags argument and
can indicate if the necessary directory documents do not exist.
Again, callers have been updated, but retain their original behavior.
This commit is contained in:
Austin Clements 2012-05-18 00:13:36 -04:00 committed by David Bremner
parent 0c950146a1
commit 67ae2377a9
3 changed files with 16 additions and 11 deletions

View file

@ -1248,13 +1248,16 @@ _notmuch_database_get_directory_path (void *ctx,
* database path), return a new string (with 'ctx' as the talloc
* owner) suitable for use as a direntry term value.
*
* The necessary directory documents will be created in the database
* as needed.
* If (flags & NOTMUCH_FIND_CREATE), the necessary directory documents
* will be created in the database as needed. Otherwise, if the
* necessary directory documents do not exist, this sets
* *direntry to NULL and returns NOTMUCH_STATUS_SUCCESS.
*/
notmuch_status_t
_notmuch_database_filename_to_direntry (void *ctx,
notmuch_database_t *notmuch,
const char *filename,
notmuch_find_flags_t flags,
char **direntry)
{
const char *relative, *directory, *basename;
@ -1268,10 +1271,12 @@ _notmuch_database_filename_to_direntry (void *ctx,
if (status)
return status;
status = _notmuch_database_find_directory_id (notmuch, directory, NOTMUCH_FIND_CREATE,
status = _notmuch_database_find_directory_id (notmuch, directory, flags,
&directory_id);
if (status)
if (status || directory_id == (unsigned int)-1) {
*direntry = NULL;
return status;
}
*direntry = talloc_asprintf (ctx, "%u:%s", directory_id, basename);
@ -1892,8 +1897,8 @@ notmuch_database_find_message_by_filename (notmuch_database_t *notmuch,
local = talloc_new (notmuch);
try {
status = _notmuch_database_filename_to_direntry (local, notmuch,
filename, &direntry);
status = _notmuch_database_filename_to_direntry (
local, notmuch, filename, NOTMUCH_FIND_CREATE, &direntry);
if (status)
goto DONE;

View file

@ -495,9 +495,8 @@ _notmuch_message_add_filename (notmuch_message_t *message,
if (status)
return status;
status = _notmuch_database_filename_to_direntry (local,
message->notmuch,
filename, &direntry);
status = _notmuch_database_filename_to_direntry (
local, message->notmuch, filename, NOTMUCH_FIND_CREATE, &direntry);
if (status)
return status;
@ -541,8 +540,8 @@ _notmuch_message_remove_filename (notmuch_message_t *message,
notmuch_status_t status;
Xapian::TermIterator i, last;
status = _notmuch_database_filename_to_direntry (local, message->notmuch,
filename, &direntry);
status = _notmuch_database_filename_to_direntry (
local, message->notmuch, filename, NOTMUCH_FIND_CREATE, &direntry);
if (status)
return status;

View file

@ -207,6 +207,7 @@ notmuch_status_t
_notmuch_database_filename_to_direntry (void *ctx,
notmuch_database_t *notmuch,
const char *filename,
notmuch_find_flags_t flags,
char **direntry);
/* directory.cc */