From 90f280e891243504cd2e8dbf1daf5c179abca4b1 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 8 Dec 2008 16:08:24 +1030 Subject: [PATCH] Remove _infotojson (unused for now) --- tools/Makefile | 1 - tools/_infotojson/Makefile | 2 - tools/_infotojson/database.h | 20 ---- tools/_infotojson/infotojson.c | 158 --------------------------- tools/_infotojson/infotojson.h | 39 ------- tools/_infotojson/sqlite3_database.c | 78 ------------- tools/_infotojson/utils.c | 57 ---------- tools/_infotojson/utils.h | 17 --- 8 files changed, 372 deletions(-) delete mode 100644 tools/_infotojson/Makefile delete mode 100644 tools/_infotojson/database.h delete mode 100644 tools/_infotojson/infotojson.c delete mode 100644 tools/_infotojson/infotojson.h delete mode 100644 tools/_infotojson/sqlite3_database.c delete mode 100644 tools/_infotojson/utils.c delete mode 100644 tools/_infotojson/utils.h diff --git a/tools/Makefile b/tools/Makefile index 9c322e68..173355ab 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -17,4 +17,3 @@ tools-clean: ccanlint-clean rm -f $(ALL_TOOLS) include tools/ccanlint/Makefile -include tools/_infotojson/Makefile diff --git a/tools/_infotojson/Makefile b/tools/_infotojson/Makefile deleted file mode 100644 index cc195ef3..00000000 --- a/tools/_infotojson/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -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 diff --git a/tools/_infotojson/database.h b/tools/_infotojson/database.h deleted file mode 100644 index f807cbde..00000000 --- a/tools/_infotojson/database.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Simple SQL-style database ops. Currently implemented for sqlite3. */ -#include - -/* Returns handle to the database.. */ -void *db_open(const char *file); - -/* Runs query (SELECT). Fills in columns. */ -struct db_query -{ - unsigned int num_rows; - char ***rows; -}; - -struct db_query *db_query(void *h, const char *query); - -/* Runs command (CREATE TABLE/INSERT) */ -void db_command(void *h, const char *command); - -/* Closes database (only called when everything OK). */ -void db_close(void *h); diff --git a/tools/_infotojson/infotojson.c b/tools/_infotojson/infotojson.c deleted file mode 100644 index e837ff4a..00000000 --- a/tools/_infotojson/infotojson.c +++ /dev/null @@ -1,158 +0,0 @@ -/* This extract info from _info.c and create json file and also optionally store to db */ -#include "infotojson.h" - -/*creating json structure for storing to file/db*/ -static struct json *createjson(char **infofile, const char *author, const char *directory) -{ - struct json *jsonobj; - unsigned int modulename; - - if (infofile == NULL || author == NULL) { - printf("Error Author or Info file is NULL\n"); - exit(1); - } - - jsonobj = talloc(NULL, struct json); - if (!jsonobj) - errx(1, "talloc error"); - - jsonobj->author = talloc_strdup(jsonobj, author); - - /* First line should be module name and short description */ - modulename = strchr(infofile[0], '-') - infofile[0]; - - jsonobj->module = talloc_strndup(jsonobj, infofile[0], modulename - 1); - if (!jsonobj->module) - errx(1, "talloc error"); - - jsonobj->title = infofile[0]; - jsonobj->desc = &infofile[1]; - jsonobj->depends = get_deps(jsonobj, directory); - return jsonobj; -} - -/*extracting title and description from _info.c files*/ -static char **extractinfo(char **file) -{ - char **infofile; - unsigned int count = 0, j = 0, num_lines = 0; - bool printing = false; - - while (file[num_lines++]); - infofile = talloc_array(NULL, char *, num_lines); - - for (j = 0; j < num_lines - 1; j++) { - if (streq(file[j], "/**")) { - printing = true; - } - else if (streq(file[j], " */")) - printing = false; - else if (printing) { - if (strstarts(file[j], " * ")) - infofile[count++] = file[j] + 3; - else if (strstarts(file[j], " *")) - infofile[count++] = file[j] + 2; - else { - err(1,"Error in comments structure\n%d",j); - exit(1); - } - } - } - infofile[count] = NULL; - return infofile; -} - -/*storing json structure to json file*/ -static int storejsontofile(const struct json *jsonobj, const char *file) -{ - FILE *fp; - unsigned int j = 0; - fp = fopen(file, "wt"); - 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]); - fprintf(fp,"]\n"); - fclose(fp); - return 1; -} - -/*storing json structure to db*/ -static int storejsontodb(const struct json *jsonobj, const char *db) -{ - char *cmd, *query, *desc, *depends; - sqlite3 *handle; - struct db_query *q; - - handle = db_open(db); - 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 && 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, "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); - talloc_free(query); - talloc_free(desc); - talloc_free(cmd); - return 1; -} - -int main(int argc, char *argv[]) -{ - char *file; - char **lines; - char **infofile; - struct json *jsonobj; - - talloc_enable_leak_report(); - 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[2], NULL); - if (!file) - err(1, "Reading file %s", argv[2]); - - lines = strsplit(NULL, file, "\n", NULL); - - //extract info from lines - infofile = extractinfo(lines); - - //create json obj - jsonobj = createjson(infofile, argv[4], argv[1]); - - //store to file - storejsontofile(jsonobj, argv[3]); - - if (argv[5] != NULL) - storejsontodb(jsonobj, argv[5]); - - talloc_free(file); - talloc_free(jsonobj); - talloc_free(lines); - talloc_free(infofile); - return 0; -} diff --git a/tools/_infotojson/infotojson.h b/tools/_infotojson/infotojson.h deleted file mode 100644 index 7b979240..00000000 --- a/tools/_infotojson/infotojson.h +++ /dev/null @@ -1,39 +0,0 @@ -/** json structure - * This file contains definition of json structure - **/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "database.h" -#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; - }; - - /* Function for storing json structure to file given struct json*/ -static int storejsontofile(const struct json *jsonobj, const char *jsonfile); - -/*Function to store in database*/ -static int storejsontodb(const struct json *jsonobj, const char *db); - -/*create json structure*/ -static struct json *createjson(char **infofile, const char *author, const char *directory); - -/*Extract info from file*/ -static char **extractinfo(char **file); diff --git a/tools/_infotojson/sqlite3_database.c b/tools/_infotojson/sqlite3_database.c deleted file mode 100644 index 6021eab6..00000000 --- a/tools/_infotojson/sqlite3_database.c +++ /dev/null @@ -1,78 +0,0 @@ -/* SQLite3 database backend. */ -#include -#include -#include -#include -#include "database.h" -#include "utils.h" - -/* sqlite3_busy_timeout sleeps for a *second*. What a piece of shit. */ -static int busy(void *unused __attribute__((unused)), int count) -{ - usleep(50000); - - /* If we've been stuck for 1000 iterations (at least 50 - * seconds), give up. */ - return (count < 1000); -} - -void *db_open(const char *file) -{ - sqlite3 *handle; - - int err = sqlite3_open(file, &handle); - if (err != SQLITE_OK) - printf("Error %i from sqlite3_open of db '%s'\n", err, file); - sqlite3_busy_handler(handle, busy, NULL); - - return handle; -} - -static int query_cb(void *data, int num, char**vals, - char**names __attribute__((unused))) -{ - int i; - struct db_query *query = data; - query->rows = realloc_array(query->rows, query->num_rows+1); - query->rows[query->num_rows] = new_array(char *, num); - for (i = 0; i < num; i++) { - /* We don't count rows with NULL results - * (eg. count(*),player where count turns out to be - * zero. */ - if (!vals[i]) - return 0; - query->rows[query->num_rows][i] = strdup(vals[i]); - } - query->num_rows++; - return 0; -} - -/* Runs query (SELECT). Fails if > 1 row returned. Fills in columns. */ -struct db_query *db_query(void *h, const char *query) -{ - struct db_query *ret; - char *err; - - ret = (struct db_query*) palloc(sizeof(struct db_query)); - ret->rows = NULL; - ret->num_rows = 0; - if (sqlite3_exec(h, query, query_cb, ret, &err) != SQLITE_OK) - printf("Failed sqlite3 query '%s': %s", query, err); - return ret; -} - -/* Runs command (CREATE TABLE/INSERT) */ -void db_command(void *h, const char *command) -{ - char *err; - - if (sqlite3_exec(h, command, NULL, NULL, &err) != SQLITE_OK) - printf("Failed sqlite3 command '%s': %s", command, err); -} - -/* Closes database (only called when everything OK). */ -void db_close(void *h) -{ - sqlite3_close(h); -} - diff --git a/tools/_infotojson/utils.c b/tools/_infotojson/utils.c deleted file mode 100644 index 4f2fc43a..00000000 --- a/tools/_infotojson/utils.c +++ /dev/null @@ -1,57 +0,0 @@ -#define _GNU_SOURCE -#include -#include "utils.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "utils.h" - -void * palloc(int size) -{ - void *p; - p = malloc(size); - if(p == NULL) { - printf("Error Malloc does not allocate\n"); - exit(1); - } - return p; -} - -char *aprintf(const char *fmt, ...) -{ - char *ret; - va_list arglist; - - va_start(arglist, fmt); - vasprintf(&ret, fmt, arglist); - va_end(arglist); - return ret; -} - -void strreplace(char * str, char src, char dest) -{ - int i; - for(i = 0; str[i]; i++) - if(str[i] == src) - str[i] = dest; -} - -void *_realloc_array(void *ptr, size_t size, size_t num) -{ - if (num >= SIZE_MAX/size) - return NULL; - return realloc_nofail(ptr, size * num); -} - -void *realloc_nofail(void *ptr, size_t size) -{ - ptr = realloc(ptr, size); - if (ptr) - return ptr; - err(1, "realloc of %zu failed", size); -} diff --git a/tools/_infotojson/utils.h b/tools/_infotojson/utils.h deleted file mode 100644 index 24f3375e..00000000 --- a/tools/_infotojson/utils.h +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -#include - - -#define new_array(type, num) realloc_array((type *)0, (num)) -#define realloc_array(ptr, num) ((__typeof__(ptr))_realloc_array((ptr), sizeof((*ptr)), (num))) - -void *realloc_nofail(void *ptr, size_t size); - -void *_realloc_array(void *ptr, size_t size, size_t num); - -void * palloc(int size); - -char *aprintf(const char *fmt, ...); - -void strreplace(char * str, char src, char dest); -- 2.39.2