[balsa] Replace custom macro with Glib



commit 62fa27672594f5a91212524ccb3f7d2f7774bc79
Author: Albrecht Dreß <albrecht dress arcor de>
Date:   Fri Nov 30 14:19:08 2018 -0500

    Replace custom macro with Glib
    
    Replace custom ELEMENTS macro with Glib G_N_ELEMENTS
    
    * libbalsa/filter-funcs.c (libbalsa_condition_new_from_string),
      (append_header_names), (append_flag_names):
    * libbalsa/identity.c (md_sig_path_changed):
    * libbalsa/imap/imap-commands.c (need_fetch), (imap_mbox_status),
      (enum_flag_to_str):
    * libbalsa/imap/imap-handle.c (ir_capability_data),
      (ir_resp_text_code), (ir_list_lsub), (ir_status),
      (ir_msg_att_flags), (ir_fetch_seq), (ir_handle_response):
    * libbalsa/libbalsa.h:
    * libbalsa/mailbox.c (mbox_model_get_value):
    * src/balsa-index.c (bndx_instance_init), (bndx_popup_menu_create):
    * src/balsa-mblist.c (balsa_mblist_default_signal_bindings):
    * src/filter-edit-callbacks.c (build_condition_dialog):
    * src/filter-edit-dialog.c (build_match_page), (build_action_page):
    * src/main-window.c (bw_create_index_widget):
    * src/sendmsg-window.c (find_locale_index_by_locale),
      (create_email_entry), (sw_attachment_list), (create_text_area),
      (create_lang_menu):
    * src/toolbar-factory.c:
    
    Signed-off-by: Peter Bloomfield <PeterBloomfield bellsouth net>

 ChangeLog                     | 24 ++++++++++++++++++++++++
 libbalsa/filter-funcs.c       |  6 +++---
 libbalsa/identity.c           |  3 +--
 libbalsa/imap/imap-commands.c | 10 ++++------
 libbalsa/imap/imap-handle.c   | 17 ++++++++---------
 libbalsa/libbalsa.h           |  2 --
 libbalsa/mailbox.c            |  2 +-
 src/balsa-index.c             |  4 ++--
 src/balsa-mblist.c            |  2 +-
 src/filter-edit-callbacks.c   |  2 +-
 src/filter-edit-dialog.c      |  4 ++--
 src/main-window.c             |  4 ++--
 src/sendmsg-window.c          | 14 +++++++-------
 src/toolbar-factory.c         |  3 +--
 14 files changed, 57 insertions(+), 40 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index d5ca26bd9..2fa39378c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2018-11-30  Albrecht Dreß  <albrecht dress arcor de>
+
+       Replace custom ELEMENTS macro with Glib G_N_ELEMENTS
+
+       * libbalsa/filter-funcs.c (libbalsa_condition_new_from_string),
+       (append_header_names), (append_flag_names):
+       * libbalsa/identity.c (md_sig_path_changed):
+       * libbalsa/imap/imap-commands.c (need_fetch), (imap_mbox_status),
+       (enum_flag_to_str):
+       * libbalsa/imap/imap-handle.c (ir_capability_data),
+       (ir_resp_text_code), (ir_list_lsub), (ir_status),
+       (ir_msg_att_flags), (ir_fetch_seq), (ir_handle_response):
+       * libbalsa/libbalsa.h:
+       * libbalsa/mailbox.c (mbox_model_get_value):
+       * src/balsa-index.c (bndx_instance_init), (bndx_popup_menu_create):
+       * src/balsa-mblist.c (balsa_mblist_default_signal_bindings):
+       * src/filter-edit-callbacks.c (build_condition_dialog):
+       * src/filter-edit-dialog.c (build_match_page), (build_action_page):
+       * src/main-window.c (bw_create_index_widget):
+       * src/sendmsg-window.c (find_locale_index_by_locale),
+       (create_email_entry), (sw_attachment_list), (create_text_area),
+       (create_lang_menu):
+       * src/toolbar-factory.c:
+
 2018-11-30  Albrecht Dreß  <albrecht dress arcor de>
 
        Fix confusing signature info
diff --git a/libbalsa/filter-funcs.c b/libbalsa/filter-funcs.c
index 77d8f318e..859c8b127 100644
--- a/libbalsa/filter-funcs.c
+++ b/libbalsa/filter-funcs.c
@@ -300,7 +300,7 @@ libbalsa_condition_new_from_string(gchar **string)
         *string += 4;
     } else negated = FALSE;
 
-    for(i=0; i<ELEMENTS(cond_types); i++)
+    for(i=0; i<G_N_ELEMENTS(cond_types); i++)
         if(strncmp(*string, cond_types[i].key, cond_types[i].keylen) == 0) {
             *string += cond_types[i].keylen;
             return cond_types[i].parser(negated, string);
@@ -390,7 +390,7 @@ append_header_names(LibBalsaCondition *cond, GString *res)
         g_string_append_printf(res, _("Header:%s"),
                                cond->match.string.user_header);
     }
-    for (i=0; i<ELEMENTS(header_name_map); ++i) {
+    for (i=0; i<G_N_ELEMENTS(header_name_map); ++i) {
         if (CONDITION_CHKMATCH(cond, header_name_map[i].header)) {
             if (res->len>0) {
                 g_string_append_printf(res, ",%s",
@@ -416,7 +416,7 @@ append_flag_names(LibBalsaCondition *cond, GString *res)
     };
     unsigned i;
     gsize len = res->len;
-    for (i=0; i<ELEMENTS(flag_name_map); ++i) {
+    for (i=0; i<G_N_ELEMENTS(flag_name_map); ++i) {
         if (cond->match.flags & flag_name_map[i].flag) {
             if (res->len == len) {
                 res = g_string_append(res, _(flag_name_map[i].flag_name));
diff --git a/libbalsa/identity.c b/libbalsa/identity.c
index 7c902d8af..6b2d73ecd 100644
--- a/libbalsa/identity.c
+++ b/libbalsa/identity.c
@@ -564,7 +564,6 @@ sd_response_ok(SelectDialogInfo * sdi)
  * The Manage Identities dialog; called from main window.
  */
 
-#define ELEMENTS(x) (sizeof (x) / sizeof (x[0]))
 typedef struct _IdentityDeleteInfo IdentityDeleteInfo;
 
 /* button actions */
@@ -1328,7 +1327,7 @@ md_sig_path_changed(gboolean active, GObject * dialog)
         "identity-sigpath",
     };
 
-    for (i = 0; i < ELEMENTS(button_key); i++) {
+    for (i = 0; i < G_N_ELEMENTS(button_key); i++) {
         GtkWidget *button = g_object_get_data(dialog, button_key[i]);
         gtk_widget_set_sensitive(button, active);
     }
diff --git a/libbalsa/imap/imap-commands.c b/libbalsa/imap/imap-commands.c
index 5a73defec..d4080aad7 100644
--- a/libbalsa/imap/imap-commands.c
+++ b/libbalsa/imap/imap-commands.c
@@ -26,8 +26,6 @@
 #include "siobuf-nc.h"
 #include "util.h"
 
-#define ELEMENTS(x) (sizeof (x) / sizeof(x[0]))
-
 struct fetch_data {
   ImapMboxHandle* h;
   ImapFetchType ift;
@@ -59,7 +57,7 @@ need_fetch(unsigned seqno, struct fetch_data* fd)
       && fd->h->msg_cache[seqno-1]->rfc822size <0) return seqno;
 
   available_headers = fd->h->msg_cache[seqno-1]->available_headers;
-  for(i=0; i<ELEMENTS(header); i++) {
+  for(i=0; i<G_N_ELEMENTS(header); i++) {
     if( (fd->ift & header[i]) &&
         !(available_headers & (header[i]|IMFETCH_RFC822HEADERS|
                                IMFETCH_RFC822HEADERS_SELECTED))) {
@@ -406,13 +404,13 @@ ImapResponse
 imap_mbox_status(ImapMboxHandle *r, const char*what,
                  struct ImapStatusResult *res)
 {
-  const char *item_arr[ELEMENTS(imap_status_item_names)+1];
+  const char *item_arr[G_N_ELEMENTS(imap_status_item_names)+1];
   ImapResponse rc = IMR_OK;
   unsigned i, ipos;
   
   for(ipos = i= 0; res[i].item != IMSTAT_NONE; i++) {
     /* repeated items? */
-    g_return_val_if_fail(i<ELEMENTS(imap_status_item_names), IMR_BAD);
+    g_return_val_if_fail(i<G_N_ELEMENTS(imap_status_item_names), IMR_BAD);
     /* invalid item? */
     g_return_val_if_fail(res[i].item>=IMSTAT_MESSAGES &&
                          res[i].item<=IMSTAT_UNSEEN, IMR_BAD);
@@ -440,7 +438,7 @@ enum_flag_to_str(ImapMsgFlags flg)
   GString *flags_str = g_string_new("");
   unsigned idx;
 
-  for(idx=0; idx < ELEMENTS(imap_msg_flags); idx++) {
+  for(idx=0; idx < G_N_ELEMENTS(imap_msg_flags); idx++) {
     if((flg & (1<<idx)) == 0) continue;
     if(*flags_str->str) g_string_append_c(flags_str, ' ');
     g_string_append_c(flags_str, '\\');
diff --git a/libbalsa/imap/imap-handle.c b/libbalsa/imap/imap-handle.c
index ff2b5c8aa..6fcc83886 100644
--- a/libbalsa/imap/imap-handle.c
+++ b/libbalsa/imap/imap-handle.c
@@ -39,7 +39,6 @@
 #include "util.h"
 
 #define LONG_STRING 512
-#define ELEMENTS(x) (sizeof (x) / sizeof(x[0]))
 
 #define IDLE_TIMEOUT 30
 
@@ -2160,7 +2159,7 @@ ir_capability_data(ImapMboxHandle *handle)
   
   do {
     c = imap_get_atom(handle->sio, atom, sizeof(atom));
-    for (x=0; x<ELEMENTS(capabilities); x++)
+    for (x=0; x<G_N_ELEMENTS(capabilities); x++)
       if (g_ascii_strncasecmp(atom, capabilities[x],
                               strlen(capabilities[x])) == 0) {
        handle->capabilities[x] = 1;
@@ -2274,7 +2273,7 @@ ir_resp_text_code(ImapMboxHandle *h)
   int c = imap_get_atom(h->sio, buf, sizeof(buf));
   ImapResponse rc = IMR_OK;
 
-  for(o=0; o<ELEMENTS(resp_text_code); o++)
+  for(o=0; o<G_N_ELEMENTS(resp_text_code); o++)
     if(g_ascii_strcasecmp(buf, resp_text_code[o]) == 0) break;
 
   switch(o) {
@@ -2453,7 +2452,7 @@ ir_list_lsub(ImapMboxHandle *h, ImapHandleSignal signal)
     unsigned i;
     if(c!= '\\') return IMR_PROTOCOL;
     c = imap_get_atom(h->sio, buf, sizeof(buf));
-    for(i=0; i< ELEMENTS(mbx_flags); i++) {
+    for(i=0; i< G_N_ELEMENTS(mbx_flags); i++) {
       if(g_ascii_strcasecmp(buf, mbx_flags[i]) ==0) {
         IMAP_MBOX_SET_FLAG(flags, i);
         break;
@@ -2518,7 +2517,7 @@ ir_status(ImapMboxHandle *h)
     /* FIXME: process the response */
     if(resp) {
       unsigned idx, i;
-      for(idx=0; idx<ELEMENTS(imap_status_item_names); idx++)
+      for(idx=0; idx<G_N_ELEMENTS(imap_status_item_names); idx++)
         if(g_ascii_strcasecmp(item, imap_status_item_names[idx]) == 0)
           break;
       for(i= 0; resp[i].item != IMSTAT_NONE; i++) {
@@ -2706,7 +2705,7 @@ ir_msg_att_flags(ImapMboxHandle *h, int c, unsigned seqno)
   do {
     char buf[LONG_STRING];
     c = imap_get_flag(h->sio, buf, sizeof(buf));
-    for(i=0; i<ELEMENTS(imap_msg_flags); i++)
+    for(i=0; i<G_N_ELEMENTS(imap_msg_flags); i++)
       if(buf[0] == '\\' && g_ascii_strcasecmp(imap_msg_flags[i], buf+1) == 0) {
         msg->flags |= 1<<i;
         break;
@@ -4030,7 +4029,7 @@ ir_fetch_seq(ImapMboxHandle *h, unsigned seqno)
       atom[i] = c;
     }
     atom[i] = '\0';
-    for(i=0; i<ELEMENTS(msg_att); i++) {
+    for(i=0; i<G_N_ELEMENTS(msg_att); i++) {
       if(g_ascii_strcasecmp(atom, msg_att[i].name) == 0) {
         if( (rc=msg_att[i].handler(h, c, seqno)) != IMR_OK)
           return rc;
@@ -4197,7 +4196,7 @@ ir_handle_response(ImapMboxHandle *h)
     c = imap_get_atom(h->sio, atom, sizeof(atom));
     if (c == 0x0d)
       sio_ungetc(h->sio);
-    for(i=0; i<ELEMENTS(NumHandlers); i++) {
+    for(i=0; i<G_N_ELEMENTS(NumHandlers); i++) {
       if(g_ascii_strncasecmp(atom, NumHandlers[i].response, 
                              NumHandlers[i].keyword_len) == 0) {
         rc = NumHandlers[i].handler(h, seqno);
@@ -4209,7 +4208,7 @@ ir_handle_response(ImapMboxHandle *h)
 
     if (c == 0x0d)
       sio_ungetc(h->sio);
-    for(i=0; i<ELEMENTS(ResponseHandlers); i++) {
+    for(i=0; i<G_N_ELEMENTS(ResponseHandlers); i++) {
       if(g_ascii_strncasecmp(atom, ResponseHandlers[i].response, 
                              ResponseHandlers[i].keyword_len) == 0) {
         rc = ResponseHandlers[i].handler(h);
diff --git a/libbalsa/libbalsa.h b/libbalsa/libbalsa.h
index 6471340b7..c8f3b53bf 100644
--- a/libbalsa/libbalsa.h
+++ b/libbalsa/libbalsa.h
@@ -77,8 +77,6 @@ typedef void LibBalsaCanReachCallback(GObject * object,
 #include "mailbox_mh.h"
 #include "mailbox_maildir.h"
 
-#define ELEMENTS(x) (sizeof (x) / sizeof (x[0]))
-
 /*
  * Error domains for GError:
  */
diff --git a/libbalsa/mailbox.c b/libbalsa/mailbox.c
index 75d798807..1d74bfd49 100644
--- a/libbalsa/mailbox.c
+++ b/libbalsa/mailbox.c
@@ -2980,7 +2980,7 @@ mbox_model_get_value(GtkTreeModel *tree_model,
     
     g_return_if_fail(VALID_ITER(iter, tree_model));
     g_return_if_fail(column >= 0 &&
-                     column < (int) ELEMENTS(mbox_model_col_type));
+                     column < (int) G_N_ELEMENTS(mbox_model_col_type));
  
     g_value_init (value, mbox_model_col_type[column]);
     msgno = GPOINTER_TO_UINT( ((GNode*)iter->user_data)->data );
diff --git a/src/balsa-index.c b/src/balsa-index.c
index f1c898cf8..38455f792 100644
--- a/src/balsa-index.c
+++ b/src/balsa-index.c
@@ -453,7 +453,7 @@ bndx_instance_init(BalsaIndex * index)
 
     gtk_drag_source_set(GTK_WIDGET (index),
                         GDK_BUTTON1_MASK | GDK_SHIFT_MASK | GDK_CONTROL_MASK,
-                        index_drag_types, ELEMENTS(index_drag_types),
+                        index_drag_types, G_N_ELEMENTS(index_drag_types),
                         GDK_ACTION_DEFAULT | GDK_ACTION_COPY |
                         GDK_ACTION_MOVE);
     g_signal_connect(index, "drag-data-get",
@@ -1840,7 +1840,7 @@ bndx_popup_menu_create(BalsaIndex * index)
 
     menu = gtk_menu_new();
 
-    for (i = 0; i < ELEMENTS(entries); i++)
+    for (i = 0; i < G_N_ELEMENTS(entries); i++)
         create_stock_menu_item(menu, _(entries[i].label),
                                entries[i].func, index);
 
diff --git a/src/balsa-mblist.c b/src/balsa-mblist.c
index 6d3aaa692..58501d309 100644
--- a/src/balsa-mblist.c
+++ b/src/balsa-mblist.c
@@ -1269,7 +1269,7 @@ balsa_mblist_default_signal_bindings(BalsaMBList * mblist)
                            G_CALLBACK(bmbl_column_resize), NULL);
     gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(mblist),
                                          bmbl_drop_types,
-                                         ELEMENTS(bmbl_drop_types),
+                                                                                
G_N_ELEMENTS(bmbl_drop_types),
                                          GDK_ACTION_DEFAULT |
                                          GDK_ACTION_COPY |
                                          GDK_ACTION_MOVE);
diff --git a/src/filter-edit-callbacks.c b/src/filter-edit-callbacks.c
index ff41d95b6..2d8bdd779 100644
--- a/src/filter-edit-callbacks.c
+++ b/src/filter-edit-callbacks.c
@@ -1184,7 +1184,7 @@ void build_condition_dialog(GtkWidget * condition_dialog)
     label = gtk_label_new_with_mnemonic(_("Search T_ype:"));
     gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
     fe_search_option_menu = 
-        fe_build_option_menu(fe_search_type, ELEMENTS(fe_search_type),
+        fe_build_option_menu(fe_search_type, G_N_ELEMENTS(fe_search_type),
                              G_CALLBACK(fe_typesmenu_cb), field_frame);
     gtk_box_pack_start(GTK_BOX(box), fe_search_option_menu, FALSE, FALSE, 5);
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), fe_search_option_menu);
diff --git a/src/filter-edit-dialog.c b/src/filter-edit-dialog.c
index b36835fcf..e37f80036 100644
--- a/src/filter-edit-dialog.c
+++ b/src/filter-edit-dialog.c
@@ -279,7 +279,7 @@ build_match_page()
     gtk_grid_attach(GTK_GRID(page), box, 1, 1, 1, 1);
 
     fe_op_codes_option_menu = fe_build_option_menu(fe_op_codes,
-                                               ELEMENTS(fe_op_codes),
+                                               G_N_ELEMENTS(fe_op_codes),
                                                NULL, NULL);
     g_signal_connect(fe_op_codes_option_menu, "changed",
                      G_CALLBACK(fe_action_changed), NULL);
@@ -445,7 +445,7 @@ build_action_page(GtkWindow * window)
     gtk_container_add(GTK_CONTAINER(frame), box);
 
     fe_action_option_menu =
-        fe_build_option_menu(fe_actions, ELEMENTS(fe_actions),
+        fe_build_option_menu(fe_actions, G_N_ELEMENTS(fe_actions),
                              G_CALLBACK(fe_action_selected), NULL);
     gtk_box_pack_start(GTK_BOX(box), fe_action_option_menu,
                        TRUE, FALSE, 1);
diff --git a/src/main-window.c b/src/main-window.c
index 1cf09a6aa..5c221b3e7 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -463,7 +463,7 @@ bw_create_index_widget(BalsaWindow *bw)
     unsigned i;
 
     if(!view_filters_translated) {
-        for(i=0; i<ELEMENTS(view_filters); i++)
+        for(i=0; i<G_N_ELEMENTS(view_filters); i++)
             view_filters[i].str = _(view_filters[i].str);
         view_filters_translated = TRUE;
     }
@@ -473,7 +473,7 @@ bw_create_index_widget(BalsaWindow *bw)
     bw->filter_choice = gtk_combo_box_text_new();
     gtk_box_pack_start(GTK_BOX(bw->sos_bar), bw->filter_choice,
                        FALSE, FALSE, 0);
-    for(i=0; i<ELEMENTS(view_filters); i++)
+    for(i=0; i<G_N_ELEMENTS(view_filters); i++)
         gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(bw->filter_choice),
                                        i, view_filters[i].str);
     gtk_combo_box_set_active(GTK_COMBO_BOX(bw->filter_choice), 0);
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index 4efe6f1f2..7244a76c2 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -681,7 +681,7 @@ find_locale_index_by_locale(const gchar * locale)
 
     if (locale == NULL || strcmp(locale, "C") == 0)
         locale = "en_US";
-    for (i = 0; i < ELEMENTS(locales); i++) {
+    for (i = 0; i < G_N_ELEMENTS(locales); i++) {
        for (j = 0; locale[j] && locales[i].locale[j] == locale[j]; j++);
        if (j > maxfit) {
            maxfit = j;
@@ -2401,7 +2401,7 @@ create_email_entry(BalsaSendmsg         * bsmsg,
                     G_CALLBACK(address_book_cb), bsmsg);
     gtk_drag_dest_set(GTK_WIDGET(*view), GTK_DEST_DEFAULT_ALL,
                      email_field_drop_types,
-                     ELEMENTS(email_field_drop_types),
+                         G_N_ELEMENTS(email_field_drop_types),
                      GDK_ACTION_COPY | GDK_ACTION_MOVE);
 
     libbalsa_address_view_set_domain(*view, bsmsg->ident->domain);
@@ -2718,7 +2718,7 @@ sw_attachment_list(BalsaSendmsg *bsmsg)
     g_signal_connect(G_OBJECT(bsmsg->window), "drag_data_received",
                     G_CALLBACK(attachments_add), bsmsg);
     gtk_drag_dest_set(GTK_WIDGET(bsmsg->window), GTK_DEST_DEFAULT_ALL,
-                     drop_types, ELEMENTS(drop_types),
+                     drop_types, G_N_ELEMENTS(drop_types),
                      GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
 
     frame = gtk_frame_new(NULL);
@@ -2936,7 +2936,7 @@ create_text_area(BalsaSendmsg * bsmsg)
                     G_CALLBACK(drag_data_quote), bsmsg);
     /* GTK_DEST_DEFAULT_ALL in drag_set would trigger bug 150141 */
     gtk_drag_dest_set(GTK_WIDGET(bsmsg->text), 0,
-                     drop_types, ELEMENTS(drop_types),
+                     drop_types, G_N_ELEMENTS(drop_types),
                      GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
 
     gtk_widget_show_all(scroll);
@@ -4066,9 +4066,9 @@ create_lang_menu(GtkWidget * parent, BalsaSendmsg * bsmsg)
     }
 
     if (!locales_sorted) {
-        for (i = 0; i < ELEMENTS(locales); i++)
+        for (i = 0; i < G_N_ELEMENTS(locales); i++)
             locales[i].lang_name = _(locales[i].lang_name);
-        qsort(locales, ELEMENTS(locales), sizeof(struct SendLocales),
+        qsort(locales, G_N_ELEMENTS(locales), sizeof(struct SendLocales),
               comp_send_locales);
         locales_sorted = TRUE;
     }
@@ -4078,7 +4078,7 @@ create_lang_menu(GtkWidget * parent, BalsaSendmsg * bsmsg)
         balsa_app.spell_check_lang : setlocale(LC_CTYPE, NULL);
 
     langs = gtk_menu_new();
-    for (i = 0; i < ELEMENTS(locales); i++) {
+    for (i = 0; i < G_N_ELEMENTS(locales); i++) {
         gconstpointer found;
 
         if (locales[i].locale == NULL || locales[i].locale[0] == '\0')
diff --git a/src/toolbar-factory.c b/src/toolbar-factory.c
index 294ad8e7e..23b8cb688 100644
--- a/src/toolbar-factory.c
+++ b/src/toolbar-factory.c
@@ -177,8 +177,7 @@ button_data toolbar_buttons[]={
     {"gtk-edit",             N_("Edit"),            FALSE},
 };
 
-const int toolbar_button_count =
-    sizeof(toolbar_buttons) / sizeof(button_data);
+const int toolbar_button_count = G_N_ELEMENTS(toolbar_buttons);
 
 /* Public methods. */
 const gchar *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]