]> git.deb.at Git - pkg/abook.git/blobdiff - database.c
cancel key support added
[pkg/abook.git] / database.c
index 1577966471f4e7e2ab2636562c8cd81ad3f603ce..8b22602e03b6a2a60121904a6cf2ae05f2fb22ad 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * $Id$
  *
- * by JH <jheinonen@bigfoot.com>
+ * by JH <jheinonen@users.sourceforge.net>
  *
  * Copyright (C) Jaakko Heinonen
  */
@@ -58,6 +58,7 @@ struct abook_field abook_fields[ITEM_FIELDS] = {
        {"Name",        "name",         TAB_CONTACT},/* NAME */
        {"E-mails",     "email",        TAB_CONTACT},/* EMAIL */
        {"Address",     "address",      TAB_ADDRESS},/* ADDRESS */
+       {"Address2",    "address2",     TAB_ADDRESS},/* ADDRESS2 */   
        {"City",        "city",         TAB_ADDRESS},/* CITY */
        {"State/Province","state",      TAB_ADDRESS},/* STATE */
        {"ZIP/Postal Code","zip",       TAB_ADDRESS},/* ZIP */
@@ -107,9 +108,12 @@ parse_database(FILE *in)
                } else if((tmp = strchr(line, '=') ) && sec ) {
                        *tmp++ = '\0';
                        for(i=0; i<ITEM_FIELDS; i++)
-                               if( !strcmp(abook_fields[i].key, line) )
+                               if( !strcmp(abook_fields[i].key, line) ) {
                                        item[i] = strdup(tmp);
+                                       goto next;
+                               }
                }
+next:
                free(line);
        }
 
@@ -132,10 +136,7 @@ load_database(char *filename)
        
        parse_database(in);
 
-       if ( items == 0 )
-               return 2;
-
-       return 0;
+       return (items == 0) ? 2 : 0;
 }
 
 int
@@ -144,15 +145,17 @@ write_database(FILE *out, struct db_enumerator e)
        int j;
        int i = 0;
 
-       fprintf(out, "# abook addressbook file\n\n");
-       fprintf(out, "[format]\n");
-       fprintf(out, "program=" PACKAGE "\n");
-       fprintf(out, "version=" VERSION "\n");
-       fprintf(out, "\n\n");
+       fprintf(out,
+               "# abook addressbook file\n\n"
+               "[format]\n"
+               "program=" PACKAGE "\n"
+               "version=" VERSION "\n"
+               "\n\n"
+       );
 
        db_enumerate_items(e) {
                fprintf(out, "[%d]\n", i);
-               for(j=0; j<ITEM_FIELDS; j++) {
+               for(j = 0; j < ITEM_FIELDS; j++) {
                        if( database[e.item][j] != NULL &&
                                        *database[e.item][j] )
                                fprintf(out, "%s=%s\n",
@@ -226,7 +229,7 @@ close_database()
 
 #define _MAX_FIELD_LEN(X)      (X == EMAIL ? MAX_EMAILSTR_LEN:MAX_FIELD_LEN)
 
-inline static void
+static void
 validate_item(list_item item)
 {
        int i;
@@ -236,7 +239,7 @@ validate_item(list_item item)
                item[EMAIL] = strdup("");
 
        for(i=0; i<ITEM_FIELDS; i++)
-               if( item[i] && (strlen(item[i]) > _MAX_FIELD_LEN(i) ) ) {
+               if( item[i] && ((int)strlen(item[i]) > _MAX_FIELD_LEN(i) ) ) {
                        tmp = item[i];
                        item[i][_MAX_FIELD_LEN(i)-1] = 0;
                        item[i] = strdup(item[i]);
@@ -257,9 +260,9 @@ adjust_list_capacity()
        else
                return;
 
-       database = abook_realloc(database,
+       database = (list_item *)abook_realloc(database,
                        sizeof(list_item) * list_capacity);
-       selected = abook_realloc(selected, list_capacity);
+       selected = (char *)abook_realloc(selected, list_capacity);
 }
 
 int
@@ -345,8 +348,8 @@ surnamecmp(const void *i1, const void *i2)
        s1 = get_surname(a[NAME]);
        s2 = get_surname(b[NAME]);
 
-       if( !(ret = safe_strcmp(s1, s2)) )
-               ret = safe_strcmp(a[NAME], b[NAME]);
+       if( !(ret = safe_strcoll(s1, s2)) )
+               ret = safe_strcoll(a[NAME], b[NAME]);
 
        free(s1);
        free(s2);
@@ -362,7 +365,7 @@ namecmp(const void *i1, const void *i2)
        itemcpy(a, i1);
        itemcpy(b, i2);
        
-       return safe_strcmp( a[NAME], b[NAME] );
+       return safe_strcoll( a[NAME], b[NAME] );
 }
 
 void
@@ -465,10 +468,10 @@ out:
 struct db_enumerator
 init_db_enumerator(int mode)
 {
-       struct db_enumerator new;
+       struct db_enumerator e;
 
-       new.item = -1; /* important - means "start from beginning" */
-       new.mode = mode;
+       e.item = -1; /* important - means "start from beginning" */
+       e.mode = mode;
 
-       return new;
+       return e;
 }