diff options
| author | yuzu-eva <cafebabe@disroot.org> | 2025-03-25 23:08:51 +0100 |
|---|---|---|
| committer | yuzu-eva <cafebabe@disroot.org> | 2025-03-25 23:08:51 +0100 |
| commit | 1c780c1352c4f24a2d7b332243cbdc183951b279 (patch) | |
| tree | f463390ae3f76a6c498188760a4009e8c86f9a27 | |
| parent | 4156c2b308afbb3e4caf4ec44638429247d1d562 (diff) | |
refactored code a bit
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | main.c | 122 |
2 files changed, 55 insertions, 71 deletions
@@ -1,5 +1,5 @@ SHELL=/bin/sh -CC=clang +CC=gcc SRCDIR=. PREFIX=/usr/local @@ -8,7 +8,7 @@ BINDIR=/bin INSTALL_PROGRAM=install INSTALL_DATA=install -m 644 -CFLAGS=-Wall -Wextra -O3 -ggdb +CFLAGS=-Wall -Wextra LIBS=-lsqlite3 BIN=myal @@ -23,21 +23,23 @@ void exit_with_error(sqlite3 *db, const char *msg) exit(69); } -void select_from_table(sqlite3 *db, char *table_name, char *q_param) +void select_from_table(sqlite3 *db, char *tblName, char *qp) { - char *zErrMsg = 0; char *sql; int rc; - const unsigned char *name, *episode, *status; - char *type; + const unsigned char *name, *value, *status; + const char *type; + char *query_param = malloc(strlen(qp) + 2); + int id; - if (!strcmp(table_name, "anime")) { - strcpy(type, "Episode"); - sql = "SELECT NAME, EPISODE, STATUS FROM anime WHERE NAME LIKE ?1 ORDER BY ID;"; - } else if (!strcmp(table_name, "manga")) { - strcpy(type, "Chapter"); - sql = "SELECT NAME, CHAPTER, STATUS FROM manga WHERE NAME LIKE ?1 ORDER BY ID;"; + + if (!strcmp(tblName, "anime")) { + type = "Episode"; + sql = "SELECT * FROM anime WHERE NAME LIKE ?1 ORDER BY ID;"; + } else if (!strcmp(tblName, "manga")) { + type = "Chapter"; + sql = "SELECT * manga WHERE NAME LIKE ?1 ORDER BY ID;"; } else { fprintf(stderr, "table does not exist...\n"); sqlite3_close(db); @@ -45,37 +47,46 @@ void select_from_table(sqlite3 *db, char *table_name, char *q_param) } sqlite3_stmt *stmt; - sprintf(q_param, "%s%%", q_param); + snprintf(query_param, strlen(qp) + 2, "%s%%", qp); rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); if (rc != SQLITE_OK) { exit_with_error(db, "failure fetching data: "); } - sqlite3_bind_text(stmt, 1, q_param, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 1, query_param, -1, SQLITE_TRANSIENT); while(sqlite3_step(stmt) == SQLITE_ROW) { - name = sqlite3_column_text(stmt, 0); - episode = sqlite3_column_text(stmt, 1); - status = sqlite3_column_text(stmt, 2); - printf("%s, %s %s, %s\n", name, type, episode, status); + id = sqlite3_column_int(stmt, 0); + name = sqlite3_column_text(stmt, 1); + value = sqlite3_column_text(stmt, 2); + status = sqlite3_column_text(stmt, 3); + printf("%03d: %s, %s %s, %s\n", id, name, type, value, status); } sqlite3_finalize(stmt); + free(query_param); } -void update_ep(sqlite3 *db, char *table_name, char *q_param, char *value) +void update_entry(sqlite3 *db, char *tblName, char *qp, char *value, char *status) { - char *zErrMsg = 0; char *sql; int rc; sqlite3_stmt *stmt; - if (!strcmp(table_name, "anime")) { - sql = "UPDATE anime SET EPISODE=?1 WHERE NAME=?2;"; - } else if (!strcmp(table_name, "manga")) { - sql = "UPDATE manga SET CHAPTER=?1 WHERE NAME=?2;"; + if (!strcmp(tblName, "anime")) { + if (status == NULL) { + sql = "UPDATE anime SET EPISODE=?1 WHERE NAME=?2;"; + } else { + sql = "UPDATE anime SET EPISODE=?1, STATUS=?2 WHERE NAME=?3;"; + } + } else if (!strcmp(tblName, "manga")) { + if (status == NULL) { + sql = "UPDATE manga SET CHAPTER=?1 WHERE NAME=?2;"; + } else { + sql = "UPDATE manga SET CHAPTER=?1, STATUS=?2 WHERE NAME=?3;"; + } } else { fprintf(stderr, "table does not exist...\n"); sqlite3_close(db); @@ -87,54 +98,29 @@ void update_ep(sqlite3 *db, char *table_name, char *q_param, char *value) exit_with_error(db, "failure fetching data: "); } - sqlite3_bind_text(stmt, 1, value, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 2, q_param, -1, SQLITE_STATIC); - - rc = sqlite3_step(stmt); - sqlite3_finalize(stmt); -} - -void update_status(sqlite3 *db, char *table_name, char *q_param, char *value) -{ - char *zErrMsg = 0; - char *sql; - int rc; - - sqlite3_stmt *stmt; - - if (!strcmp(table_name, "anime")) { - sql = "UPDATE anime SET STATUS=?1 WHERE NAME=?2;"; - } else if (!strcmp(table_name, "manga")) { - sql = "UPDATE manga SET STATUS=?1 WHERE NAME=?2;"; + if (status == NULL) { + sqlite3_bind_text(stmt, 1, value, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, qp, -1, SQLITE_STATIC); } else { - fprintf(stderr, "table does not exist...\n"); - sqlite3_close(db); - exit(69); + sqlite3_bind_text(stmt, 1, value, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, status, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, qp, -1, SQLITE_STATIC); } - rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); - if (rc != SQLITE_OK) { - exit_with_error(db, "failure fetching data: "); - } - - sqlite3_bind_text(stmt, 1, value, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 2, q_param, -1, SQLITE_STATIC); - rc = sqlite3_step(stmt); sqlite3_finalize(stmt); } -void add_entry(sqlite3 *db, char *table_name, char *name, char *episode, char *status) +void add_entry(sqlite3 *db, char *tblName, char *name, char *value, char *status) { - char *zErrMsg = 0; char *sql; int rc; sqlite3_stmt *stmt; - if (!strcmp(table_name, "anime")) { + if (!strcmp(tblName, "anime")) { sql = "INSERT INTO anime (NAME, EPISODE, STATUS) VALUES (?1, ?2, ?3);"; - } else if (!strcmp(table_name, "manga")) { + } else if (!strcmp(tblName, "manga")) { sql = "INSERT INTO manga (NAME, CHAPTER, STATUS) VALUES (?1, ?2, ?3);"; } else { fprintf(stderr, "table does not exist...\n"); @@ -148,7 +134,7 @@ void add_entry(sqlite3 *db, char *table_name, char *name, char *episode, char *s } sqlite3_bind_text(stmt, 1, name, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 2, episode, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, value, -1, SQLITE_STATIC); sqlite3_bind_text(stmt, 3, status, -1, SQLITE_STATIC); rc = sqlite3_step(stmt); @@ -161,7 +147,7 @@ int main(int argc, char **argv) fprintf(stderr, "missing argument...\n"); exit(69); } - char *mode, *target, *name, *episode, *status; + char *mode, *target, *name, *value, *status; mode = argv[1]; target = argv[2]; name = argv[3]; @@ -183,25 +169,23 @@ int main(int argc, char **argv) sqlite3_close(db); exit(69); } - episode = argv[4]; - update_ep(db, target, name, episode); - } else if (!strcmp(mode, "status")) { - if (argc < 5) { - fprintf(stderr, "missing argument...\n"); - sqlite3_close(db); - exit(69); + if (argc == 5) { + value = argv[4]; + update_entry(db, target, name, value, NULL); + } else if (argc == 6) { + value = argv[4]; + status = argv[5]; + update_entry(db, target, name, value, status); } - status = argv[4]; - update_status(db, target, name, status); } else if (!strcmp(mode, "add")) { if (argc < 6) { fprintf(stderr, "missing argument...\n"); sqlite3_close(db); exit(69); } - episode = argv[4]; + value = argv[4]; status = argv[5]; - add_entry(db, target, name, episode, status); + add_entry(db, target, name, value, status); } else { fprintf(stderr, "unknown option...\n"); sqlite3_close(db); |
