The extra path component added by the lib is a magic value that the
caller just has to know. This is demonstrated by the current code,
which indeed has "xapian.old" both sides of the interface. Use the
backup path provided by the lib caller verbatim, without adding
anything to it.
{
void *local;
char *notmuch_path, *xapian_path, *compact_xapian_path;
{
void *local;
char *notmuch_path, *xapian_path, *compact_xapian_path;
- char *old_xapian_path = NULL;
notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS;
notmuch_database_t *notmuch = NULL;
struct stat statbuf;
notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS;
notmuch_database_t *notmuch = NULL;
struct stat statbuf;
}
if (backup_path != NULL) {
}
if (backup_path != NULL) {
- if (! (old_xapian_path = talloc_asprintf (local, "%s/xapian.old", backup_path))) {
- ret = NOTMUCH_STATUS_OUT_OF_MEMORY;
- goto DONE;
- }
-
- if (stat(old_xapian_path, &statbuf) != -1) {
- fprintf (stderr, "Backup path already exists: %s\n", old_xapian_path);
+ if (stat(backup_path, &statbuf) != -1) {
+ fprintf (stderr, "Backup path already exists: %s\n", backup_path);
ret = NOTMUCH_STATUS_FILE_ERROR;
goto DONE;
}
ret = NOTMUCH_STATUS_FILE_ERROR;
goto DONE;
}
- if (old_xapian_path != NULL) {
- if (rename(xapian_path, old_xapian_path)) {
+ if (backup_path) {
+ if (rename(xapian_path, backup_path)) {
fprintf (stderr, "Error moving old database out of the way\n");
ret = NOTMUCH_STATUS_FILE_ERROR;
goto DONE;
fprintf (stderr, "Error moving old database out of the way\n");
ret = NOTMUCH_STATUS_FILE_ERROR;
goto DONE;
unused (char *argv[]))
{
const char *path = notmuch_config_get_database_path (config);
unused (char *argv[]))
{
const char *path = notmuch_config_get_database_path (config);
- const char *backup_path = path;
+ const char *backup_path;
+ backup_path = talloc_asprintf (config, "%s/xapian.old", path);
+ if (! backup_path)
+ return 1;
+
printf ("Compacting database...\n");
ret = notmuch_database_compact (path, backup_path, status_update_cb, NULL);
if (ret) {
printf ("Compacting database...\n");
ret = notmuch_database_compact (path, backup_path, status_update_cb, NULL);
if (ret) {
} else {
printf ("\n");
printf ("\n");
} else {
printf ("\n");
printf ("\n");
- printf ("The old database has been moved to %s/xapian.old", backup_path);
+ printf ("The old database has been moved to %s", backup_path);
printf ("\n");
printf ("To delete run,\n");
printf ("\n");
printf ("\n");
printf ("To delete run,\n");
printf ("\n");
- printf (" rm -R %s/xapian.old\n", backup_path);
+ printf (" rm -R %s\n", backup_path);