diff options
author | gramanas <anastasis.gramm2@gmail.com> | 2018-04-13 03:09:03 +0300 |
---|---|---|
committer | gramanas <anastasis.gramm2@gmail.com> | 2018-04-13 03:09:03 +0300 |
commit | 0168c10023f0040ae2fa31a212eb6d2e411eefb3 (patch) | |
tree | 4d9565bd30d392ee84c97af324ce56df9fbd0e42 | |
parent | ef16959b92ff9bd6a88e21536e48f9946170d4a2 (diff) | |
download | ck-0168c10023f0040ae2fa31a212eb6d2e411eefb3.tar.gz ck-0168c10023f0040ae2fa31a212eb6d2e411eefb3.tar.bz2 ck-0168c10023f0040ae2fa31a212eb6d2e411eefb3.zip |
Find sqlite3 and some tests
-rw-r--r-- | CMakeLists.txt | 7 | ||||
-rw-r--r-- | cmake/FindSQLite3.cmake | 37 | ||||
-rw-r--r-- | src/main.c | 87 |
3 files changed, 127 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 37c6fd0..1471290 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required (VERSION 3.5.6) project(ck C) + # Set project directories set(PROJECT_SOURCE_DIR ./src) # Set source code locations @@ -12,10 +13,15 @@ set(ckLib_hdr # ${PROJECT_SOURCE_DIR}/tui.hpp ) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) + +find_package(SQLite3) + # Include directories include_directories(${PROJECT_SOURCE_DIR}) include_directories(${PROJECT_BINARY_DIR}) include_directories(${CMAKE_BINARY_DIR}) +include_directories(${SQLITE3_INCLUDE_DIRS}) # Create the shared library add_library (ckLib SHARED @@ -26,3 +32,4 @@ add_library (ckLib SHARED # Link add_executable(ck ${ckBin_src}) target_link_libraries (ck ckLib) +target_link_libraries (ck ${SQLITE3_LIBRARIES}) diff --git a/cmake/FindSQLite3.cmake b/cmake/FindSQLite3.cmake new file mode 100644 index 0000000..9c99ae5 --- /dev/null +++ b/cmake/FindSQLite3.cmake @@ -0,0 +1,37 @@ +# Copyright (C) 2007-2009 LuaDist. +# Created by Peter Kapec <kapecp@gmail.com> +# Redistribution and use of this file is allowed according to the terms of the MIT license. +# For details see the COPYRIGHT file distributed with LuaDist. +# Note: +# Searching headers and libraries is very simple and is NOT as powerful as scripts +# distributed with CMake, because LuaDist defines directories to search for. +# Everyone is encouraged to contact the author with improvements. Maybe this file +# becomes part of CMake distribution sometimes. + +# - Find sqlite3 +# Find the native SQLITE3 headers and libraries. +# +# SQLITE3_INCLUDE_DIRS - where to find sqlite3.h, etc. +# SQLITE3_LIBRARIES - List of libraries when using sqlite. +# SQLITE3_FOUND - True if sqlite found. + +# Look for the header file. +FIND_PATH(SQLITE3_INCLUDE_DIR NAMES sqlite3.h) + +# Look for the library. +FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3) + +# Handle the QUIETLY and REQUIRED arguments and set SQLITE3_FOUND to TRUE if all listed variables are TRUE. +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SQLITE3 DEFAULT_MSG SQLITE3_LIBRARY SQLITE3_INCLUDE_DIR) + +# Copy the results to the output variables. +IF(SQLITE3_FOUND) + SET(SQLITE3_LIBRARIES ${SQLITE3_LIBRARY}) + SET(SQLITE3_INCLUDE_DIRS ${SQLITE3_INCLUDE_DIR}) +ELSE(SQLITE3_FOUND) + SET(SQLITE3_LIBRARIES) + SET(SQLITE3_INCLUDE_DIRS) +ENDIF(SQLITE3_FOUND) + +MARK_AS_ADVANCED(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES) @@ -1,6 +1,85 @@ -#include "stdio.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sqlite3.h> -int main() -{ - printf("Hello World\n"); +static int callback(void *NotUsed, int argc, char **argv, char **azColName) { + int i; + for(i = 0; i<argc; i++) { + printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); + } + printf("\n"); + return 0; +} + +void initDb(sqlite3 *db) { + char *zErrMsg = 0; + char *sql; + int rc; + + /* Create SQL statement */ + sql = "CREATE TABLE PROGRAM(" \ + "id INT PRIMARY KEY NOT NULL," \ + "name TEXT NOT NULL);"; + + /* Execute SQL statement */ + rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); + + if( rc != SQLITE_OK ){ + fprintf(stderr, "SQL error: %s\n", zErrMsg); + sqlite3_free(zErrMsg); + } else { + fprintf(stdout, "Table created successfully\n"); + } + sql = "CREATE TABLE CONFIG(" \ + "id INT PRIMARY KEY NOT NULL," \ + "path TEXT NOT NULL," \ + "secret INT NOT NULL," \ + "prime INT NOT NULL);"; + + /* Execute SQL statement */ + rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); + + if( rc != SQLITE_OK ){ + fprintf(stderr, "SQL error: %s\n", zErrMsg); + sqlite3_free(zErrMsg); + } else { + fprintf(stdout, "Table created successfully\n"); + } + sql = "CREATE TABLE REL(" \ + "pId INT NOT NULL," \ + "cId INT NOT NULL);"; + + /* Execute SQL statement */ + rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); + + if( rc != SQLITE_OK ){ + fprintf(stderr, "SQL error: %s\n", zErrMsg); + sqlite3_free(zErrMsg); + } else { + fprintf(stdout, "Table created successfully\n"); + } +} + + int main(int argc, char* argv[]) { + sqlite3 *db; + int rc; + + /* Open database */ + rc = sqlite3_open("ckdb", &db); + + if (rc) { + fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); + return(0); + } + else { + fprintf(stdout, "Opened database successfully\n"); + } + + if (strcmp("init", argv[1]) == 0) { + initDb(db); + } + + sqlite3_close(db); + return 0; } |