Пытаюсь вывести всю базу данных, но получаю только первую запись.
Вывожу так:
static char *SQLbuf = NULL;
static int callback(void *NotUsed __attribute__((unused)),
int argc,
char **argv,
char **azColName __attribute__((unused))){
if(!*argv) return 1;
int i;
SQLbuf = strdup(*argv++);
for(i = 1; i < argc; i++){
SQLbuf = realloc(SQLbuf, strlen(SQLbuf)+strlen(*argv)+2);
strcat(SQLbuf, ";");
strcat(SQLbuf, *argv++);
}
return 0;
}
#define SQLexec(query) SQL_request(db_path, query)
char *SQL_request(char *dbname, char *q_str){
DBG("db=%s, reqest=%s",dbname, q_str);
sqlite3 *db;
char *zErrMsg = NULL, *ret = NULL;
int rc = sqlite3_open(dbname, &db);
if(rc){sqlite3_close(db); die(NO_DB);}
if(SQLbuf){free(SQLbuf); SQLbuf = NULL;}
rc = sqlite3_exec(db, q_str, callback, NULL, &zErrMsg);
if(rc){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_close(db);
die(SQL_ERR);
}
else if(SQLbuf)
ret = strdup(SQLbuf);
sqlite3_close(db);
return ret;
}
int lsusers(){
char *q_str = NULL, *list = NULL;
q_str = calloc(512, 1);
snprintf(q_str, 511, "select * from users order by login;");
list = SQLexec(q_str);
printf("%s\n\n",list);
free(list);
free(q_str);
return OK;
}