X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2F_infotojson%2Finfotojson.c;h=e837ff4a6853077064148c4b3811cda05a225586;hp=f1493cba337cd5222c77c7fb882217e31e709e41;hb=2257c0acfd9c8f91d41e858272d289168b8eb965;hpb=338b91f5d9f391a29f43568872e4406438ff2af8 diff --git a/tools/_infotojson/infotojson.c b/tools/_infotojson/infotojson.c index f1493cba..e837ff4a 100644 --- a/tools/_infotojson/infotojson.c +++ b/tools/_infotojson/infotojson.c @@ -94,20 +94,23 @@ static int storejsontodb(const struct json *jsonobj, const char *db) struct db_query *q; handle = db_open(db); - query = talloc_asprintf(NULL, "SELECT module from search where module=\"%s\";", jsonobj->module); + query = talloc_asprintf(NULL, "SELECT module, author from search where module=\"%s\";", jsonobj->module); q = db_query(handle, query); desc = strjoin(NULL, jsonobj->desc,"\n"); strreplace(desc, '\'', ' '); depends = strjoin(NULL, jsonobj->depends,"\n"); - if (!q->num_rows) + if (q->num_rows && streq(jsonobj->author, q->rows[0][1])) + cmd = talloc_asprintf(NULL, "UPDATE search set author=\"%s\", title=\"%s\", desc=\'%s\' depends=\'%s\' where module=\"%s\";", + jsonobj->author, jsonobj->title, desc, depends, jsonobj->module); + else if (!q->num_rows) cmd = talloc_asprintf(NULL, "INSERT INTO search VALUES(\"%s\",\"%s\",\"%s\", \'%s\', \'%s\', 0);", jsonobj->module, jsonobj->author, jsonobj->title, depends, desc); else - cmd = talloc_asprintf(NULL, "UPDATE search set author=\"%s\", title=\"%s\", desc=\'%s\' depends=\'%s\' where module=\"%s\";", - jsonobj->author, jsonobj->title, desc, depends, jsonobj->module); - + cmd = talloc_asprintf(NULL, "INSERT INTO search VALUES(\"%s-%s\",\"%s\",\"%s\", \'%s\', \'%s\', 0);", + jsonobj->module, jsonobj->author, jsonobj->author, jsonobj->title, depends, desc); + db_command(handle, cmd); db_close(handle); talloc_free(depends); @@ -129,7 +132,7 @@ int main(int argc, char *argv[]) errx(1, "usage: infotojson dir_of_module info_filename target_json_file author [sqlitedb]\n" "Convert _info.c file to json file and optionally store to database"); - file = grab_file(NULL, argv[2]); + file = grab_file(NULL, argv[2], NULL); if (!file) err(1, "Reading file %s", argv[2]);