diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/actionparser.c | 133 | ||||
| -rw-r--r-- | src/actionparser.h | 1 | ||||
| -rw-r--r-- | src/actions.c | 44 | ||||
| -rw-r--r-- | src/checks.c | 133 | ||||
| -rw-r--r-- | src/checks.h | 31 | ||||
| -rw-r--r-- | src/ck.c | 12 | ||||
| -rw-r--r-- | src/confparser.c | 70 | ||||
| -rw-r--r-- | src/confparser.h | 6 | ||||
| -rw-r--r-- | src/dblayer.c | 40 | ||||
| -rw-r--r-- | src/dblayer.h | 4 | ||||
| -rwxr-xr-x | src/tests/check_ck | 8 | ||||
| -rwxr-xr-x | src/tests/init | 23 | 
12 files changed, 199 insertions, 306 deletions
diff --git a/src/actionparser.c b/src/actionparser.c index 8261cf7..cba732e 100644 --- a/src/actionparser.c +++ b/src/actionparser.c @@ -53,7 +53,7 @@ void getOpt(int position, UserOpt *opt) {    nextToken();    // allocate memory -  opt->argv[position] = (char *)malloc((strlen(token)+1)*sizeof(char)); +  opt->argv[position] = (char *)malloc((strlen(token))*sizeof(char) + 1);    strcpy(opt->argv[position], token);  } @@ -92,36 +92,36 @@ int parse_ADD(UserOpt *opt) {  }  int parse_DEL(UserOpt *opt) { +  return -1;  }  int parse_EDIT(UserOpt *opt) { +  return -1;  }  int parse_LIST(UserOpt *opt) { +  return -1;  }  int parse_SEARCH(UserOpt *opt) { +  return -1;  }  int parse_HELP(UserOpt *opt) { +  return -1;  }  int parseVals(UserOpt *opt) {    switch (opt->action) { -#define X(ACTION)                             \ +#define X(ACTION)                                \      case CKA_##ACTION:                           \        return parse_##ACTION(opt);      CK_ACTIONS  #undef X -  default: -    // can't end up here, but it prevents a compiler warning -    opt->err = PERR_UNKONW_ACTION; -    return -1; -    break; -  } +      }    return 1;  }  CkAction determineAction() {    int i = 0; -#define X(ACTION)                                                    \ +#define X(ACTION)                                                       \    for (i = 1; i < atoi(str##ACTION[0]) + 1; i++) {                      \      if (strcmp(token, str##ACTION[i]) == 0) {                           \        return CKA_##ACTION;                                              \ @@ -132,17 +132,28 @@ CkAction determineAction() {    return -1;  } -UserOpt initUserOpt() { -  UserOpt uo; -  uo.action = -1; -  uo.err = PERR_NOERR; -  uo.argc = 0; +UserOpt make_empty_user_opt() { +  UserOpt opt; +  opt.action = -1; +  opt.err = PERR_NOERR; +  opt.argc = 0; +  opt.confDir = NULL;    for (int i = 0; i < 10; i++) { -    uo.argv[i] = NULL; +    opt.argv[i] = NULL;    } -  return uo; +  return opt;  } +void free_user_opt(UserOpt *opt) { +  for (int i = 0; i < 10; i++) { +    if (opt->argv[i] != NULL) { +      free(opt->argv[i]); +    }     +  } +  if (opt->confDir != NULL) { +    free(opt->confDir); +  } +}  void getConfig(UserOpt *opt) {    // get first token @@ -154,19 +165,26 @@ void getConfig(UserOpt *opt) {          printf("Config needs a value\n");          exit(1);        } +      if (strcmp(token, ".") == 0){ +        printf("Dot\n"); +      }        struct stat st = {0};        if (stat(token, &st) == -1) {          printf("%s is not a directory\n", token);          exit(1);        } -      opt->confDir = malloc(sizeof(token)); +      opt->confDir = malloc(strlen(token) + 1);        strcpy(opt->confDir, token); +      // remove trailing `/` +      if (opt->confDir[strlen(token) - 1] == '/') { +        opt->confDir[strlen(token) - 1] = '\0'; +      }        return;      }    }    char * defaultConf = "/.ck";    char * home = getenv("HOME"); -  opt->confDir = malloc(sizeof(defaultConf)+sizeof(home)); +  opt->confDir = malloc(strlen(defaultConf)+strlen(home)+1);    strcpy(opt->confDir, home);    strcat(opt->confDir, defaultConf); @@ -176,7 +194,7 @@ void getConfig(UserOpt *opt) {  }  ParseResult parseAction(int argc, char* argv[], UserOpt *opt) { -  *opt = initUserOpt(); +  *opt = make_empty_user_opt();    if (argc < 2) {      return OPR_HELP;    } @@ -211,29 +229,37 @@ ParseResult parseAction(int argc, char* argv[], UserOpt *opt) {    }  } -const char * getPossibleActionName(const char* const strAction[]) { -  char *names; -  size_t size = 2; // first chars "{ " -  for (int i = 1; i < atoi(strAction[0]) + 1; i++) { -    size += strlen(strAction[i]) + 2; // comma and space for each entry and " }" for the last one +void getPossibleActionNames(char * dest, CkAction ckAction) { +  if (ckAction == -1) { +    dest = NULL; +    return;    } -  if ((names = malloc(size)) != NULL) { -    strcpy(names, "{ "); -    int i = 1; -    for (; i < atoi(strAction[0]); i++) { -      strcat(names, strAction[i]); -      strcat(names, ", "); -    } -    // last one -    strcat(names, strAction[atoi(strAction[0])]); -    strcat(names, " }"); -    return names; + +  char buf[30]; +   +  switch (ckAction) { +#define X(ACTION)                                         \ +    case CKA_##ACTION:                                    \ +    strcpy(buf, "{ ");                                    \ +    for (int i = 1; i < atoi(str##ACTION[0]); i++) {      \ +      strcat(buf, str##ACTION[i]);                        \ +      strcat(buf, ", ");                                  \ +    }                                                     \ +    strcat(buf, str##ACTION[atoi(str##ACTION[0])]);       \ +    strcat(buf, " }");                                    \ +    break; +    CK_ACTIONS +#undef X    } -  return NULL; + +  strcpy(dest, buf);  }  void printParserError(UserOpt *opt) {    char *errStr = NULL; +  char names[30]; +  getPossibleActionNames(names, opt->action); +    switch (opt->err) {    case PERR_NOERR:      return; @@ -241,13 +267,13 @@ void printParserError(UserOpt *opt) {      asprintf(&errStr, "Unknown action: %s", token);      break;    case PERR_INIT_WRONG: -    asprintf(&errStr, "Initialize database\nUsage: %s version_control_dir secret_dir", getPossibleActionName(strINIT)); +    asprintf(&errStr, "Initialize database\nUsage: %s version_control_dir secret_dir", names);      break;    case PERR_ADD_WRONG: -    asprintf(&errStr, "Add config (new or existing)\nUsage: %s ProgramName ConfigPath [-s](secret) [-p](primary)", getPossibleActionName(strADD)); +    asprintf(&errStr, "Add config (new or existing)\nUsage: %s ProgramName ConfigPath [-s](secret) [-p](primary)", names);      break;    case PERR_DEL_WRONG: -    asprintf(&errStr, "Delete config or program\nUsage: %s ProgramName ConfigPath [-s](secret) [-p](primary)", getPossibleActionName(strDEL)); +    asprintf(&errStr, "Delete config or program\nUsage: %s ProgramName ConfigPath [-s](secret) [-p](primary)", names);      break;    case PERR_EDIT_WRONG:      asprintf(&errStr, "Edit config\nUsage: add ProgramName ConfigPath [-s](secret) [-p](primary)"); @@ -263,18 +289,25 @@ void printParserError(UserOpt *opt) {      break;    }    printf("Parsing error\n%s\n", errStr); -  exit(1); +  free(errStr);  }  void printParserHelp() { -  printf("ck - the config keeper\n"                               ); -  printf("Usage:\n"                                               ); -  printf("Initialize: \t%s\n",      getPossibleActionName(strINIT)); -  printf("Add config: \t%s\n",       getPossibleActionName(strADD)); -  printf("Delete config: \t%s\n",    getPossibleActionName(strDEL)); -  printf("Edit config: \t%s\n",     getPossibleActionName(strEDIT)); -  printf("List configs: \t%s\n",    getPossibleActionName(strLIST)); -  printf("Search: \t%s\n",        getPossibleActionName(strSEARCH)); -  printf("Print this: \t%s\n",      getPossibleActionName(strHELP)); -  exit(0); +  char names[30]; +  printf("ck - the config keeper\n"); +  printf("Usage:\n"); +  getPossibleActionNames(names, CKA_INIT); +  printf("Initialize: \t%s\n",      names); +  getPossibleActionNames(names, CKA_ADD); +  printf("Add config: \t%s\n",       names); +  getPossibleActionNames(names, CKA_DEL); +  printf("Delete config: \t%s\n",    names); +  getPossibleActionNames(names, CKA_EDIT); +  printf("Edit config: \t%s\n",     names); +  getPossibleActionNames(names, CKA_LIST); +  printf("List configs: \t%s\n",    names); +  getPossibleActionNames(names, CKA_SEARCH); +  printf("Search: \t%s\n",        names); +  getPossibleActionNames(names, CKA_HELP); +  printf("Print this: \t%s\n",      names);  } diff --git a/src/actionparser.h b/src/actionparser.h index a097464..854624b 100644 --- a/src/actionparser.h +++ b/src/actionparser.h @@ -64,5 +64,6 @@ struct UserOptions {  extern ParseResult parseAction(int argc, char* argv[], UserOpt *opt);  extern void printParserError();  extern void printParserHelp(); +extern void free_user_opt(UserOpt *opt);  #endif // ACTIONPARSER_H diff --git a/src/actions.c b/src/actions.c index 881c299..71f27da 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1,52 +1,24 @@ +/* actions.c - ck actions --------------------------------------*- C -*- + * + * This file is part of ck, the config keeper + * + * ------------------------------------------------------------------ */  #include <stdio.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h>  #include "actions.h"  #include "dblayer.h" -int init_create_config_file(UserOpt *opt) { -  struct stat st = {0}; -  if (stat("/home/gramanas/.ck", &st)  == -1) { -    mkdir("/home/gramanas/.ck", 0755); -  } -   -  FILE *f; -  if ((f = fopen("/home/gramanas/.ck/ckrc", "w")) == NULL) { -    return 1; -  } -  char tmp[200]; -  if (stat(opt->argv[0], &st) == -1) { -    printf("Version control directory: %s\ndoes not exist.\n", opt->argv[0]); -    return 1; -  } -  strcpy(tmp, "version_control_dir = "); -  strcat(tmp, opt->argv[0]); -  strcat(tmp, "\n"); -  fputs(tmp, f); -  if (stat(opt->argv[1], &st) == -1) { -    printf("Secret directory: %s\ndoes not exist.\n", opt->argv[1]); -    return 1; -  } -  strcpy(tmp, "secret_dir = "); -  strcat(tmp, opt->argv[1]); -  strcat(tmp, "\n"); -  fputs(tmp, f); -  fclose(f); -  return 0; -}  int run_INIT(UserOpt * opt, Conf *conf) { -  if (db_exists()) { +  if (db_exists(opt)) { +    printf("conf dir: %s\n", opt->confDir);      printf("ck is already initialized.\n");      return 0;    }    if (init_create_config_file(opt)) {      return 0;    } -  DB db = init_make_DB(); +  DB db = init_make_DB(opt);    if (db.error == SQL_NO_ERR) {      init_make_tables(&db);    } diff --git a/src/checks.c b/src/checks.c deleted file mode 100644 index 80b1954..0000000 --- a/src/checks.c +++ /dev/null @@ -1,133 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <dirent.h> - -#include "checks.h" - - - -/* const char* const matchVCDirName = " version_control_dir = %s"; */ -/* const char* const matchSCRTDirName = " secret_dir = %s"; */ -/* const char* const matchDBDirName = " database_dir = %s"; */ - -/* ConfigParserResult parseConfigFile(FILE *f, Conf *c) { */ -/*   char *vc_dir, *scrt_dir, *db_dir; */ -/*   DIR *dir; */ -   -/*   char * buffer = 0; */ -/*   long length; */ -/*   if (f) { */ -/*     fseek(f, 0, SEEK_END); */ -/*     length = ftell (f); */ -/*     fseek(f, 0, SEEK_SET); */ -/*     buffer = malloc (length); */ -/*     if (buffer) { */ -/*       fread (buffer, 1, length, f); */ -/*       for (int i = 0; i < length; i++) { */ -/*         if (buffer[i] == '\n') { */ -/*           buffer[i] = ' '; */ -/*         } */ -/*       } */ -/*     } */ -/*     fclose (f); */ -/*   } */ -   -  /* if (buffer) { */ -  /*   // VC dir */ -  /*   vc_dir = malloc(sizeof(char)*100); */ -  /*   if (sscanf(buffer, matchVCDirName, vc_dir) != 1) { */ -  /*     return CPR_NO_VC_DIR; */ -  /*   } */ -  /*   dir = opendir(vc_dir); */ -  /*   if (!dir) { */ -  /*     return CPR_WRONG_VC_DIR; */ -  /*   } */ -  /*   closedir(dir); */ -  /*   c->VC_dir = vc_dir; */ - -/*     /\* printf("%s", buffer); *\/ */ -     -/*     // SCRT_dir */ -/*     scrt_dir = malloc(sizeof(char)*100); */ -/*     if(sscanf(buffer, matchSCRTDirName, scrt_dir) != 1) { */ -/*       return CPR_NO_SCRT_DIR; */ -/*     } */ -/*     dir = opendir(scrt_dir); */ -/*     if (!dir) { */ -/*       return CPR_WRONG_SCRT_DIR; */ -/*     } */ -/*     c->SCRT_dir = scrt_dir; */ - -/*     // DB_dir */ -/*     db_dir = malloc(sizeof(char)*100); */ -/*     if (sscanf(buffer, matchDBDirName, db_dir) != 1) { */ -/*       return CPR_NO_DB_DIR; */ -/*     } */ -/*     dir = opendir(db_dir); */ -/*     if (!dir) { */ -/*       return CPR_WRONG_DB_DIR; */ -/*     } */ -/*     c->DB_dir = db_dir;     */ -/*   } */ -/*   return CPR_OK; */ -/* } */ -     - -/* char *getConfigPath() { */ -/*   char *home = getenv("HOME"); */ -/*   char *path; */ -/*   if (home == NULL) { */ -/*     printf("HOME variable is not set. Can't find config."); */ -     -/*   } */ -/*   if ((path = malloc(strlen(home)+strlen(configFilename)+1 /\* for the slash *\/))) { */ -/*     strcat(path, home); */ -/*     strcat(path, "/"); */ -/*     strcat(path, configFilename); */ -/*   } */ -/*   return path; */ -/* } */ - -// -1 config file problem -// 0 config content problem -// 1 all good -/* int doConfigCheck(Conf *conf) { */ -/*   char* ckConfigPath = getConfigPath(); */ -/*   if (ckConfigPath == NULL) { */ -/*     return -1; */ -/*   } */ -/*   FILE *confPtr; */ -/*   if ((confPtr = fopen(ckConfigPath, "r")) == NULL){ */ -/*     return -1; */ -/*   } */ -/*   return 2; */ -/* } */ - -/* /\* CheckResult doInitCheck(Conf *conf) { */  -  /* switch (doConfigCheck(conf)) { */ -  /* case CPR_NO_VC_DIR: */ -  /*   printf("There is no VersionControl directory defined in the configuration file.\n"); */ -  /*   return CR_NO_CONFIG; */ -  /* case CPR_WRONG_VC_DIR: */ -  /*   printf("The VersionControl directory defined in the configuration file is wrong.\n"); */ -  /*   return CR_WRONG_CONFIG; */ -  /* case CPR_NO_SCRT_DIR: */ -  /*   printf("There is no Secret directory defined in the configuration file.\n"); */ -  /*   return CR_NO_CONFIG; */ -  /* case CPR_WRONG_SCRT_DIR: */ -  /*   printf("The Secret directory defined in the configuration file is wrong.\n"); */ -  /*   return CR_WRONG_CONFIG; */ -  /* case CPR_NO_DB_DIR: */ -  /*   printf("There is no Database directory defined in the configuration file.\n"); */ -  /*   return CR_NO_CONFIG; */ -  /* case CPR_WRONG_DB_DIR: */ -  /*   printf("The Database directory defined in the configuration file is wrong.\n"); */ -  /*   return CR_WRONG_CONFIG; */ -  /* case CPR_OK: */ -  /*   break; */ -  /* } */ -//  return 0; -  //doDbCheck(); -//} diff --git a/src/checks.h b/src/checks.h deleted file mode 100644 index c165c95..0000000 --- a/src/checks.h +++ /dev/null @@ -1,31 +0,0 @@ -/* optparser.h - Opt parser for ck -----------------------------*- C -*- - * - * This file is part of ck, the config keeper - * - * --------------------------------------------------------------------- - * - * The code here and in checks.c is responsible for checking - * if a database file is present and if the user has initialized - * ck before with correct VC_dir and SCRT_dir paths. - * - * It is called before the parsing of the user's arguments - * in order to make sure that everything is setup properly - * for the later operations. - * - * ------------------------------------------------------------------ */ -#ifndef CHECKS_H -#define CHECKS_H - -typedef enum CheckResults CheckResult; -enum CheckResults { -  CR_OK, -  CR_NO_CONFIG, -  CR_WRONG_CONFIG, -  CR_NO_DB -}; - - - -CheckResult doInitCheck(); - -#endif // CHECKS_H @@ -11,21 +11,24 @@ int main(int argc, char *argv[]) {    UserOpt opt;    switch(parseAction(argc, argv, &opt)) {    case OPR_HELP: +    free_user_opt(&opt);      printParserHelp(); +    return 0;    case OPR_ERR:      printParserError(&opt); +    free_user_opt(&opt); +    return 1;    case OPR_OK:      break;    } -  printf("%s\n", opt.confDir);    Conf conf;    if (opt.action != CKA_INIT) { -    if (!db_exists()) { -      printf("ck is not initialized.\nRun ck init first.\n"); +    if (!db_exists(&opt)) { +      printf("ck is not initialized in %s.\nRun ck init first.\n", opt.confDir);        return 1;      } -    if (!config_file_parse(&conf)) { +    if (!config_file_parse(&conf, &opt)) {        return 1;      }    } @@ -48,5 +51,6 @@ int main(int argc, char *argv[]) {      CK_ACTIONS  #undef X        } +  free_user_opt(&opt);    return 0;  } diff --git a/src/confparser.c b/src/confparser.c index d4d33f5..0edd155 100644 --- a/src/confparser.c +++ b/src/confparser.c @@ -1,11 +1,15 @@  #include <stdlib.h>  #include <string.h>  #include <stdio.h> -#include <dirent.h>  #include <ctype.h> +#include <dirent.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h>  #include "confparser.h" -const char* const configFilename = ".ckrc"; + +const char * const CONFIG_NAME = "/ckrc";  void conf_values_initialize(Conf *c) {    c->SCRT_dir = NULL; @@ -65,12 +69,24 @@ int is_dir(char *path) {    return 1;  } -ConfigParserResult parse(Conf *conf) { +char *make_config_name(char * confPath) { +  char *db_path = strdup(confPath); + +  db_path = realloc(db_path, strlen(confPath) + strlen(CONFIG_NAME)+1); +  strcat(db_path, CONFIG_NAME); + +  return db_path; +} + +ConfigParserResult parse(Conf *conf, UserOpt *opt) {    conf_values_initialize(conf);    FILE *confPtr; -  if ((confPtr = fopen("/home/gramanas/.ck/ckrc", "r")) == NULL) { +  char *confName = make_config_name(opt->confDir); +  if ((confPtr = fopen(confName, "r")) == NULL) { +    free(confName);      return CPR_NO_CONFIG_FILE;    } +  free(confName);    int flag = 1;    char *line = read_next_line(confPtr);    char matched[200]; @@ -78,9 +94,10 @@ ConfigParserResult parse(Conf *conf) {      switch(match_variables(line, matched)) {  #define X(var, str, name)                       \        case CV_##var:                            \ -        conf->var = malloc(strlen(matched));    \ +        conf->var = malloc(strlen(matched)+1);  \          strcpy(conf->var, matched);             \          if (!is_dir(matched)) {                 \ +          free(conf->var);                      \            return CPR_WRONG_##var;               \          }                                       \          break; @@ -105,8 +122,8 @@ ConfigParserResult parse(Conf *conf) {    return CPR_NO_CONFIG_FILE;  } -int config_file_parse(Conf *conf) { -  switch (parse(conf)) { +int config_file_parse(Conf *conf, UserOpt *opt) { +  switch (parse(conf, opt)) {  #define X(var,str,name)                                                 \      case CPR_WRONG_##var:                                               \        printf("Config error:\n"                                          \ @@ -125,3 +142,42 @@ int config_file_parse(Conf *conf) {      return 1;    }  } + +int init_create_config_file(UserOpt *opt) { +  struct stat st = {0}; +  char tmp[200]; +  if (stat(opt->argv[0], &st) == -1) { +    printf("Version control directory: %s\ndoes not exist.\n", opt->argv[0]); +    return 1; +  } + +  if (stat(opt->argv[1], &st) == -1) { +    printf("Secret directory: %s\ndoes not exist.\n", opt->argv[1]); +    return 1; +  } +   +  if (stat(opt->confDir, &st)  == -1) { +    mkdir(opt->confDir, 0755); +  } + +  char *confName = make_config_name(opt->confDir); +  FILE *f; +  if ((f = fopen(confName, "w")) == NULL) { +    free(confName); +    return 1; +  } +   +  strcpy(tmp, "version_control_dir = "); +  strcat(tmp, opt->argv[0]); +  strcat(tmp, "\n"); +  fputs(tmp, f); + +  strcpy(tmp, "secret_dir = "); +  strcat(tmp, opt->argv[1]); +  strcat(tmp, "\n"); +  fputs(tmp, f); +  fclose(f); + +  free(confName); +  return 0; +} diff --git a/src/confparser.h b/src/confparser.h index 2ed8f82..197ff3a 100644 --- a/src/confparser.h +++ b/src/confparser.h @@ -8,6 +8,9 @@   * ------------------------------------------------------------------ */  #ifndef CONFPARSER_H  #define CONFPARSER_H + +#include "actionparser.h" +  #define CONFIG_VARIABLES_TABLE                                          \    X(VC_dir,   " version_control_dir = %s ", "Version Control directory") \    X(SCRT_dir, " secret_dir = %s "         , "Secret directory") @@ -40,6 +43,7 @@ struct ConfigValues {  };  #undef X -extern int config_file_parse(Conf *conf); +extern int config_file_parse(Conf *conf, UserOpt *opt); +extern int init_create_config_file(UserOpt *opt);  #endif // CONFPARSER_H diff --git a/src/dblayer.c b/src/dblayer.c index 180cd93..a40fd85 100644 --- a/src/dblayer.c +++ b/src/dblayer.c @@ -6,17 +6,30 @@  #include <stdio.h>  #include <stdlib.h>  #include <string.h> +#include <unistd.h>  #include "dblayer.h" -int db_exists() { -  FILE *db_file; +const char * const DB_NAME = "/ckdb"; -  if ((db_file = fopen("/home/gramanas/.ck/ckdb", "rb")) == NULL) { -    return 0; +char *make_db_name(char * confPath) { +  char *db_path = strdup(confPath); +   +  db_path = realloc(db_path, strlen(confPath)+strlen(DB_NAME)+1); +  strcat(db_path, DB_NAME); + +  return db_path; +} + +int db_exists(UserOpt *opt) { +  char *db_path = make_db_name(opt->confDir); +  int ret; +  ret = 0; +  if (access(db_path, F_OK) == 0) { +    ret = 1;    } -  fclose(db_file); -  return 1; +  free(db_path); +  return ret;  }  // check if db has the correct tables @@ -62,24 +75,27 @@ void close_DB(DB *db) {    sqlite3_close(db->ptr);  } -DB init_make_DB() { +DB init_make_DB(UserOpt *opt) {    sqlite3 *db;    int rc; -  rc = sqlite3_open("/home/gramanas/.ck/ckdb", &db); - -  if (rc) { +  char *db_path = make_db_name(opt->confDir); +  rc = sqlite3_open(db_path, &db); +  free(db_path); +  if (rc != SQLITE_OK) {      return empty_DB(SQL_ERR_NO_DB_FILE);    }    return new_DB(db);  } -DB open_DB() { +DB open_DB(UserOpt *opt) {    sqlite3 *db;    int rc; -  rc = sqlite3_open("/home/gramanas/.ck/ckdb", &db); +  char *db_path = make_db_name(opt->confDir);   +  rc = sqlite3_open(db_path, &db); +  free(db_path);    if (rc) {      return empty_DB(SQL_ERR_NO_DB_FILE); diff --git a/src/dblayer.h b/src/dblayer.h index e5c0b73..8a57dca 100644 --- a/src/dblayer.h +++ b/src/dblayer.h @@ -11,6 +11,8 @@  #include <sqlite3.h> +#include "actionparser.h" +  typedef enum SqlErrors SqlError;  enum SqlErrors {    SQL_NO_ERR = 0, @@ -25,7 +27,7 @@ struct DBstruct {    SqlError error;  }; -extern int db_exists(); +extern int db_exists(UserOpt *opt);  extern DB open_DB();  extern void close_DB(DB *DB); diff --git a/src/tests/check_ck b/src/tests/check_ck deleted file mode 100755 index 3fd2369..0000000 --- a/src/tests/check_ck +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -DIR=@BIN_TEST_DIR@ -for i in $( ls $DIR ); do -    ERROR="TEST "$i" FAILED:" -    PASS="TEST "$i" PASSED" -    source $DIR/$i -done diff --git a/src/tests/init b/src/tests/init deleted file mode 100755 index 4f78802..0000000 --- a/src/tests/init +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -BIN=/build/ck - -TEST_LOCATION=@PROJECT_TESTING_GROUNDS@ -mkdir -p $TEST_LOCATION/vc -mkdir $TEST_LOCATION/sec - -exec $BIN/ck init $TEST_LOCATION/vc $TEST_LOCATION/sec & -wait $! - -if [ ! -f ~/.ck/ckrc ]; then -    echo -e $ERROR"Config file not created." -    exit 1 -fi - -if [ ! -f ~/.ck/ckdb ]; then -    echo -e $ERROR"DB file not created." -    exit 1 -fi - -rm -rf $HOME/.ck -rm -rf $TEST_LOCATION -echo -e $PASS  | 
