FolderList get_bookmark_folders() { FolderList folders; sqlite3 *db; sqlite3_stmt *stmt; std::string sql = "SELECT folderId, folder FROM folders ORDER BY folder"; if (!run_statement(sql, &db, &stmt)) goto exit; { int res = sqlite3_step(stmt); while (res == SQLITE_ROW) { Folder f; f.id = sqlite3_column_string(stmt, 0, "-1"); f.name = sqlite3_column_string(stmt, 1, ""); folders.emplace_back(f); res = sqlite3_step(stmt); } if (res != SQLITE_DONE) { std::cerr << "Error reading rows: " << sqlite3_errmsg(db) << std::endl; } } exit: sqlite3_close(db); return folders; }
void run_on_context( context_ptr const& ctx, EnvironmentPtr const& env, T const& statements, bool const on_conpile_time = true ) { runner r( ctx, on_conpile_time ); for( auto const& s : statements ) run_statement( r, s, env ); }
int main(int argc, char **argv) { char line[500]; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0); connect_to_db("DSN=psqlodbc_test_dsn;Database=postgres"); printf("Dropping and creating database contrib_regression...\n"); run_statement("DROP DATABASE IF EXISTS contrib_regression"); run_statement("CREATE DATABASE contrib_regression"); connect_to_db("DSN=psqlodbc_test_dsn;Database=contrib_regression"); printf("Running initialization script...\n"); while (fgets(line, sizeof(line), stdin) != NULL) run_statement(line); printf("Done!\n"); return 0; }
BookmarkList get_bookmarks(std::string query, std::string folder, int sort) { BookmarkList bookmarks; sqlite3 *db; sqlite3_stmt *stmt; std::string sql = "SELECT url, title, icon FROM bookmarks WHERE 1"; if (query != "") sql += " AND (url LIKE '%' || ? || '%' OR title LIKE '%' || ?1 || '%')"; if (folder != "") sql += " AND folderId = '" + folder + "'"; if (sort == 0) sql += " ORDER BY length(title) > 0 DESC, title ASC"; else sql += " ORDER BY created DESC"; if (!run_statement(sql, &db, &stmt)) goto exit; if (query != "") { if (sqlite3_bind_text(stmt, 1, query.data(), -1, SQLITE_STATIC)) { std::cerr << "Error binding text: " << sqlite3_errmsg(db) << std::endl; goto exit; } } { int res = sqlite3_step(stmt); while (res == SQLITE_ROW) { Bookmark b; b.url = sqlite3_column_string(stmt, 0, ""); b.title = sqlite3_column_string(stmt, 1, b.url); b.icon = sqlite3_column_string(stmt, 2, "file:///usr/share/icons/suru/actions/scalable/stock_website.svg"); bookmarks.emplace_back(b); res = sqlite3_step(stmt); } if (res != SQLITE_DONE) { std::cerr << "Error reading rows: " << sqlite3_errmsg(db) << std::endl; } } exit: sqlite3_close(db); return bookmarks; }
void parse_data(char *data, char *end) { char *token_alloc; // allocated memory for tokens killscript = false; // dont kill the script straight away // allocate space for the tokens token_alloc = new char[current_script->len + T_MAXTOKENS]; prev_section = NULL; // clear it while(*rover) // go through the script executing each statement { // past end of script? if(rover > end) break; // reset the tokens before getting the next line tokens[0] = token_alloc; prev_section = current_section; // store from prev. statement // get the line and tokens get_tokens(rover); if(killscript) break; if(!num_tokens) { if(current_section) // no tokens but a brace { // possible } at end of loop: // refer to spec.c spec_brace(); } continue; // continue to next statement } if(script_debug) print_tokens(); // debug run_statement(); // run the statement } delete token_alloc; }
//static void statement(void) void statement(void) { int token; token = tokenizer_token(); switch(token) { case TOKENIZER_PRINT: print_statement(); break; case TOKENIZER_IF: if_statement(); break; case TOKENIZER_GOTO: goto_statement(); break; case TOKENIZER_GOSUB: gosub_statement(); break; case TOKENIZER_RETURN: return_statement(); break; case TOKENIZER_FOR: for_statement(); break; case TOKENIZER_NEXT: next_statement(); break; case TOKENIZER_END: end_statement(); break; case TOKENIZER_PSET: pset_statement(); break; case TOKENIZER_CLS: cls_statement(); break; case TOKENIZER_REFRESH: refresh_statement(); break; case TOKENIZER_LIST: list_statement(); break; case TOKENIZER_LOAD: load_statement(); break; case TOKENIZER_SAVE: save_statement(); break; case TOKENIZER_FILES: files_statement(); break; case TOKENIZER_PEEK: peek_statement(); break; case TOKENIZER_POKE: poke_statement(); break; case TOKENIZER_WAIT: wait_statement(); break; case TOKENIZER_INPUT: input_statement(); break; case TOKENIZER_INP: inp_statement(); break; case TOKENIZER_INR: inr_statement(); break; case TOKENIZER_INA: ina_statement(); break; case TOKENIZER_REM: rem_statement(); break; case TOKENIZER_RUN: run_statement(); break; case TOKENIZER_ERROR: tokenizer_error_print(); ended = 1; glcd_DrawCursor(); break; case TOKENIZER_LET: accept(TOKENIZER_LET); accept(TOKENIZER_VARIABLE); accept(TOKENIZER_CR); break; /* Fall through. */ case TOKENIZER_VARIABLE: let_statement(); break; default: exit(1); } }