aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt7
-rw-r--r--cmake/FindSQLite3.cmake37
-rw-r--r--src/main.c87
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)
diff --git a/src/main.c b/src/main.c
index e4acf4d..6de5b43 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;
}