]> git.deb.at Git - pkg/abook.git/blobdiff - abook.c
wide character support
[pkg/abook.git] / abook.c
diff --git a/abook.c b/abook.c
index d4de3ec5679d71620fa311c790998618ec03072e..fe37f71469d861e444d1e3de3595af0daa99957e 100644 (file)
--- a/abook.c
+++ b/abook.c
@@ -6,9 +6,10 @@
  * Copyright (C) Jaakko Heinonen
  */
 
-#include <string.h>
+#include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/stat.h>
 #include <signal.h>
 #include <fcntl.h>
@@ -104,7 +105,10 @@ init_abook()
        set_filenames();
        check_abook_directory();
        init_opts();
-       load_opts(rcfile);
+       if(load_opts(rcfile) > 0) {
+               printf("Press enter to continue...\n");
+               fgetc(stdin);
+       }
 
        signal(SIGKILL, quit_abook_sig);
        signal(SIGTERM, quit_abook_sig);
@@ -134,12 +138,15 @@ init_abook()
 }
 
 void
-quit_abook()
+quit_abook(int save_db)
 {
-       if( opt_get_bool(BOOL_AUTOSAVE) )
-               save_database();
-       else if( statusline_ask_boolean("Save database", TRUE) )
-               save_database();
+       if(save_db)  {
+               if(opt_get_bool(BOOL_AUTOSAVE))
+                       save_database();
+               else if(statusline_ask_boolean("Save database", TRUE))
+                       save_database();
+       } else if(!statusline_ask_boolean("Quit without saving", FALSE))
+               return;
 
        free_opts();
        close_database();
@@ -152,14 +159,14 @@ quit_abook()
 static void
 quit_abook_sig(int i)
 {
-       quit_abook();
+       quit_abook(QUIT_SAVE);
 }
 
 int
 main(int argc, char **argv)
 {
 #if defined(HAVE_SETLOCALE) && defined(HAVE_LOCALE_H)
-       setlocale(LC_ALL, "" );
+       setlocale(LC_ALL, "");
 #endif
 
        parse_command_line(argc, argv);
@@ -168,7 +175,7 @@ main(int argc, char **argv)
 
        get_commands(); 
 
-       quit_abook();
+       quit_abook(QUIT_SAVE);
 
        return 0;
 }
@@ -448,7 +455,7 @@ mutt_query(char *str)
                putchar('\n');
                while(i >= 0) {
                        muttq_print_item(stdout, i);
-                       i = find_item(str, i+1, search_fields);
+                       i = find_item(str, i + 1, search_fields);
                }
        }
 
@@ -527,8 +534,7 @@ launch_mutt(int item)
                }
        }
 
-       cmd = strconcat(mutt_command, " \'", mailstr,
-                               "\'", NULL);
+       cmd = strconcat(mutt_command, " \'", mailstr, "\'", NULL);
        free(mailstr);
 #ifdef DEBUG
        fprintf(stderr, "cmd: %s\n", cmd);
@@ -575,7 +581,7 @@ abook_malloc(size_t size)
 
        if ( (ptr = malloc(size)) == NULL ) {
                if( is_ui_initialized() )
-                       quit_abook();
+                       quit_abook(QUIT_SAVE);
                perror("malloc() failed");
                exit(1);
        }
@@ -588,12 +594,12 @@ abook_realloc(void *ptr, size_t size)
 {
        ptr = realloc(ptr, size);
 
-       if( size == 0 )
+       if(size == 0)
                return NULL;
 
-       if( ptr == NULL ) {
-               if( is_ui_initialized() )
-                       quit_abook();
+       if(ptr == NULL) {
+               if(is_ui_initialized())
+                       quit_abook(QUIT_SAVE);
                perror("realloc() failed");
                exit(1);
        }
@@ -639,7 +645,7 @@ convert(char *srcformat, char *srcfile, char *dstformat, char *dstfile)
        init_opts();
        load_opts(rcfile);
 
-       switch( import_file(srcformat, srcfile) ) {
+       switch(import_file(srcformat, srcfile)) {
                case -1:
                        fprintf(stderr,
                                "input format %s not supported\n", srcformat);
@@ -652,7 +658,7 @@ convert(char *srcformat, char *srcfile, char *dstformat, char *dstfile)
        }
 
        if(!ret)
-               switch( export_file(dstformat, dstfile) ) {
+               switch(export_file(dstformat, dstfile)) {
                        case -1:
                                fprintf(stderr,
                                        "output format %s not supported\n",
@@ -704,6 +710,7 @@ init_add_email()
 {
        set_filenames();
        atexit(free_filenames);
+       check_abook_directory();
        init_opts();
        load_opts(rcfile);
        atexit(free_opts);
@@ -771,7 +778,7 @@ add_email(int quiet)
        char *name = NULL, *email = NULL;
        struct stat s;
 
-       if( (fstat(fileno(stdin), &s)) == -1 || S_ISDIR(s.st_mode)) {
+       if( (fstat(fileno(stdin), &s)) == -1 || S_ISDIR(s.st_mode) ) {
                fprintf(stderr, "stdin is a directory or cannot stat stdin\n");
                exit(1);
        }