lib: Perform the same transformation to _notmuch_database_find_directory_id

Now _notmuch_database_find_directory_id takes a flags argument, which
it passes through to _notmuch_directory_create and can indicate if the
directory does not exist.  Again, callers have been updated, but
retain their original behavior.
This commit is contained in:
Austin Clements 2012-05-18 00:13:35 -04:00 committed by David Bremner
parent f69314fbd3
commit 0c950146a1
3 changed files with 19 additions and 4 deletions

View file

@ -1197,9 +1197,17 @@ _notmuch_database_split_path (void *ctx,
return NOTMUCH_STATUS_SUCCESS; return NOTMUCH_STATUS_SUCCESS;
} }
/* Find the document ID of the specified directory.
*
* If (flags & NOTMUCH_FIND_CREATE), a new directory document will be
* created if one does not exist for 'path'. Otherwise, if the
* directory document does not exist, this sets *directory_id to
* ((unsigned int)-1) and returns NOTMUCH_STATUS_SUCCESS.
*/
notmuch_status_t notmuch_status_t
_notmuch_database_find_directory_id (notmuch_database_t *notmuch, _notmuch_database_find_directory_id (notmuch_database_t *notmuch,
const char *path, const char *path,
notmuch_find_flags_t flags,
unsigned int *directory_id) unsigned int *directory_id)
{ {
notmuch_directory_t *directory; notmuch_directory_t *directory;
@ -1210,8 +1218,8 @@ _notmuch_database_find_directory_id (notmuch_database_t *notmuch,
return NOTMUCH_STATUS_SUCCESS; return NOTMUCH_STATUS_SUCCESS;
} }
directory = _notmuch_directory_create (notmuch, path, NOTMUCH_FIND_CREATE, &status); directory = _notmuch_directory_create (notmuch, path, flags, &status);
if (status) { if (status || !directory) {
*directory_id = -1; *directory_id = -1;
return status; return status;
} }
@ -1260,7 +1268,7 @@ _notmuch_database_filename_to_direntry (void *ctx,
if (status) if (status)
return status; return status;
status = _notmuch_database_find_directory_id (notmuch, directory, status = _notmuch_database_find_directory_id (notmuch, directory, NOTMUCH_FIND_CREATE,
&directory_id); &directory_id);
if (status) if (status)
return status; return status;

View file

@ -153,7 +153,13 @@ _notmuch_directory_create (notmuch_database_t *notmuch,
_notmuch_database_split_path (local, path, &parent, &basename); _notmuch_database_split_path (local, path, &parent, &basename);
_notmuch_database_find_directory_id (notmuch, parent, &parent_id); *status_ret = _notmuch_database_find_directory_id (
notmuch, parent, NOTMUCH_FIND_CREATE, &parent_id);
if (*status_ret) {
notmuch_directory_destroy (directory);
directory = NULL;
goto DONE;
}
if (basename) { if (basename) {
term = talloc_asprintf (local, "%s%u:%s", term = talloc_asprintf (local, "%s%u:%s",

View file

@ -195,6 +195,7 @@ _notmuch_database_find_unique_doc_id (notmuch_database_t *notmuch,
notmuch_status_t notmuch_status_t
_notmuch_database_find_directory_id (notmuch_database_t *database, _notmuch_database_find_directory_id (notmuch_database_t *database,
const char *path, const char *path,
notmuch_find_flags_t flags,
unsigned int *directory_id); unsigned int *directory_id);
const char * const char *