AddressBookFile *addressbook_imp_ldif_file( AddressIndex *addrIndex, const gchar *file, const gchar *book_name ) { gchar *fsfile; GList *node, *list; gboolean ret = FALSE; g_return_val_if_fail(addrIndex != NULL, NULL); g_return_val_if_fail(file != NULL, NULL); g_return_val_if_fail(book_name != NULL, NULL); debug_print("addressbook_imp_ldif_file: file: %s name: %s\n", file, book_name); _importedBook_ = NULL; _imp_addressIndex_ = addrIndex; _ldifFile_ = ldif_create(); fsfile = conv_filename_from_utf8( file ); ldif_set_file(_ldifFile_, fsfile); g_free( fsfile ); if( ldif_read_tags( _ldifFile_ ) != MGU_SUCCESS ) goto finish; list = ldif_get_fieldlist( _ldifFile_ ); node = list; while( node ) { Ldif_FieldRec *rec = node->data; if( ! rec->reserved ) { if( g_ascii_strcasecmp( rec->tagName, "dn" ) != 0 ) { rec->selected = TRUE; } } node = g_list_next( node ); } g_list_free( list ); g_free( impldif_dlg.nameBook ); impldif_dlg.nameBook = g_strdup(book_name); ret = imp_ldif_field_move(); g_free( impldif_dlg.nameBook ); impldif_dlg.nameBook = NULL; finish: ldif_free( _ldifFile_ ); _ldifFile_ = NULL; _imp_addressIndex_ = NULL; if (ret) debug_print("addressbook_imp_ldif_file: import succeeded\n"); return _importedBook_; }
/** * Import LDIF file. * \param addrIndex Address index. * \return Address book file of imported data, or <i>NULL</i> if import * was cancelled. */ AddressBookFile *addressbook_imp_ldif( AddressIndex *addrIndex ) { _importedBook_ = NULL; _imp_addressIndex_ = addrIndex; if( ! impldif_dlg.window ) imp_ldif_create(); gtk_button_set_label(GTK_BUTTON(impldif_dlg.btnCancel), GTK_STOCK_CANCEL); gtk_widget_hide(impldif_dlg.btnProceed); gtk_widget_show(impldif_dlg.btnNext); impldif_dlg.cancelled = FALSE; gtk_widget_show(impldif_dlg.window); manage_window_set_transient(GTK_WINDOW(impldif_dlg.window)); gtk_widget_grab_default(impldif_dlg.btnNext); gtk_window_set_modal(GTK_WINDOW(impldif_dlg.window), TRUE); gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryName), IMPORTLDIF_GUESS_NAME ); gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryFile), "" ); gtk_label_set_text( GTK_LABEL(impldif_dlg.entryField), "" ); gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryAttrib), "" ); gtk_cmclist_clear( GTK_CMCLIST(impldif_dlg.clist_field) ); gtk_notebook_set_current_page( GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO ); gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE ); gtk_widget_set_sensitive( impldif_dlg.btnNext, TRUE ); stock_pixbuf_gdk(STOCK_PIXMAP_MARK, &markxpm ); imp_ldif_message(); gtk_widget_grab_focus(impldif_dlg.entryFile); impldif_dlg.rowIndSelect = -1; impldif_dlg.rowCount = 0; g_free( impldif_dlg.nameBook ); g_free( impldif_dlg.fileName ); impldif_dlg.nameBook = NULL; impldif_dlg.fileName = NULL; _ldifFile_ = ldif_create(); gtk_main(); gtk_widget_hide(impldif_dlg.window); gtk_window_set_modal(GTK_WINDOW(impldif_dlg.window), FALSE); ldif_free( _ldifFile_ ); _ldifFile_ = NULL; _imp_addressIndex_ = NULL; g_free( impldif_dlg.nameBook ); g_free( impldif_dlg.fileName ); impldif_dlg.nameBook = NULL; impldif_dlg.fileName = NULL; if( impldif_dlg.cancelled == TRUE ) return NULL; return _importedBook_; }