return stmt;
}
-void LocalDb::Open(const char *path, const char *snapshot_name)
+void LocalDb::Open(const char *path, const char *snapshot_name,
+ const char *snapshot_scheme)
{
int rc;
/* Insert this snapshot into the database, and determine the integer key
* which will be used to identify it. */
- sqlite3_stmt *stmt = Prepare("insert into snapshots(name, timestamp) "
- "values (?, julianday('now'))");
+ sqlite3_stmt *stmt = Prepare("insert into "
+ "snapshots(name, scheme, timestamp) "
+ "values (?, ?, julianday('now'))");
sqlite3_bind_text(stmt, 1, snapshot_name, strlen(snapshot_name),
SQLITE_TRANSIENT);
+ if (snapshot_scheme == NULL)
+ sqlite3_bind_null(stmt, 2);
+ else
+ sqlite3_bind_text(stmt, 2, snapshot_scheme, strlen(snapshot_scheme),
+ SQLITE_TRANSIENT);
rc = sqlite3_step(stmt);
if (rc != SQLITE_DONE) {
" --filter-extension=EXT\n"
" string to append to segment files\n"
" (defaults to \".bz2\")\n"
- " --name=NAME optional name for this snapshot\n",
+ " --scheme=NAME optional name for this snapshot\n",
program
);
}
string backup_source = ".";
string backup_dest = "";
string localdb_dir = "";
- string backup_name = "";
+ string backup_scheme = "";
while (1) {
static struct option long_options[] = {
{"filter", 1, 0, 0}, // 2
{"filter-extension", 1, 0, 0}, // 3
{"dest", 1, 0, 0}, // 4
- {"name", 1, 0, 0}, // 5
+ {"scheme", 1, 0, 0}, // 5
{NULL, 0, 0, 0},
};
case 4: // --dest
backup_dest = optarg;
break;
- case 5: // --name
- backup_name = optarg;
+ case 5: // --scheme
+ backup_scheme = optarg;
break;
default:
fprintf(stderr, "Unhandled long option!\n");
* snapshot. */
string database_path = localdb_dir + "/localdb.sqlite";
db = new LocalDb;
- db->Open(database_path.c_str(), desc_buf);
+ db->Open(database_path.c_str(), desc_buf,
+ backup_scheme.size() ? backup_scheme.c_str() : NULL);
/* Initialize the stat cache, for skipping over unchanged files. */
statcache = new StatCache;
* where to start to restore this snapshot. The filename is based on the
* current time. */
string desc_filename = backup_dest + "/snapshot-";
- if (backup_name.size() > 0)
- desc_filename += backup_name + "-";
+ if (backup_scheme.size() > 0)
+ desc_filename += backup_scheme + "-";
desc_filename = desc_filename + desc_buf + ".lbs";
std::ofstream descriptor(desc_filename.c_str());
descriptor << "Producer: LBS " << lbs_version << "\n";
strftime(desc_buf, sizeof(desc_buf), "%Y-%m-%d %H:%M:%S %z", &time_buf);
descriptor << "Date: " << desc_buf << "\n";
- if (backup_name.size() > 0)
- descriptor << "Name: " << backup_name << "\n";
+ if (backup_scheme.size() > 0)
+ descriptor << "Scheme: " << backup_scheme << "\n";
descriptor << "Root: " << backup_root << "\n";
descriptor << "Segments:\n";