static void match_query_callback (EContact *contact, EContact *match, EABContactMatchType type, gpointer closure) { EContactMergingLookup *lookup = closure; gboolean flag; gboolean same_uids; if (lookup->op == E_CONTACT_MERGING_FIND) { if (lookup->c_cb) lookup->c_cb ( lookup->book_client, NULL, (gint) type <= (gint) EAB_CONTACT_MATCH_VAGUE ? NULL : match, lookup->closure); free_lookup (lookup); finished_lookup (); return; } /* if had same UID, then we are editing old contact, thus force commit change to it */ same_uids = contact && match && e_contact_get_const (contact, E_CONTACT_UID) && e_contact_get_const (match, E_CONTACT_UID) && g_str_equal (e_contact_get_const (contact, E_CONTACT_UID), e_contact_get_const (match, E_CONTACT_UID)); if ((gint) type <= (gint) EAB_CONTACT_MATCH_VAGUE || same_uids) { doit (lookup, same_uids); } else { GtkWidget *dialog; lookup->match = g_object_ref (match); if (lookup->op == E_CONTACT_MERGING_ADD) { /* Compares all the values of contacts and return true, if they match */ flag = check_if_same (contact, match); dialog = create_duplicate_contact_detected_dialog (match, contact, flag, FALSE); } else if (lookup->op == E_CONTACT_MERGING_COMMIT) { dialog = create_duplicate_contact_detected_dialog (match, contact, FALSE, TRUE); } else { doit (lookup, FALSE); return; } g_signal_connect ( dialog, "response", G_CALLBACK (response), lookup); gtk_widget_show_all (dialog); } }
static _Bool check_if_palindrome(uint32_t data){ uint8_t digits=0; uint32_t tmpdata = data; while(tmpdata > 0){ tmpdata /= 10; digits++; } if(digits%2 != 0) return FALSE; for(uint8_t i=1;i<=digits/2;i++) if(check_if_same(data,i,digits-i+1) == FALSE) return FALSE; //printf("found! - %" PRIu32 "\n",data); return TRUE; }