Revision: 70423 http://trac.macports.org/changeset/70423 Author: and.damore@macports.org Date: 2010-08-09 03:28:49 -0700 (Mon, 09 Aug 2010) Log Message: ----------- working md5 storage, code is full of DBG printf() Modified Paths: -------------- branches/gsoc10-configfiles/base/src/cregistry/entry.c branches/gsoc10-configfiles/base/src/port1.0/portinstall.tcl branches/gsoc10-configfiles/base/src/registry2.0/entryobj.c Modified: branches/gsoc10-configfiles/base/src/cregistry/entry.c =================================================================== --- branches/gsoc10-configfiles/base/src/cregistry/entry.c 2010-08-09 09:16:39 UTC (rev 70422) +++ branches/gsoc10-configfiles/base/src/cregistry/entry.c 2010-08-09 10:28:49 UTC (rev 70423) @@ -872,26 +872,39 @@ * @param [out] errPtr on error, a description of the error that occurred * @return true if success; false if failure */ -int reg_entry_map_with_md5(reg_entry* entry, char** files, char** md5sums, int arg_count, - reg_error* errPtr) { +int reg_entry_map_with_md5(reg_entry* entry, char** files, char** md5sums, + int arg_count, reg_error* errPtr) { reg_registry* reg = entry->reg; int result = 1; sqlite3_stmt* stmt = NULL; - char* insert = "INSERT INTO registry.files (id, path, mtime, active, md5sum) " - "VALUES (?, ?, 0, 0, ?)"; - /* sqlite3_prepare() is documented as legacy, http://www.sqlite.org/c3ref/step.html - use sqlite3_prepare_v2() should be used instead */ + char* insert = "INSERT INTO registry.files " + "(id, path, mtime, active, md5sum) VALUES (?, ?, 0, 0, ?)"; + + printf("GSOCDBG: \tentered reg_entry_map_with_md5\n"); + printf("GSOCDBG: \t\targ_count:%d\n",arg_count); + /* sqlite3_prepare() is documented as legacy, + cf. http://www.sqlite.org/c3ref/step.html + sqlite3_prepare_v2() should be used instead */ if ((sqlite3_prepare(reg->db, insert, -1, &stmt, NULL) == SQLITE_OK) && (sqlite3_bind_int64(stmt, 1, entry->id) == SQLITE_OK)) { int i; - for (i=0; i<(arg_count/2) && result; i++) { + printf("GSOCDBG: \tlet's print files[] and md5sums[]\n"); + for (i=0; i<arg_count; i++) { + printf("GSOCDBG: \t\tfiles[%d]:\"%s\"\n",i,files[i]); + printf("GSOCDBG: \t\tmd5sums[%d]:\"%s\"\n",i,md5sums[i]); + } + printf("GSOCDBG: \t\tentering the for loop\n"); + for (i=0; (i<arg_count) && result; i++) { + printf("GSOCDBG: \t\tloop iteration:%d\n",i); /* cycles through files[] array of strings, the if argument parse a file from the array and put in into the SQL statement */ if (sqlite3_bind_text(stmt, 2, files[i], -1, SQLITE_STATIC) == SQLITE_OK) { + printf("GSOCDBG: \t\t\tinside first if branch\n"); if (sqlite3_bind_text(stmt, 3, md5sums[i], -1, SQLITE_STATIC) == SQLITE_OK) { + printf("GSOCDBG: \t\t\tinside second if branch\n"); int r; do { r = sqlite3_step(stmt); @@ -917,6 +930,7 @@ reg_sqlite_error(reg->db, errPtr, insert); result = 0; } + printf("GSOCDBG: \texiting reg_entry_map_with_md5\n"); if (stmt) { sqlite3_finalize(stmt); } Modified: branches/gsoc10-configfiles/base/src/port1.0/portinstall.tcl =================================================================== --- branches/gsoc10-configfiles/base/src/port1.0/portinstall.tcl 2010-08-09 09:16:39 UTC (rev 70422) +++ branches/gsoc10-configfiles/base/src/port1.0/portinstall.tcl 2010-08-09 10:28:49 UTC (rev 70423) @@ -198,7 +198,16 @@ if {[info exists installPlist]} { # register files - $regref map_with_md5 $installPlist + set installPlistWithMD5 [list] + foreach file $installPlist { + lappend installPlistWithMD5 $file + if {[catch {md5 file "$imagedir$file"} md5sum] == 0} { + lappend installPlistWithMD5 $md5sum + } + } + #puts "installPlist:$installPlist" + puts "installPlistWithMD5:$installPlistWithMD5" + $regref map_with_md5 "$installPlistWithMD5" } # store portfile Modified: branches/gsoc10-configfiles/base/src/registry2.0/entryobj.c =================================================================== --- branches/gsoc10-configfiles/base/src/registry2.0/entryobj.c 2010-08-09 09:16:39 UTC (rev 70422) +++ branches/gsoc10-configfiles/base/src/registry2.0/entryobj.c 2010-08-09 10:28:49 UTC (rev 70423) @@ -159,7 +159,7 @@ static int entry_obj_filemap_with_md5(Tcl_Interp* interp, reg_entry* entry, int objc, Tcl_Obj* CONST objv[]) { reg_registry* reg = registry_for(interp, reg_attached); - printf("GSOCDBG: we're into entry_obj_filemap_with_md5\n"); + printf("GSOCDBG: entering entry_obj_filemap_with_md5\n"); if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "map {file md5checksum}-list"); return TCL_ERROR; @@ -174,33 +174,46 @@ int listc; int result = TCL_ERROR; int i; + int list_counter; if (Tcl_ListObjGetElements(interp, objv[2], &listc, &listv) != TCL_OK) { return TCL_ERROR; } - files=malloc(listc*sizeof(char *)); - md5sums=malloc(listc*sizeof(char*)); + + printf("GSOCDBG: size of list %d\n", listc); /* remember to add check for malloc return values */ - for (i = 0; i < listc; i++) { + files=malloc((listc/2)*sizeof(char *)); + md5sums=malloc((listc/2)*sizeof(char*)); + + printf("GSOCDBG: for loop\n"); + /* fill in files[] and md5sums[] */ + for (i=0; i<listc; i+=2) { + list_counter=i/2; + /*if (Tcl_ListObjLength(interp, listv[i], &length) != TCL_OK) { + free(files); free(md5sums); return TCL_ERROR; } */ + printf("GSOCDBG: \titem %d\n", list_counter); + element=NULL; if (Tcl_ListObjIndex(interp, listv[i], 0, &element) != TCL_OK) { free(files); free(md5sums); return TCL_ERROR; } - else if(element != NULL) - files[i] = Tcl_GetString(element); + else if (element == NULL) { + Tcl_SetErrorCode(interp, "illegal input", NULL); return TCL_ERROR; } else { + files[list_counter] = Tcl_GetString(element); + printf("GSOCDBG: \t\tfiles[%d]=\"%s\"\n", list_counter, files[list_counter]); } + element=NULL; + if (Tcl_ListObjIndex(interp, listv[i+1], 0, &element) != TCL_OK) { + free(files); free(md5sums); return TCL_ERROR; } + else if (element == NULL) { Tcl_SetErrorCode(interp, "illegal input", NULL); return TCL_ERROR; } - - if (Tcl_ListObjIndex(interp, listv[i], 1, &element) != TCL_OK) { - free(files); free(md5sums); return TCL_ERROR; } - else if(element != NULL) - md5sums[i] = Tcl_GetString(element); else { - Tcl_SetErrorCode(interp, "illegal input", NULL); return TCL_ERROR; } + md5sums[list_counter] = Tcl_GetString(element); + printf("GSOCDBG: \t\tmd5sums[%d]=\"%s\"\n", list_counter, md5sums[list_counter]); } } /* change the condition, */ /* it used to be list_obj_to_string() but now we're filling arrays by hand */ if ( 1 ) { - if (reg_entry_map_with_md5(entry, files, md5sums, listc, &error)) { + if (reg_entry_map_with_md5(entry, files, md5sums, listc/2, &error)) { result = TCL_OK; } else { result = registry_failed(interp, &error); @@ -214,6 +227,7 @@ result = registry_failed(interp, &error); } */ + printf("GSOCDBG: exiting entry_obj_filemap_with_md5\n"); return result; } } @@ -469,6 +483,7 @@ int entry_obj_cmd(ClientData clientData, Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) { int cmd_index; + int len=0; if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "cmd ?arg ...?"); return TCL_ERROR;