diff options
author | gramanas <anastasis.gramm2@gmail.com> | 2018-05-02 14:08:14 +0300 |
---|---|---|
committer | gramanas <anastasis.gramm2@gmail.com> | 2018-05-02 14:08:14 +0300 |
commit | ac8a32e855b078e137fe5de4c2bbf9628c004532 (patch) | |
tree | 0a72c0b7582f2de4c5e2c95779f7337c4f5b5f3b /src/actions.c | |
parent | a28ef5a070463f31029ae1515e9e0bd703522447 (diff) | |
download | ck-ac8a32e855b078e137fe5de4c2bbf9628c004532.tar.gz ck-ac8a32e855b078e137fe5de4c2bbf9628c004532.tar.bz2 ck-ac8a32e855b078e137fe5de4c2bbf9628c004532.zip |
Basic config editting
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/src/actions.c b/src/actions.c index 318c86b..3a4d8ac 100644 --- a/src/actions.c +++ b/src/actions.c @@ -111,6 +111,7 @@ int run_ADD(UserOpt * opt, Conf *conf) { } add_print_opts(&addOpt); if (add_transaction_begin(&db, &addOpt) == 0) { + close_DB(&db); return 0; } close_DB(&db); @@ -128,12 +129,41 @@ int run_DEL(UserOpt * opt, Conf *conf) { return 0; } -int run_EDIT(UserOpt * opt, Conf *conf) { +int run_EDIT(UserOpt *opt, Conf *conf) { printf("Running %s\n", "edit"); - return 0; + DB db = open_DB(opt); + if (db.ptr == NULL) { + if (db.error == SQL_ERR_NO_TABLES) { + PRINT_ERR("The database file is currupted. Run ck init anew."); + } + return 0; + } + + char confPath[STR_M]; + if (opt->argc == 1) { + char confName[STR_M]; + int secret = 0; + if (edit_get_prime_config_from_program(&db, opt->argv[0], confName, &secret) == 1) { + str_join_dirname_with_basename(confPath, secret ? conf->SCRT_dir : conf->VC_dir, confName); + printf("%s\n", confPath); + } else { + PRINT_ERR("No primary config"); + close_DB(&db); + return 0; + } + } + close_DB(&db); + + char *editor = getenv("EDITOR"); + char command[STR_L]; + strcpy(command, str_is_empty(editor) ? "nano" : editor); + strcat(command, " "); + strcat(command, confPath); + system(command); + return 1; } -int run_LIST(UserOpt * opt, Conf *conf) { +int run_LIST(UserOpt *opt, Conf *conf) { printf("Running %s\n", "list"); DB db = open_DB(opt); if (db.ptr == NULL) { @@ -149,12 +179,12 @@ int run_LIST(UserOpt * opt, Conf *conf) { return 0; } -int run_SEARCH(UserOpt * opt, Conf *conf) { +int run_SEARCH(UserOpt *opt, Conf *conf) { printf("Running %s\n", "search"); return 0; } -int run_HELP(UserOpt * opt, Conf *conf) { +int run_HELP(UserOpt *opt, Conf *conf) { printf("Running %s\n", "help"); return 0; } |