diff options
author | EuAndreh <eu@euandre.org> | 2024-08-12 15:42:56 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-08-12 15:52:16 -0300 |
commit | 6bbc33b9e998af7ee45cca86e1290474603dff48 (patch) | |
tree | 5d0aff47783bc20dcf3f7862afdba0445e4c2fae /backup.go | |
parent | Add Makefile and build skeleton (diff) | |
download | golite-6bbc33b9e998af7ee45cca86e1290474603dff48.tar.gz golite-6bbc33b9e998af7ee45cca86e1290474603dff48.tar.xz |
Build with "go tool" and hackishly bundle code from same package into one file each
Diffstat (limited to 'backup.go')
-rw-r--r-- | backup.go | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/backup.go b/backup.go deleted file mode 100644 index ecbb469..0000000 --- a/backup.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (C) 2019 Yasuhiro Matsumoto <mattn.jp@gmail.com>. -// -// Use of this source code is governed by an MIT-style -// license that can be found in the LICENSE file. - -package sqlite3 - -/* -#ifndef USE_LIBSQLITE3 -#include "sqlite3-binding.h" -#else -#include <sqlite3.h> -#endif -#include <stdlib.h> -*/ -import "C" -import ( - "runtime" - "unsafe" -) - -// SQLiteBackup implement interface of Backup. -type SQLiteBackup struct { - b *C.sqlite3_backup -} - -// Backup make backup from src to dest. -func (destConn *SQLiteConn) Backup(dest string, srcConn *SQLiteConn, src string) (*SQLiteBackup, error) { - destptr := C.CString(dest) - defer C.free(unsafe.Pointer(destptr)) - srcptr := C.CString(src) - defer C.free(unsafe.Pointer(srcptr)) - - if b := C.sqlite3_backup_init(destConn.db, destptr, srcConn.db, srcptr); b != nil { - bb := &SQLiteBackup{b: b} - runtime.SetFinalizer(bb, (*SQLiteBackup).Finish) - return bb, nil - } - return nil, destConn.lastError() -} - -// Step to backs up for one step. Calls the underlying `sqlite3_backup_step` -// function. This function returns a boolean indicating if the backup is done -// and an error signalling any other error. Done is returned if the underlying -// C function returns SQLITE_DONE (Code 101) -func (b *SQLiteBackup) Step(p int) (bool, error) { - ret := C.sqlite3_backup_step(b.b, C.int(p)) - if ret == C.SQLITE_DONE { - return true, nil - } else if ret != 0 && ret != C.SQLITE_LOCKED && ret != C.SQLITE_BUSY { - return false, Error{Code: ErrNo(ret)} - } - return false, nil -} - -// Remaining return whether have the rest for backup. -func (b *SQLiteBackup) Remaining() int { - return int(C.sqlite3_backup_remaining(b.b)) -} - -// PageCount return count of pages. -func (b *SQLiteBackup) PageCount() int { - return int(C.sqlite3_backup_pagecount(b.b)) -} - -// Finish close backup. -func (b *SQLiteBackup) Finish() error { - return b.Close() -} - -// Close close backup. -func (b *SQLiteBackup) Close() error { - ret := C.sqlite3_backup_finish(b.b) - - // sqlite3_backup_finish() never fails, it just returns the - // error code from previous operations, so clean up before - // checking and returning an error - b.b = nil - runtime.SetFinalizer(b, nil) - - if ret != 0 { - return Error{Code: ErrNo(ret)} - } - return nil -} |