summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorb0ric <b0risov.alexandr@rambler.ru>2009-08-18 20:45:05 +0300
committerb0ric <b0risov.alexandr@rambler.ru>2009-08-18 20:45:05 +0300
commit7742a666d5ac98ea3a976336cf60a5530ab29e73 (patch)
treef985cda18f15f8a13feb5c10d17c5cc7a952f23a /src/main.c
parente5165d9838d03963284710e6b957fe9a3b0e267a (diff)
Autotools supportHEADmaster
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c182
1 files changed, 182 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..8ffced8
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,182 @@
+/*
+ * This file is part of WordExtract.
+ *
+ * Copyright (C) 2009 Borisov Alexandr
+ *
+ * WordExtract is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * WordExtract is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with WordExtract. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "main.h"
+#include "mainwin.h"
+#include "dict.h"
+#include "engparser.h"
+
+Language lang;
+SaveOpt save_user_words = {2, 40};
+char optpath[PATH_LENGTH] = {0};
+char dictfile[PATH_LENGTH] = {0};
+char conffile[PATH_LENGTH] = {0};
+
+static void fill_vars();
+
+int main(int argc, char *argv[])
+{
+ FILE *fdict;
+
+ gtk_init(&argc, &argv);
+ fill_vars();
+ dict = load_dict();
+ lang = ENG;
+ create_main_window();
+ gtk_widget_show(main_window);
+ gtk_main();
+
+ /*termination*/
+ if (!(fdict = fopen(dictfile, "w")))
+ perror(dictfile);
+ else {
+ save_dict(fdict, dict);
+ fclose(fdict);
+ }
+ if (dict_words.by_az)
+ free(dict_words.by_az);
+ if (user_words.by_az)
+ free(user_words.by_az);
+ if (dict) {
+ if (dict->lsibl)
+ free_words(dict->lsibl);
+ if (dict->rsibl)
+ free_words(dict->rsibl);
+ free(dict->word);
+ }
+ return 0;
+}
+
+static void fill_vars()
+{
+ strcpy(optpath, getenv("HOME"));
+ strcat(optpath, OPT_FOLDER);
+ strcat(dictfile, optpath);
+ strcat(dictfile, DICT_FILE);
+ strcat(conffile, optpath);
+ strcat(conffile, CONF_FILE);
+ read_config();
+}
+
+void create_config(char *path)
+{
+ mode_t mode_0755 = S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH;
+ struct stat st;
+ FILE *conf;
+ char file[PATH_LENGTH] = {0};
+
+ if (stat(path, &st)) {
+ fprintf(stderr, "%s: Creating directory\n", path);
+ if (mkdir(path, mode_0755)) {
+ perror(path);
+ exit(1);
+ }
+ }
+ strcat(file, path);
+ strcat(file, CONF_FILE);
+ fprintf(stderr, "%s: Creating configuration file\n", file);
+ if (!(conf = fopen(file, "w"))) {
+ perror(file);
+ exit(1);
+ }
+ fclose(conf);
+}
+
+void read_config()
+{
+ FILE *conf;
+
+ if (!(conf = fopen(conffile, "r"))) {
+ perror(conffile);
+ create_config(optpath);
+ write_config();
+ if (!(conf = fopen(dictfile, "r"))) {
+ perror(conffile);
+ exit(1);
+ }
+ } else {
+ char option[OPTION_LENGTH] = {0};
+ char svalue[OPTION_LENGTH] = {0};
+ while (fscanf(conf, "%s\t\t%s\n", option, svalue) != EOF) {
+ if (!strcmp(option, "columns")) {
+ save_user_words.columns = atoi(svalue);
+ } else if (!strcmp(option, "field")) {
+ save_user_words.col_width = atoi(svalue);
+ } else if (!strcmp(option, "language")) {
+ lang = atoi(svalue);
+ } else if (!strcmp(option, "exclude_with_capital")) {
+ excl_w_capital = atoi(svalue);
+ } else if (!strcmp(option, "lower_first_capital")) {
+ lower_first_capital = atoi(svalue);
+ } else if (!strcmp(option, "exclude_quoted")) {
+ quote.excl_symbolled = atoi(svalue);
+ } else if (!strcmp(option, "exclude_with_first_quote")) {
+ quote.excl_w_starting = atoi(svalue);
+ } else if (!strcmp(option, "exclude_with_middle_quote")) {
+ quote.excl_w_middle = atoi(svalue);
+ } else if (!strcmp(option, "exclude_part_after_quote")) {
+ quote.excl_word_after_symb = atoi(svalue);
+ } else if (!strcmp(option, "exclude_with_end_quote")) {
+ quote.excl_w_ending = atoi(svalue);
+ } else if (!strcmp(option, "exclude_hyphened")) {
+ hyphen.excl_symbolled = atoi(svalue);
+ } else if (!strcmp(option, "exclude_with_first_hyphen")) {
+ hyphen.excl_w_starting = atoi(svalue);
+ } else if (!strcmp(option, "exclude_with_middle_hyphen")) {
+ hyphen.excl_w_middle = atoi(svalue);
+ } else if (!strcmp(option, "exclude_part_after_hyphen")) {
+ hyphen.excl_word_after_symb = atoi(svalue);
+ } else if (!strcmp(option, "exclude_with_end_hyphen")) {
+ hyphen.excl_w_ending = atoi(svalue);
+ }
+ }
+ fclose(conf);
+ }
+}
+
+void write_config()
+{
+ FILE *conf;
+
+ if (!(conf = fopen(conffile, "w")))
+ perror(conffile);
+ else {
+ fprintf(conf, "%s\t\t%d\n", "columns", save_user_words.columns);
+ fprintf(conf, "%s\t\t%d\n", "field", save_user_words.col_width);
+ fprintf(conf, "%s\t\t%d\n", "language", lang);
+ fprintf(conf, "%s\t\t%d\n", "exclude_with_capital", excl_w_capital);
+ fprintf(conf, "%s\t\t%d\n", "lower_first_capital", lower_first_capital);
+ fprintf(conf, "%s\t\t%d\n", "exclude_quoted", quote.excl_symbolled);
+ fprintf(conf, "%s\t\t%d\n", "exclude_with_first_quote", quote.excl_w_starting);
+ fprintf(conf, "%s\t\t%d\n", "exclude_with_middle_quote", quote.excl_w_middle);
+ fprintf(conf, "%s\t\t%d\n", "exclude_part_after_quote", quote.excl_word_after_symb);
+ fprintf(conf, "%s\t\t%d\n", "exclude_with_end_quote", quote.excl_w_ending);
+ fprintf(conf, "%s\t\t%d\n", "exclude_hyphened", hyphen.excl_symbolled);
+ fprintf(conf, "%s\t\t%d\n", "exclude_with_first_hyphen", hyphen.excl_w_starting);
+ fprintf(conf, "%s\t\t%d\n", "exclude_with_middle_hyphen", hyphen.excl_w_middle);
+ fprintf(conf, "%s\t\t%d\n", "exclude_part_after_hyphen", hyphen.excl_word_after_symb);
+ fprintf(conf, "%s\t\t%d\n", "exclude_with_end_hyphen", hyphen.excl_w_ending);
+ fclose(conf);
+ }
+}
+