<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch gsoc17-migrate
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/c3ffaa63774adba176ce9cdfb4d44ffa742304fd">https://github.com/macports/macports-base/commit/c3ffaa63774adba176ce9cdfb4d44ffa742304fd</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit c3ffaa63774adba176ce9cdfb4d44ffa742304fd
</span>Author: Umesh Singla <umeshksingla@macports.org>
AuthorDate: Sun Aug 20 04:22:47 2017 +0530

<span style='display:block; white-space:pre;color:#404040;'>    fix bugs in migrate fetch functions: over
</span>---
 src/cregistry/snapshot.c      | 82 +++++++------------------------------------
 src/cregistry/snapshot.h      | 10 +++---
 src/registry2.0/snapshotobj.c |  5 +--
 3 files changed, 19 insertions(+), 78 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 96f4de9..c9d9b26 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;'>@@ -283,7 +283,7 @@ int snapshot_store_port_variants(reg_registry* reg, reg_entry* port_entry,
</span>     return result;
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_snapshot_ports_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr) {
</span> 
     printf("inside cregistry get snapshot..\n");
     reg_registry* reg = snapshot->reg;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -307,7 +307,6 @@ int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr) {
</span>         int result_space = 10;
         int r;
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        int variant_space = 10;
</span>         variant** variants;
 
         sqlite_int64 snapshot_port_id;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -327,30 +326,19 @@ int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr) {
</span>                     if (!current_port) {
                         return -1;
                     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    current_port->name = port_name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    current_port->name = strdup(port_name);
</span>                     current_port->requested = requested;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    current_port->state = state;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    current_port->state = strdup(state);
</span>                     current_port->variants = NULL;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    // get variants for the current port using its id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    printf("\ncurrently on:: %s\n", port_name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    //variant* variants;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    variants = (variant**) malloc(variant_space * sizeof(variant*));
</span>                     
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                    variants = (variant**) malloc(sizeof(variant*));
</span>                     if (!variants) {
                         return -1;
                     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</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:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    int variant_count = reg_snapshot_ports_get_helper(reg, snapshot_port_id, &variants, errPtr);
</span>                     if (variant_count > 0) {
                         current_port->variants = variants;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        printf("v n a m e: %s\n", variants[0]->variant_name);
</span>                     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    // result[result_count++] = current_port;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>                     if (!reg_listcat((void***)&result, &result_count, &result_space, current_port)) {
                             r = SQLITE_ERROR;
                     }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -374,13 +362,7 @@ int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr) {
</span>         sqlite3_finalize(stmt);
 
         if (r == SQLITE_DONE) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            printf("... reached here ...\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>             *ports = result;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            //printf("size of ' %s ' \n", (const char*) result[0]->name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            printf("size of ' %d' \n", (*(*ports + 0))->requested);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>             return result_count;
 
         } else {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -399,9 +381,8 @@ int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr) {
</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_ports_get_helper(reg_registry* reg, sqlite_int64 snapshot_port_id, variant*** variants, reg_error* errPtr) {
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    printf("inside getting variants\n");
</span>     sqlite3_stmt* stmt = NULL;
 
     char* query = "SELECT * FROM registry.snapshot_port_variants WHERE snapshot_ports_id=?";
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -426,25 +407,19 @@ 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;'>-                    printf("getting the variant\n");
</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;'>+                    variant_sign = (const char*)sqlite3_column_text(stmt, 3);
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    variant_name = (const char*)  sqlite3_column_text(stmt, 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    printf("vname: %s\n", variant_name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    variant_sign = (const char*) sqlite3_column_text(stmt, 3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    printf("vsign: %s\n", variant_sign);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    
</span>                     variant* element = (variant*)malloc(sizeof(variant));
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>                     if (!element) {
                         return -1;
                     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    element->variant_name = variant_name;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    element->variant_sign = variant_sign;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    element->variant_name = strdup(variant_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    element->variant_sign = strdup(variant_sign);
</span>                     if (!reg_listcat((void***)&result, &result_count, &result_space, element)) {
                         r = SQLITE_ERROR;
                     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                    //free(element);
</span>                     break;
                 case SQLITE_DONE:
                 case SQLITE_BUSY:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -456,15 +431,7 @@ int reg_snapshot_port_variants_get(reg_registry* reg, sqlite_int64 snapshot_port
</span>         } while (r == SQLITE_ROW || r == SQLITE_BUSY);
 
         if (r == SQLITE_DONE) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            printf("eveyrhitn done 1\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            printf("varint rc: %d\n", result_count);
</span>             *variants = result;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            // if (result_count > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            //     variant v = *(variants + result_count - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            //     printf("s v: %zu\n", sizeof(v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            //     printf("v n-a m e: %s\n", v.variant_name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            // }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            printf("eveyrhitn done 2\n");
</span>             return result_count;
         } else {
             int i;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -521,7 +488,7 @@ int reg_snapshot_propget(reg_snapshot* snapshot, char* key, char** value,
</span>                     break;
                 case SQLITE_DONE:
                     errPtr->code = REG_INVALID;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    errPtr->description = "an invalid snapshot was passed";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    errPtr->description = "An invalid snapshot was passed";
</span>                     errPtr->free = NULL;
                     break;
                 case SQLITE_BUSY:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -540,28 +507,3 @@ int reg_snapshot_propget(reg_snapshot* snapshot, char* key, char** value,
</span>     sqlite3_free(query);
     return result;
 }
<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;'>- * Gets all the 'ports' of a snapshot. The property named must be one
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * that exists in the table and must not be one with internal meaning
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * such as `id` or `state`.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * A 'port' here is a row in registry.snapshot_ports table and its
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * corresponding variants in registry.snapshot_port_variants table
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * @param [in] snapshot   snapshot to get property from
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * @param [in] key        property to get
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * @param [out] value     the value of the property
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * @param [out] errPtr    on error, a description of the error that occurred
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * @return                true if success; false if failure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><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;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 48b5d9c..16cbe20 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;'>@@ -57,15 +57,12 @@ typedef struct {
</span>     char* proc; /* name of Tcl proc, if using Tcl */
 } reg_snapshot;
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> int get_parsed_variants(char* variants_str, variant* all_variants,
     char* delim, int* variant_count);
 
 reg_snapshot* reg_snapshot_create(reg_registry* reg, char* note,
         reg_error* errPtr);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-int reg_snapshot_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int reg_snapshot_port_variants_get(reg_registry* reg,
</span><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:#ffe0e0;'>-
</span> int snapshot_store_ports(reg_registry* reg, reg_snapshot* snapshot,
         reg_error* errPtr);
 int snapshot_store_port_variants(reg_registry* reg, reg_entry* port_entry,
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -73,7 +70,8 @@ int snapshot_store_port_variants(reg_registry* reg, reg_entry* port_entry,
</span> 
 int reg_snapshot_propget(reg_snapshot* snapshot, char* key, char** value,
         reg_error* errPtr);
<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:#e0ffe0;'>+int reg_snapshot_ports_get(reg_snapshot* snapshot, port*** ports, reg_error* errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_snapshot_ports_get_helper(reg_registry* reg,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        sqlite_int64 snapshot_port_id, variant*** variants, reg_error* errPtr);
</span> 
 #endif /* _CSNAPSHOT_H */
<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 24f6d00..371704b 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,7 +94,7 @@ 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;'>-            int port_count = reg_snapshot_get(snapshot, &ports, &error);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            int port_count = reg_snapshot_ports_get(snapshot, &ports, &error);
</span>             if (port_count >= 0) {
 
                 printf("ports fetched\n");
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -104,7 +104,8 @@ static int snapshot_obj_ports(Tcl_Interp* interp, reg_snapshot* snapshot, int ob
</span>                 int i;
                 for(i=0; i < port_count; i++){
                     printf("in it - ");
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    printf(".. %d ..  \n ", ports[i]->requested);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    printf("! %s ! ", ports[i]->name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    printf(".. %d ..  ", ports[i]->requested);
</span>                     printf("! %s ! \n", ports[i]->state);
                 }
 
</pre><pre style='margin:0'>

</pre>