<pre style='margin:0'>
Umesh Singla (umeshksingla) pushed a commit to branch gsoc17-migrate
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/4bb5dcb94d4ceb043c2389f8c6a6e9b8b6ce1179">https://github.com/macports/macports-base/commit/4bb5dcb94d4ceb043c2389f8c6a6e9b8b6ce1179</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 4bb5dcb94d4ceb043c2389f8c6a6e9b8b6ce1179
</span>Author: Umesh Singla <umeshksingla@macports.org>
AuthorDate: Sun Aug 20 03:50:36 2017 +0530
<span style='display:block; white-space:pre;color:#404040;'> WIP: debugging migrate fetch functions
</span>---
src/cregistry/snapshot.c | 121 +++++++++++++++++++++++-------------------
src/cregistry/snapshot.h | 6 +--
src/macports1.0/migrate.tcl | 6 ++-
src/macports1.0/snapshot.tcl | 16 ++++--
src/registry2.0/snapshot.c | 48 ++++++++---------
src/registry2.0/snapshotobj.c | 31 +++++++----
src/registry2.0/util.c | 24 +++++++++
7 files changed, 153 insertions(+), 99 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/snapshot.c b/src/cregistry/snapshot.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 9b3f717..96f4de9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/snapshot.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/snapshot.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -84,7 +84,7 @@ reg_snapshot* reg_snapshot_create(reg_registry* reg, char* note, reg_error* errP
</span> r = sqlite3_step(stmt);
switch (r) {
case SQLITE_DONE:
<span style='display:block; white-space:pre;background:#ffe0e0;'>- snapshot = malloc(sizeof(reg_snapshot));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ snapshot = (reg_snapshot*)malloc(sizeof(reg_snapshot));
</span> if (snapshot) {
snapshot->id = sqlite3_last_insert_rowid(reg->db);
snapshot->reg = reg;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -161,7 +161,7 @@ int snapshot_store_ports(reg_registry* reg, reg_snapshot* snapshot, reg_error* e
</span> switch (r) {
case SQLITE_DONE:
// store variants for entries[i]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- entry = malloc(sizeof(reg_entry));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ entry = (reg_entry*)malloc(sizeof(reg_entry));
</span> if (entry) {
entry->id = sqlite3_last_insert_rowid(reg->db);
entry->reg = reg;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -283,19 +283,10 @@ int snapshot_store_port_variants(reg_registry* reg, reg_entry* port_entry,
</span> return result;
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-char* reg_snapshot_get_id(reg_registry* reg, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- //printf("inside cregistry get snapshot..\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- //sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- //reg_entry* entry = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- char* query = "SELECT id FROM registry.snapshots ORDER BY id DESC LIMIT 1";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return query;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int reg_snapshot_get(reg_registry* reg, sqlite_int64 id, reg_snapshot* snapshot, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr) {
</span>
printf("inside cregistry get snapshot..\n");
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reg_registry* reg = snapshot->reg;
</span> sqlite3_stmt* stmt = NULL;
char* query = "SELECT * FROM registry.snapshot_ports WHERE snapshots_id=?";
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -304,9 +295,9 @@ int reg_snapshot_get(reg_registry* reg, sqlite_int64 id, reg_snapshot* snapshot,
</span> const char* state;
if ((sqlite3_prepare_v2(reg->db, query, -1, &stmt, NULL) == SQLITE_OK)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- && (sqlite3_bind_int64(stmt, 1, id) == SQLITE_OK )) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && (sqlite3_bind_int64(stmt, 1, snapshot->id) == SQLITE_OK )) {
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port** result = malloc(10 * sizeof(port*));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port** result = (port**)malloc(10 * sizeof(port*));
</span>
if (!result) {
return -1;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -316,6 +307,9 @@ int reg_snapshot_get(reg_registry* reg, sqlite_int64 id, reg_snapshot* snapshot,
</span> int result_space = 10;
int r;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ int variant_space = 10;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant** variants;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> sqlite_int64 snapshot_port_id;
int requested;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -329,30 +323,43 @@ int reg_snapshot_get(reg_registry* reg, sqlite_int64 id, reg_snapshot* snapshot,
</span> requested = (int) sqlite3_column_int64(stmt, 3);
state = (const char*) sqlite3_column_text(stmt, 4);
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port* current_port;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- current_port = (port*) malloc(sizeof(port*));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port* current_port = (port*) malloc(sizeof(port));
</span> if (!current_port) {
return -1;
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> current_port->name = port_name;
current_port->requested = requested;
current_port->state = state;
current_port->variants = NULL;
// get variants for the current port using its id
<span style='display:block; white-space:pre;background:#ffe0e0;'>- variant* variants;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int variant_count = reg_snapshot_port_variants_get(reg, snapshot_port_id, &variants, errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("\ncurrently on:: %s\n", port_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //variant* variants;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variants = (variant**) malloc(variant_space * sizeof(variant*));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if (!variants) {
return -1;
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ int variant_count = reg_snapshot_port_variants_get(reg, snapshot_port_id, &variants, errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if (variant_count > 0) {
current_port->variants = variants;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("v n a m e: %s\n", variants[0]->variant_name);
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ // result[result_count++] = current_port;
</span>
if (!reg_listcat((void***)&result, &result_count, &result_space, current_port)) {
r = SQLITE_ERROR;
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i=0; i < variant_count; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free(variants[i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free(variants);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variants = NULL;
</span> break;
case SQLITE_DONE:
break;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -367,18 +374,12 @@ int reg_snapshot_get(reg_registry* reg, sqlite_int64 id, reg_snapshot* snapshot,
</span> sqlite3_finalize(stmt);
if (r == SQLITE_DONE) {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("... reached here ...\n");
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_snapshot* s = malloc(sizeof(reg_snapshot*));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!s) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- s->id = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- s->note = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- s->proc = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- s->ports = *result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *snapshot = *s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *ports = result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //printf("size of ' %s ' \n", (const char*) result[0]->name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("size of ' %d' \n", (*(*ports + 0))->requested);
</span>
return result_count;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -398,7 +399,7 @@ int reg_snapshot_get(reg_registry* reg, sqlite_int64 id, reg_snapshot* snapshot,
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-int reg_snapshot_port_variants_get(reg_registry* reg, sqlite_int64 snapshot_port_id, variant** variants, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_snapshot_port_variants_get(reg_registry* reg, sqlite_int64 snapshot_port_id, variant*** variants, reg_error* errPtr) {
</span>
printf("inside getting variants\n");
sqlite3_stmt* stmt = NULL;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -408,16 +409,15 @@ int reg_snapshot_port_variants_get(reg_registry* reg, sqlite_int64 snapshot_port
</span> if ((sqlite3_prepare_v2(reg->db, query, -1, &stmt, NULL) == SQLITE_OK)
&& (sqlite3_bind_int64(stmt, 1, snapshot_port_id) == SQLITE_OK )) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- variant* result = malloc(10 * sizeof(variant));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int result_count = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int result_space = 10;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int r;
</span>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant** result = (variant**)malloc(result_space * sizeof(variant*));
</span> if (!result) {
return -1;
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- int result_count = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int result_space = 10;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int r;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> const char* variant_name;
const char* variant_sign;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -426,10 +426,14 @@ int reg_snapshot_port_variants_get(reg_registry* reg, sqlite_int64 snapshot_port
</span> switch (r) {
case SQLITE_ROW:
<span style='display:block; white-space:pre;background:#ffe0e0;'>- variant_name = sqlite3_column_text(stmt, 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- variant_sign = sqlite3_column_text(stmt, 3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("getting the variant\n");
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- variant* element = malloc(10 * sizeof(variant));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant_name = (const char*) sqlite3_column_text(stmt, 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("vname: %s\n", variant_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant_sign = (const char*) sqlite3_column_text(stmt, 3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("vsign: %s\n", variant_sign);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant* element = (variant*)malloc(sizeof(variant));
</span>
if (!element) {
return -1;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -451,20 +455,27 @@ int reg_snapshot_port_variants_get(reg_registry* reg, sqlite_int64 snapshot_port
</span> }
} while (r == SQLITE_ROW || r == SQLITE_BUSY);
<span style='display:block; white-space:pre;background:#ffe0e0;'>- sqlite3_finalize(stmt);
</span> if (r == SQLITE_DONE) {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("eveyrhitn done 1\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("varint rc: %d\n", result_count);
</span> *variants = result;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ // if (result_count > 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // variant v = *(variants + result_count - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // printf("s v: %zu\n", sizeof(v));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // printf("v n-a m e: %s\n", v.variant_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("eveyrhitn done 2\n");
</span> return result_count;
} else {
int i;
for (i = 0; i < result_count; i++) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- free(result[i].variant_name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- free(result[i].variant_sign);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free((*(*variants + i))->variant_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free((*(*variants + i))->variant_sign);
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- free(result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free(variants);
</span> return -1;
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sqlite3_finalize(stmt);
</span> } else {
reg_sqlite_error(reg->db, errPtr, query);
if (stmt) {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -486,7 +497,7 @@ int reg_snapshot_port_variants_get(reg_registry* reg, sqlite_int64 snapshot_port
</span> * @return true if success; false if failure
*/
int reg_snapshot_propget(reg_snapshot* snapshot, char* key, char** value,
<span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reg_error* errPtr) {
</span> reg_registry* reg = snapshot->reg;
int result = 0;
sqlite3_stmt* stmt = NULL;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -544,13 +555,13 @@ int reg_snapshot_propget(reg_snapshot* snapshot, char* key, char** value,
</span> * @param [out] errPtr on error, a description of the error that occurred
* @return true if success; false if failure
*/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-int reg_snapshot_ports_get(reg_snapshot* snapshot, port** ports,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_registry* reg = snapshot->reg;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int result = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- char* query;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const char *text;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // TODO: get ports and their variants using snapshot->id as Fk
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// int reg_snapshot_ports_get(reg_snapshot* snapshot, port** ports,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// reg_registry* reg = snapshot->reg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// int result = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// char* query;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// const char *text;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// // TODO: get ports and their variants using snapshot->id as Fk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/snapshot.h b/src/cregistry/snapshot.h
</span><span style='display:block; white-space:pre;color:#808080;'>index a578162..48b5d9c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/snapshot.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/snapshot.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -62,11 +62,9 @@ int get_parsed_variants(char* variants_str, variant* all_variants,
</span>
reg_snapshot* reg_snapshot_create(reg_registry* reg, char* note,
reg_error* errPtr);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-char* reg_snapshot_get_id(reg_registry* reg, reg_error* errPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int reg_snapshot_get(reg_registry* reg, sqlite_int64 id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_snapshot* snapshot, reg_error* errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr);
</span> int reg_snapshot_port_variants_get(reg_registry* reg,
<span style='display:block; white-space:pre;background:#ffe0e0;'>- sqlite_int64 snapshot_port_id, variant** variants, reg_error* errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sqlite_int64 snapshot_port_id, variant*** variants, reg_error* errPtr);
</span>
int snapshot_store_ports(reg_registry* reg, reg_snapshot* snapshot,
reg_error* errPtr);
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/migrate.tcl b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 73a7311..73144fe 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -43,6 +43,9 @@ namespace eval migrate {
</span> # create a snapshot
set snapshot [snapshot::main $opts]
puts $snapshot
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [$snapshot note]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [$snapshot created_at]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [$snapshot ports]
</span> puts "here 2"
return 0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -94,10 +97,9 @@ namespace eval migrate {
</span>
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- proc fetch_latest_snapshot {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ proc fetch_snapshot_details {snapshot} {
</span>
return
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> }
proc port_dependencies {portName variantInfo} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/snapshot.tcl b/src/macports1.0/snapshot.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 1bda3e5..f9ef291 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/snapshot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/snapshot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -21,14 +21,24 @@ namespace eval snapshot {
</span> # registry::snapshot
#
# TODO:
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # use registry::write wrapper here itself
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # make it return some value
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # 1. use registry::write wrapper here itself
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>
puts "here 1-1"
puts "Still being developed"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set snapshot [registry::snapshot create "test snapshot"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ array set options $opts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # An option used by user while creating snapshot manually
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # to identify a snapshot, usually followed by `port restore`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists options(ports_snapshot_note)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set note ports_snapshot_note
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set note "snapshot created for migration"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set snapshot [registry::snapshot create $note]
</span>
return $snapshot
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/snapshot.c b/src/registry2.0/snapshot.c
</span><span style='display:block; white-space:pre;color:#808080;'>index ebf6680..bbeb56c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/snapshot.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/snapshot.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -93,31 +93,31 @@ static int create_snapshot(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[])
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-static int get_snapshot_by_id(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// static int get_snapshot_by_id(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) {
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- printf("getting snapshot\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// printf("getting snapshot\n");
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_registry* reg = registry_for(interp, reg_attached);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (objc > 3) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Tcl_WrongNumArgs(interp, 2, objv, "get_by_id ?snapshot_id?");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else if (reg == NULL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sqlite_int64 id = atoll(Tcl_GetString(objv[2]));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_error error;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reg_snapshot* snapshot = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int port_count = reg_snapshot_get(reg, id, snapshot, &error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (snapshot != NULL && port_count >= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Tcl_Obj* resultObj;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (snapshot_to_obj(interp, &resultObj, snapshot, NULL, &error)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Tcl_SetObjResult(interp, resultObj);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return registry_failed(interp, &error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// reg_registry* reg = registry_for(interp, reg_attached);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// if (objc > 3) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// Tcl_WrongNumArgs(interp, 2, objv, "get_by_id ?snapshot_id?");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// } else if (reg == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// sqlite_int64 id = atoll(Tcl_GetString(objv[2]));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// reg_error error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// reg_snapshot* snapshot = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// int port_count = reg_snapshot_get(snapshot, id, snapshot, &error);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// if (snapshot != NULL && port_count >= 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// Tcl_Obj* resultObj;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// if (snapshot_to_obj(interp, &resultObj, snapshot, NULL, &error)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// Tcl_SetObjResult(interp, resultObj);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return TCL_OK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return registry_failed(interp, &error);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span>
typedef struct {
char* name;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -127,7 +127,7 @@ typedef struct {
</span> static snapshot_cmd_type snapshot_cmds[] = {
/* Global commands */
{ "create", create_snapshot},
<span style='display:block; white-space:pre;background:#ffe0e0;'>- { "get_by_id", get_snapshot_by_id},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// { "get_by_id", get_snapshot_by_id},
</span> { NULL, NULL }
};
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/snapshotobj.c b/src/registry2.0/snapshotobj.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 7c931a4..24f6d00 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/snapshotobj.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/snapshotobj.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -94,22 +94,31 @@ static int snapshot_obj_ports(Tcl_Interp* interp, reg_snapshot* snapshot, int ob
</span> == TCL_OK) {
port** ports;
reg_error error;
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if (reg_snapshot_ports_get(snapshot, &ports, &error)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int port_count = reg_snapshot_get(snapshot, &ports, &error);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (port_count >= 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("ports fetched\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("port_count: %d\n", port_count);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //printf("size of ' %zu ' 0 \n", sizeof(ports[1]->name));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for(i=0; i < port_count; i++){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("in it - ");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf(".. %d .. \n ", ports[i]->requested);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("! %s ! \n", ports[i]->state);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return TCL_OK;
</span>
// TODO: correct the below for 'ports', added as a prototype for now
// Tcl_Obj** objs;
<span style='display:block; white-space:pre;background:#ffe0e0;'>- // int retval = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // if (list_entry_to_obj(interp, &objs, entries, entry_count, &error)){
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Tcl_Obj* result = Tcl_NewListObj(entry_count, objs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // if (list_snapshot_ports_to_obj(interp, &objs, ports, port_count, &error)){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Tcl_Obj* result = Tcl_NewObj(port_count, objs);
</span> // Tcl_SetObjResult(interp, result);
// free(objs);
<span style='display:block; white-space:pre;background:#ffe0e0;'>- // retval = TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // retval = registry_failed(interp, &error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- free(ports);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return TCL_OK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // return TCL_OK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // }
</span> }
return registry_failed(interp, &error);
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/util.c b/src/registry2.0/util.c
</span><span style='display:block; white-space:pre;color:#808080;'>index ba618d8..09210a4 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/util.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/util.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -344,6 +344,30 @@ int snapshot_to_obj(Tcl_Interp* interp, Tcl_Obj** obj, reg_snapshot* snapshot,
</span> return 1;
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+// int snapshot_port_to_obj(Tcl_Interp* interp, Tcl_Obj** obj, port* port,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// int* lower_bound, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// if (port->proc == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// char* name = unique_name(interp, "::registry::snapshot_port", lower_bound);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// if (!name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// if (!set_snapshot_port(interp, name, snapshot, errPtr)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// free(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// free(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// *obj = Tcl_NewStringObj(snapshot->proc, -1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// int list_snapshot_ports_to_obj(Tcl_Interp* interp, Tcl_Obj** obj, port** snapshot_ports,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// int snapshot_port_count, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// int lower_bound = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// return recast(interp, (cast_function*)snapshot_port_to_obj, &lower_bound, NULL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// (void***)objs, (void**)snapshot_ports, snapshot_port_count, errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> int file_to_obj(Tcl_Interp* interp, Tcl_Obj** obj, reg_file* file,
int* lower_bound, reg_error* errPtr) {
if (file->proc == NULL) {
</pre><pre style='margin:0'>
</pre>