Browse Source

changes to infotojson for storing dependencies from get_deps()

dinesh 17 years ago
parent
commit
338b91f5d9
3 changed files with 32 additions and 23 deletions
  1. 1 1
      tools/_infotojson/Makefile
  2. 28 21
      tools/_infotojson/infotojson.c
  3. 3 1
      tools/_infotojson/infotojson.h

+ 1 - 1
tools/_infotojson/Makefile

@@ -1,2 +1,2 @@
-tools/_infotojson/infotojson: tools/_infotojson/infotojson.o tools/_infotojson/sqlite3_database.o tools/_infotojson/utils.o ccan/string/string.o ccan/talloc/talloc.o
+tools/_infotojson/infotojson: tools/depends.o tools/_infotojson/infotojson.o tools/_infotojson/sqlite3_database.o tools/_infotojson/utils.o ccan/string/string.o ccan/noerr/noerr.o ccan/talloc/talloc.o
 	$(CC) $(LDFLAGS) -o $@ $^ -lsqlite3

+ 28 - 21
tools/_infotojson/infotojson.c

@@ -2,7 +2,7 @@
 #include "infotojson.h"
 
 /*creating json structure for storing to file/db*/
-static struct json *createjson(char **infofile, char *author)
+static struct json *createjson(char **infofile, const char *author, const char *directory)
 {
 	struct json *jsonobj;
 	unsigned int modulename;
@@ -12,12 +12,11 @@ static struct json *createjson(char **infofile, char *author)
 		exit(1);
 	}
 
-	//jsonobj = (struct json *)palloc(sizeof(struct json));
         jsonobj = talloc(NULL, struct json);
         if (!jsonobj)
 		errx(1, "talloc error");
 		
-	jsonobj->author = author;
+	jsonobj->author = talloc_strdup(jsonobj, author);
 
         /* First line should be module name and short description */
 	modulename =  strchr(infofile[0], '-') - infofile[0];
@@ -28,7 +27,7 @@ static struct json *createjson(char **infofile, char *author)
 		
 	jsonobj->title = infofile[0];
 	jsonobj->desc = &infofile[1];
-	
+	jsonobj->depends = get_deps(jsonobj, directory);
 	return jsonobj;
 }
 
@@ -41,7 +40,6 @@ static char **extractinfo(char **file)
 	
 	while (file[num_lines++]);
 	infofile = talloc_array(NULL, char *, num_lines);
-	//(char **) palloc(size * sizeof(char *));
 	
 	for (j = 0; j < num_lines - 1; j++) {
 		if (streq(file[j], "/**")) {
@@ -73,6 +71,13 @@ static int storejsontofile(const struct json *jsonobj, const char *file)
 	fprintf(fp,"\"Module\":\"%s\",\n",jsonobj->module);
 	fprintf(fp,"\"Title\":\"%s\",\n",jsonobj->title);
 	fprintf(fp,"\"Author\":\"%s\",\n",jsonobj->author);
+
+	fprintf(fp,"\"Dependencies\":[\n");	
+	for (j = 0; jsonobj->depends[j]; j++)
+		fprintf(fp,"{\n\"depends\":\"%s\"\n},\n",jsonobj->depends[j]);
+	fprintf(fp,"]\n");
+
+
 	fprintf(fp,"\"Description\":[\n");	
 	for (j = 0; jsonobj->desc[j]; j++)
 		fprintf(fp,"{\n\"str\":\"%s\"\n},\n",jsonobj->desc[j]);
@@ -84,7 +89,7 @@ static int storejsontofile(const struct json *jsonobj, const char *file)
 /*storing json structure to db*/
 static int storejsontodb(const struct json *jsonobj, const char *db)
 {
-	char *cmd, *query, *desc;
+	char *cmd, *query, *desc, *depends;
 	sqlite3 *handle;
 	struct db_query *q;
 	
@@ -92,17 +97,20 @@ static int storejsontodb(const struct json *jsonobj, const char *db)
 	query = talloc_asprintf(NULL, "SELECT module from search where module=\"%s\";", jsonobj->module);
 	q = db_query(handle, query);
 	
-	desc = strjoin(NULL,jsonobj->desc,"\n");
+	desc = strjoin(NULL, jsonobj->desc,"\n");
 	strreplace(desc, '\'', ' ');
+
+	depends = strjoin(NULL, jsonobj->depends,"\n");
 	if (!q->num_rows)
-		cmd = talloc_asprintf(NULL, "INSERT INTO search VALUES(\"%s\",\"%s\",\"%s\",'%s\');",
-			jsonobj->module, jsonobj->author, jsonobj->title, desc);
+		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\' where module=\"%s\";",
-			jsonobj->author, jsonobj->title, desc, jsonobj->module);
+		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);
 
 	db_command(handle, cmd);	
 	db_close(handle);
+	talloc_free(depends);
 	talloc_free(query);
 	talloc_free(desc);
 	talloc_free(cmd);
@@ -117,14 +125,13 @@ int main(int argc, char *argv[])
 	struct json *jsonobj;
 	
 	talloc_enable_leak_report();
-	if (argc < 4) {
-		errx(1, "usage: infotojson infofile jsonfile author [sqlitedb]\n");
-		return 1;
-	}
+	if (argc < 5)
+		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[1]);
+	file = grab_file(NULL, argv[2]);
 	if (!file)
-		err(1, "Reading file %s", argv[1]);
+		err(1, "Reading file %s", argv[2]);
 
 	lines = strsplit(NULL, file, "\n", NULL);		
 	
@@ -132,13 +139,13 @@ int main(int argc, char *argv[])
 	infofile = extractinfo(lines);
 	
 	//create json obj
-	jsonobj = createjson(infofile, argv[3]);
+	jsonobj = createjson(infofile, argv[4], argv[1]);
 	
 	//store to file
-	storejsontofile(jsonobj, argv[2]);
+	storejsontofile(jsonobj, argv[3]);
 	
-	if (argv[4] != NULL)
-		storejsontodb(jsonobj, argv[4]);
+	if (argv[5] != NULL)
+		storejsontodb(jsonobj, argv[5]);
 		
 	talloc_free(file);
 	talloc_free(jsonobj);

+ 3 - 1
tools/_infotojson/infotojson.h

@@ -15,12 +15,14 @@
 #include "ccan/talloc/talloc.h"
 #include "ccan/string/string.h"
 #include "utils.h"
+#include "tools/tools.h"
 
  struct json
  {
  	char *module;
  	char *title;
  	char *author;
+	char **depends;
  	char **desc;
  };
  
@@ -31,7 +33,7 @@ static int storejsontofile(const struct json *jsonobj, const char *jsonfile);
 static int storejsontodb(const struct json *jsonobj, const char *db);
 
 /*create json structure*/
-static struct json *createjson(char **infofile, char *author);
+static struct json *createjson(char **infofile, const char *author, const char *directory);
 
 /*Extract info from file*/
 static char **extractinfo(char **file);