summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am8
-rw-r--r--src/Makefile.in57
-rw-r--r--src/db/sqlite3/db.c82
-rw-r--r--src/db/sqlite3/db.h12
-rw-r--r--src/entry.c8
-rw-r--r--src/entry.h5
-rw-r--r--src/main.c2
7 files changed, 162 insertions, 12 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index f4e5a8b..ed908a9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,6 @@
+AUTOMAKE_OPTIONS = subdir-objects
+
bin_PROGRAMS = assignment-list-tui
-assignment_list_tui_SOURCES = main.c draw.c draw.h entry.c entry.h group.c group.h
-assignment_list_tui_LDADD = @CURSES_LIBS@
-assignment_list_tui_CPPFLAGS = @CURSES_CFLAGS@
+assignment_list_tui_SOURCES = main.c draw.c draw.h entry.c entry.h group.c group.h db/$(default_db)/db.c db/$(default_db)/db.h
+assignment_list_tui_LDADD = @CURSES_LIBS@ @SQLITE3_LDFLAGS@
+assignment_list_tui_CPPFLAGS = @CURSES_CFLAGS@ @SQLITE3_CFLAGS@ -Idb/$(default_db)
diff --git a/src/Makefile.in b/src/Makefile.in
index 0646952..bf3d246 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -99,10 +99,12 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
+am__dirstamp = $(am__leading_dot)dirstamp
am_assignment_list_tui_OBJECTS = assignment_list_tui-main.$(OBJEXT) \
assignment_list_tui-draw.$(OBJEXT) \
assignment_list_tui-entry.$(OBJEXT) \
- assignment_list_tui-group.$(OBJEXT)
+ assignment_list_tui-group.$(OBJEXT) \
+ db/$(default_db)/assignment_list_tui-db.$(OBJEXT)
assignment_list_tui_OBJECTS = $(am_assignment_list_tui_OBJECTS)
assignment_list_tui_DEPENDENCIES =
AM_V_P = $(am__v_P_@AM_V@)
@@ -123,7 +125,8 @@ am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/assignment_list_tui-draw.Po \
./$(DEPDIR)/assignment_list_tui-entry.Po \
./$(DEPDIR)/assignment_list_tui-group.Po \
- ./$(DEPDIR)/assignment_list_tui-main.Po
+ ./$(DEPDIR)/assignment_list_tui-main.Po \
+ db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Po
am__mv = mv -f
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -215,6 +218,9 @@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
+SQLITE3_LDFLAGS = @SQLITE3_LDFLAGS@
+SQLITE3_VERSION = @SQLITE3_VERSION@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
@@ -232,6 +238,7 @@ build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
+default_db = @default_db@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
@@ -260,9 +267,10 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-assignment_list_tui_SOURCES = main.c draw.c draw.h entry.c entry.h group.c group.h
-assignment_list_tui_LDADD = @CURSES_LIBS@
-assignment_list_tui_CPPFLAGS = @CURSES_CFLAGS@
+AUTOMAKE_OPTIONS = subdir-objects
+assignment_list_tui_SOURCES = main.c draw.c draw.h entry.c entry.h group.c group.h db/$(default_db)/db.c db/$(default_db)/db.h
+assignment_list_tui_LDADD = @CURSES_LIBS@ @SQLITE3_LDFLAGS@
+assignment_list_tui_CPPFLAGS = @CURSES_CFLAGS@ @SQLITE3_CFLAGS@ -Idb/$(default_db)
all: all-am
.SUFFIXES:
@@ -338,6 +346,15 @@ uninstall-binPROGRAMS:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+db/$(default_db)/$(am__dirstamp):
+ @$(MKDIR_P) db/$(default_db)
+ @: > db/$(default_db)/$(am__dirstamp)
+db/$(default_db)/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) db/$(default_db)/$(DEPDIR)
+ @: > db/$(default_db)/$(DEPDIR)/$(am__dirstamp)
+db/$(default_db)/assignment_list_tui-db.$(OBJEXT): \
+ db/$(default_db)/$(am__dirstamp) \
+ db/$(default_db)/$(DEPDIR)/$(am__dirstamp)
assignment-list-tui$(EXEEXT): $(assignment_list_tui_OBJECTS) $(assignment_list_tui_DEPENDENCIES) $(EXTRA_assignment_list_tui_DEPENDENCIES)
@rm -f assignment-list-tui$(EXEEXT)
@@ -345,6 +362,7 @@ assignment-list-tui$(EXEEXT): $(assignment_list_tui_OBJECTS) $(assignment_list_t
mostlyclean-compile:
-rm -f *.$(OBJEXT)
+ -rm -f db/$(default_db)/*.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@@ -353,6 +371,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/assignment_list_tui-entry.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/assignment_list_tui-group.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/assignment_list_tui-main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@@ -361,15 +380,17 @@ $(am__depfiles_remade):
am--depfiles: $(am__depfiles_remade)
.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
@@ -430,6 +451,20 @@ assignment_list_tui-group.obj: group.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(assignment_list_tui_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o assignment_list_tui-group.obj `if test -f 'group.c'; then $(CYGPATH_W) 'group.c'; else $(CYGPATH_W) '$(srcdir)/group.c'; fi`
+db/$(default_db)/assignment_list_tui-db.o: db/$(default_db)/db.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(assignment_list_tui_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT db/$(default_db)/assignment_list_tui-db.o -MD -MP -MF db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Tpo -c -o db/$(default_db)/assignment_list_tui-db.o `test -f 'db/$(default_db)/db.c' || echo '$(srcdir)/'`db/$(default_db)/db.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Tpo db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='db/$(default_db)/db.c' object='db/$(default_db)/assignment_list_tui-db.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(assignment_list_tui_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o db/$(default_db)/assignment_list_tui-db.o `test -f 'db/$(default_db)/db.c' || echo '$(srcdir)/'`db/$(default_db)/db.c
+
+db/$(default_db)/assignment_list_tui-db.obj: db/$(default_db)/db.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(assignment_list_tui_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT db/$(default_db)/assignment_list_tui-db.obj -MD -MP -MF db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Tpo -c -o db/$(default_db)/assignment_list_tui-db.obj `if test -f 'db/$(default_db)/db.c'; then $(CYGPATH_W) 'db/$(default_db)/db.c'; else $(CYGPATH_W) '$(srcdir)/db/$(default_db)/db.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Tpo db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='db/$(default_db)/db.c' object='db/$(default_db)/assignment_list_tui-db.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(assignment_list_tui_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o db/$(default_db)/assignment_list_tui-db.obj `if test -f 'db/$(default_db)/db.c'; then $(CYGPATH_W) 'db/$(default_db)/db.c'; else $(CYGPATH_W) '$(srcdir)/db/$(default_db)/db.c'; fi`
+
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
@@ -547,6 +582,8 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f db/$(default_db)/$(DEPDIR)/$(am__dirstamp)
+ -rm -f db/$(default_db)/$(am__dirstamp)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -560,6 +597,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/assignment_list_tui-entry.Po
-rm -f ./$(DEPDIR)/assignment_list_tui-group.Po
-rm -f ./$(DEPDIR)/assignment_list_tui-main.Po
+ -rm -f db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -609,6 +647,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/assignment_list_tui-entry.Po
-rm -f ./$(DEPDIR)/assignment_list_tui-group.Po
-rm -f ./$(DEPDIR)/assignment_list_tui-main.Po
+ -rm -f db/$(default_db)/$(DEPDIR)/assignment_list_tui-db.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
diff --git a/src/db/sqlite3/db.c b/src/db/sqlite3/db.c
new file mode 100644
index 0000000..dd46071
--- /dev/null
+++ b/src/db/sqlite3/db.c
@@ -0,0 +1,82 @@
+#include <asm-generic/errno-base.h>
+#include <stdio.h>
+#include <sqlite3.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "config.h"
+#include "db.h"
+
+/* return values:
+ 0 -> success
+ 1 -> failure
+*/
+int create_tables(const char *path);
+
+int db_init() {
+ int res;
+ char db_path[BUF_LEN];
+
+ // create USER_DATA_DIR if not exists
+ res = mkdir(USER_DATA_DIR, S_IRWXU);
+ //if(res != 0 && res != EEXIST) return 1; // TODO write a better check incase mkdir fails
+
+ // return if db already exists
+ res = access(USER_DATA_PATH, F_OK);
+ if(res == 0) return 0;
+
+ // create database with tables
+ res = create_tables(USER_DATA_PATH);
+ if(res != 0) return 2;
+
+ return 0;
+}
+
+int create_tables(const char *path) {
+ sqlite3 *db;
+ char queries[2][BUF_LEN];
+ int num_queries = 2;
+ char *zErrMsg = NULL; // hold error from sqlite3_exec
+ int res;
+ int i;
+
+ sprintf(queries[0],
+ "CREATE TABLE IF NOT EXISTS 'Group' ("
+ "'ID' int NOT NULL PRIMARY KEY, "
+ "'Name' varchar(%d) NOT NULL, "
+ "'Desc' varchar(%d) DEFAULT NULL, "
+ "'Url' varchar(%d) DEFAULT NULL);",
+ BUF_LEN, BUF_LEN, BUF_LEN);
+
+ sprintf(queries[1],
+ "CREATE TABLE IF NOT EXISTS 'Entry' ("
+ "'ID' int NOT NULL PRIMARY KEY, "
+ "'Group_ID' int NOT NULL, " // FIXME might want foreign key constraint
+ // TODO add due_date here once it's figure out
+ "'Alt_due_date' varchar(%d) DEFAULT NULL, "
+ "'Title' varchar(%d) NOT NULL, "
+ "'Color' varchar(%d) DEFAULT NULL, "
+ "'Highlight' varchar(%d) DEFAULT NULL, "
+ "'Done' boolean DEFAULT NULL, "
+ "'Url' varchar(%d) DEFAULT NULL);",
+ BUF_LEN, BUF_LEN, BUF_LEN, BUF_LEN, BUF_LEN);
+
+ // open the database and run each query
+ res = sqlite3_open(path, &db);
+ if(res) {
+ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
+ sqlite3_close(db);
+ return 1;
+ }
+ for(i = 0; i < num_queries; ++i) {
+ res = sqlite3_exec(db, queries[i], NULL, NULL, &zErrMsg);
+ if(res != SQLITE_OK) {
+ fprintf(stderr, "SQL error: %s\n", zErrMsg);
+ sqlite3_free(zErrMsg);
+ }
+ }
+
+ // wrap-up
+ sqlite3_close(db);
+ return 0;
+}
diff --git a/src/db/sqlite3/db.h b/src/db/sqlite3/db.h
new file mode 100644
index 0000000..c6279f9
--- /dev/null
+++ b/src/db/sqlite3/db.h
@@ -0,0 +1,12 @@
+#ifndef DB_H
+#define DB_H
+
+/* initialize data.db file
+ * return values:
+ * 0 -> success
+ * 1 -> failure: could not create directory
+ * 2 -> failure: could not create file
+ */
+int db_init();
+
+#endif
diff --git a/src/entry.c b/src/entry.c
index 086db8c..2d5f7d0 100644
--- a/src/entry.c
+++ b/src/entry.c
@@ -19,6 +19,10 @@ char *entry_get_highlight(Entry *e) {
return e->highlight;
}
+bool entry_get_done(Entry *e) {
+ return e->done;
+}
+
char *entry_get_url(Entry *e) {
return e->url;
}
@@ -41,6 +45,10 @@ void entry_set_highlight(Entry *e, char *highlight) {
strcpy(e->highlight, highlight);
}
+void entry_set_done(Entry *e, bool done) {
+ e->done = done;
+}
+
void entry_set_url(Entry *e, char *url) {
strcpy(e->url, url);
}
diff --git a/src/entry.h b/src/entry.h
index 2a9f38b..a2f637e 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -1,6 +1,8 @@
#ifndef ENTRY_H
#define ENTRY_H
+#include <stdbool.h>
+
#include "../config.h"
// a group/category for entries to be put in
@@ -10,6 +12,7 @@ typedef struct {
char title[BUF_LEN];
char color[BUF_LEN]; // TODO consider making an enum
char highlight[BUF_LEN]; // TODO consider making an enum
+ bool done;
char url[BUF_LEN];
} Entry;
@@ -18,6 +21,7 @@ char *entry_get_alt_due_date(Entry *e);
char *entry_get_title(Entry *e);
char *entry_get_color(Entry *e);
char *entry_get_highlight(Entry *e);
+bool entry_get_done(Entry *e);
char *entry_get_url(Entry *e);
// setters
@@ -25,6 +29,7 @@ void entry_set_alt_due_date(Entry *e, char *alt_due_date);
void entry_set_title(Entry *e, char *title);
void entry_set_color(Entry *e, char *color);
void entry_set_highlight(Entry *e, char *highlight);
+void entry_set_done(Entry *e, bool done);
void entry_set_url(Entry *e, char *url);
#endif
diff --git a/src/main.c b/src/main.c
index e7636c9..24b6b21 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,6 +1,8 @@
+#include "db.h"
#include "draw.h"
int main() {
+ db_init();
tui_init();
return 0;