diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2019-10-27 22:33:11 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2019-10-27 23:10:41 (GMT) | 
| commit | 609c184c3edb350a0da7fe29bf449a7189080c92 (patch) | |
| tree | 4ddd6320ee58a6169cad377f9889a08298fbec47 /src/common/sqlite.c | |
| parent | d0547bc36bd6ccb84eff128fc6e4f2df034a705a (diff) | |
Implemented snapshot related management features.
Diffstat (limited to 'src/common/sqlite.c')
| -rw-r--r-- | src/common/sqlite.c | 60 | 
1 files changed, 60 insertions, 0 deletions
| diff --git a/src/common/sqlite.c b/src/common/sqlite.c index 3a94623..41f99ac 100644 --- a/src/common/sqlite.c +++ b/src/common/sqlite.c @@ -583,3 +583,63 @@ bool update_db_values(sqlite3 *db, const char *table, const bound_value *values,      return result;  } + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : db       = base de données à sauvegarder.                    * +*                filename = fichier de destination pour la sauvegarde.        * +*                                                                             * +*  Description : Effectue une copie d'une base de données en cours d'usage.   * +*                                                                             * +*  Retour      : Bilan de l'exécution de l'opération.                         * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +bool backup_db(sqlite3 *db, const char *filename) +{ +    bool result;                            /* Conclusion à faire remonter */ +    sqlite3 *copy;                          /* Copie de la base de données */ +    int ret;                                /* Bilan d'un appel à SQLite   */ +    sqlite3_backup *backup;                 /* Gestionnaire de sauvegarde  */ + +    /** +     * Cf. https://www.sqlite.org/backup.html +     */ + +    ret = sqlite3_open(filename, ©); + +    if (ret != SQLITE_OK) +    { +        if (copy != NULL) +            sqlite3_close(copy); + +        result = false; + +        goto exit; + +    } + +    backup = sqlite3_backup_init(copy, "main", db, "main"); + +    if (backup == NULL) +        result = false; + +    else +    { +        sqlite3_backup_step(backup, -1); +        sqlite3_backup_finish(backup); + +        ret = sqlite3_errcode(copy); + +        result = (ret == SQLITE_OK); + +    } + + exit: + +    return result; + +} | 
