diff options
| author | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2012-06-19 20:24:30 +0000 |
|---|---|---|
| committer | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2012-06-19 20:24:30 +0000 |
| commit | 53cd37ae110c635ba63be822ccbfd0cbd1169ea4 (patch) | |
| tree | 14d91a45a410a6f3f5cc18b6f6f7af21ef9db0e2 /PICA_nodeaddrlist.c | |
| parent | 8df9466ada46e4b07990b9cb7e8b1cd61b96844a (diff) | |
| download | pica-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-x | PICA_nodeaddrlist.c | 66 |
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) |
