summaryrefslogtreecommitdiffstats
path: root/PICA_nodeaddrlist.c
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2012-06-19 20:24:30 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2012-06-19 20:24:30 +0000
commit53cd37ae110c635ba63be822ccbfd0cbd1169ea4 (patch)
tree14d91a45a410a6f3f5cc18b6f6f7af21ef9db0e2 /PICA_nodeaddrlist.c
parent8df9466ada46e4b07990b9cb7e8b1cd61b96844a (diff)
downloadpica-pica-53cd37ae110c635ba63be822ccbfd0cbd1169ea4.tar.gz
pica-pica-53cd37ae110c635ba63be822ccbfd0cbd1169ea4.zip
saving new nodes to sqlite database
git-svn-id: svn://localhost/project_picapica/trunk@129 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'PICA_nodeaddrlist.c')
-rwxr-xr-xPICA_nodeaddrlist.c66
1 files changed, 48 insertions, 18 deletions
diff --git a/PICA_nodeaddrlist.c b/PICA_nodeaddrlist.c
index db942b6..e1b4ff0 100755
--- a/PICA_nodeaddrlist.c
+++ b/PICA_nodeaddrlist.c
@@ -74,35 +74,65 @@ return N;
-int PICA_nodeaddr_list_save(char* listfilename,struct PICA_nodeaddr *list_head)
+int PICA_nodeaddr_save(char* dbfilename, struct PICA_nodeaddr *naddr)
{
-/*
-FILE *f_list;
-struct PICA_nodeaddr *list_item;
+sqlite3 *db;
+sqlite3_stmt *stmt;
+int ret;
+const char query[] = "insert into nodes (address, port, last_active, inactive_count) values(:addr, :port, strftime('%s','now'), 0);";
-f_list=fopen(listfilename,"w");
+ret = sqlite3_open(dbfilename, &db);
-if (f_list==0)
+if (ret != SQLITE_OK)
{
- puts("error opening node list for save");
- //ERR_CHECK
- return -1; // -1 коды ошибок
+ fprintf(stderr, "Can't open nodelist database: %s\n", sqlite3_errmsg(db));
+ sqlite3_close(db);
+ return -1;
}
-list_item=list_head;
-while(list_item)
+ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL);
+
+if (ret != SQLITE_OK)
+ {
+ fprintf(stderr, "Can't prepare SQLite statement: %s\n", sqlite3_errmsg(db));
+ sqlite3_close(db);
+ return -1;
+ }
+
+ret = sqlite3_bind_text(stmt, 1, naddr->addr, -1, SQLITE_STATIC);
+
+if (ret != SQLITE_OK)
{
- int ret;
- ret=fprintf(f_list,"%s %u %u\n",list_item->addr,list_item->port,list_item->unavail_count);
+ fprintf(stderr, "Can't bind address value: %s\n", sqlite3_errmsg(db));
+ sqlite3_finalize(stmt);
+ sqlite3_close(db);
+ return -1;
+ }
+
+ret = sqlite3_bind_int(stmt, 2, naddr->port);
- if (ret<0)
- return -1;
-
- list_item=list_item->next;
+if (ret != SQLITE_OK)
+ {
+ fprintf(stderr, "Can't bind port value: %s\n", sqlite3_errmsg(db));
+ sqlite3_finalize(stmt);
+ sqlite3_close(db);
+ return -1;
}
+ret = sqlite3_step(stmt);
+
+if (ret !=SQLITE_DONE)
+{
+ fprintf(stderr, "Can't execute query: %s\n", sqlite3_errmsg(db));
+ sqlite3_finalize(stmt);
+ sqlite3_close(db);
+ return -1;
+}
+
+sqlite3_finalize(stmt);
+sqlite3_close(db);
-return fclose(f_list);*/
+return 1;
}
void PICA_nodeaddr_list_free(struct PICA_nodeaddr *list_head)