mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +01:00
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:
parent
f69314fbd3
commit
0c950146a1
3 changed files with 19 additions and 4 deletions
|
@ -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;
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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 *
|
||||||
|
|
Loading…
Reference in a new issue