]> git.deb.at Git - pkg/abook.git/blobdiff - filter.c
Revert "Add fix_spelling_error_in_binary.diff patch"
[pkg/abook.git] / filter.c
index dca51b804e79495580c3af03dedfcf477e7a0cf4..2cb145ce9e9e0965d1d624bdeace1171b296c6f5 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -1069,23 +1069,26 @@ html_export_database(FILE *out, struct db_enumerator e)
        html_export_write_head(out);
 
        db_enumerate_items(e) {
-               fprintf(out, "<tr>");
+               fprintf(out, " <tr>\n");
                for(cur = index_elements; cur; cur = cur->next) {
                        if(cur->type != INDEX_FIELD)
                                continue;
-
+                       
                        get_list_field(e.item, cur, &f);
 
+                       fprintf(out, "  <td>");
+
                        if(f.type == FIELD_EMAILS) {
-                               fprintf(out, "<td>");
                                html_print_emails(out, &f);
-                               fprintf(out, "</td>");
-                               continue;
                        } else {
-                               fprintf(out, "<td>%s</td>", safe_str(f.data));
+                               if (strcmp(safe_str(f.data), "") == 0)
+                                       fprintf(out, "&nbsp;");
+                               else
+                                       fprintf(out, "%s", safe_str(f.data));
                        }
+                       fprintf(out, "</td>\n");
                }
-               fprintf(out, "</tr>\n");
+               fprintf(out, " </tr>\n");
        }
 
        html_export_write_tail(out);
@@ -1099,22 +1102,45 @@ html_export_write_head(FILE *out)
        char *realname = get_real_name(), *str;
        struct index_elem *cur;
 
-       fprintf(out, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n");
-       fprintf(out, "<html>\n<head>\n <title>%s's addressbook</title>",
-                       realname );
-       fprintf(out, "\n</head>\n<body>\n");
-       fprintf(out, "\n<h2>%s's addressbook</h2>\n", realname );
-       fprintf(out, "<br><br>\n\n");
-
-       fprintf(out, "<table border=\"1\" align=\"center\">\n<tr>");
+       fprintf(out, "<!DOCTYPE html>\n");
+       fprintf(out, "<html>\n");
+       fprintf(out, "<head>\n");
+       fprintf(out, " <meta charset=\"utf-8\" />\n");
+       fprintf(out, " <title>");
+       fprintf(out, _("%s's addressbook"), realname );
+       fprintf(out, "</title>\n");
+       fprintf(out, " <style type=\"text/css\">\n");
+       fprintf(out, "  table {border-collapse: collapse ; border: 1px solid #000;}\n");
+       fprintf(out, "  table th, table td {text-align: left; border: 1px solid #000; padding: 0.33em;}\n");
+       fprintf(out, "  table th {border-bottom: 3px double #000; background-color: #ccc;}\n");
+       fprintf(out, " </style>\n");
+       fprintf(out, "</head>\n");
+       fprintf(out, "<body>\n");
+       fprintf(out, "<h1>");
+       fprintf(out, _("%s's addressbook"), realname);
+       fprintf(out, "</h1>\n");
+
+       fprintf(out, "<table>\n");
+       fprintf(out, "<thead>\n");
+       fprintf(out, " <tr>\n");
        for(cur = index_elements; cur; cur = cur->next) {
                if(cur->type != INDEX_FIELD)
                        continue;
 
                get_field_info(cur->d.field.id, NULL, &str, NULL);
-               fprintf(out, "<th>%s</th>", str);
+
+               fprintf(out, "  <th>");
+
+               if (strcmp(str, "") == 0)
+                       fprintf(out, "&nbsp;");
+               else
+                       fprintf(out, "%s", str);
+
+               fprintf(out, "</th>\n");
        }
-       fprintf(out, "</tr>\n\n");
+       fprintf(out, " </tr>\n");
+       fprintf(out, "<thead>\n");
+       fprintf(out, "<tbody>\n");
 
        free(realname);
 }
@@ -1122,8 +1148,9 @@ html_export_write_head(FILE *out)
 static void
 html_export_write_tail(FILE *out)
 {
-       fprintf(out, "\n</table>\n");
-       fprintf(out, "\n</body>\n</html>\n");
+       fprintf(out, "</table>\n");
+       fprintf(out, "</body>\n");
+       fprintf(out, "</html>");
 }
 
 /*
@@ -2535,6 +2562,14 @@ bsdcal_export_database(FILE *out, struct db_enumerator e)
        return 0;
 }
 
+/*
+ * end of BSD calendar export filter
+ */
+
+/*
+ * custom export filter
+ */
+
 static int
 find_field_enum(char *s) {
        int i = -1;
@@ -2619,8 +2654,7 @@ parse_custom_format(char *s, char *fmt_string, enum field_types *ft)
 
  cannotparse:
        fprintf(stderr, _("%s: invalid format, index %ld\n"), __FUNCTION__, (start - s));
-       free(fmt_string);
-       while(*ft) free(ft--);
+       free(ft);
        exit(EXIT_FAILURE);
 }
 
@@ -2628,10 +2662,12 @@ static int
 custom_export_item(FILE *out, int item, char *s, enum field_types *ft);
 
 
-// used to store the format string from --outformatstr when "custom" format is used
-// default value overriden in export_file()
-extern char *parsed_custom_format;
-extern enum field_types *custom_format_fields;
+// stores the format string generated from --outformatstr {custom_format}
+// (when "custom" output format is requested)
+// overrides default value of custom_format set by from abook.c
+extern char custom_format[FORMAT_STRING_LEN];
+char parsed_custom_format[FORMAT_STRING_LEN];
+enum field_types *custom_format_fields = 0;
 
 /* wrapper for custom_export_item:
    1) avoid messing with extern pointer
@@ -2689,29 +2725,20 @@ custom_export_item(FILE *out, int item, char *fmt, enum field_types *ft)
   return 0;
 }
 
-// used to store the format string from --outformatstr when "custom" format is used
-// default value overriden from abook.c
-extern char custom_format[FORMAT_STRING_LEN];
-
 static int
 custom_export_database(FILE *out, struct db_enumerator e)
 {
-       char *format_string =
-         (char *)malloc(FORMAT_STRING_LEN * sizeof(char*));
-
        enum field_types *ft =
-         (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types *));
-
-       parse_custom_format(custom_format, format_string, ft);
+         (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types));
 
+       parse_custom_format(custom_format, (char*)&parsed_custom_format, ft);
        db_enumerate_items(e) {
-         if(custom_export_item(out, e.item, format_string, ft) == 0)
+         if(custom_export_item(out, e.item, (char*)&parsed_custom_format, ft) == 0)
            fprintf(out, "\n");
        }
        return 0;
 }
 
 /*
- * end of BSD calendar export filter
+ * end of custom export filter
  */
-