Hello, More data ;-)
Thanks for the test case, Kind regard Sylvain Le Gall On Sat, Aug 19, 2006 at 05:17:37PM +0200, A Mennucc wrote: > Package: unison-gtk > Version: 2.13.16-5 > Followup-For: Bug #318132 > > hi > > here in attachment is a file that is triggering the bug for me > > this file had only "props" changed , but I hit "diff" anyway, and > this triggered the bug > > a. > > > -- System Information: > Debian Release: testing/unstable > APT prefers testing > APT policy: (500, 'testing') > Architecture: i386 (i686) > Shell: /bin/sh linked to /bin/bash > Kernel: Linux 2.6.16-1-k7 > Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8) > > Versions of packages unison-gtk depends on: > ii libatk1.0-0 1.12.1-1 The ATK accessibility toolkit > ii libc6 2.3.6-16 GNU C Library: Shared libraries > ii libcairo2 1.2.2-1 The Cairo 2D vector graphics > libra > ii libfontconfig1 2.3.2-7 generic font configuration > library > ii libglib2.0-0 2.10.3-3 The GLib library of C routines > ii libgtk2.0-0 2.8.18-1 The GTK+ graphical user > interface > ii libpango1.0-0 1.12.3-1+b1 Layout and rendering of > internatio > ii libx11-6 2:1.0.0-8 X11 client-side library > ii libxcursor1 1.1.5.2-5 X cursor management library > ii libxext6 1:1.0.0-4 X11 miscellaneous extension > librar > ii libxi6 1:1.0.0-5 X11 Input extension library > ii libxinerama1 1:1.0.1-4 X11 Xinerama extension library > ii libxrandr2 2:1.1.0.2-4 X11 RandR extension library > ii libxrender1 1:0.9.0.2-4 X Rendering Extension client > libra > > Versions of packages unison-gtk recommends: > ii openssh-client [ssh-client] 1:4.3p2-3 Secure shell client, an > rlogin/rsh > ii ssh-askpass-gnome [ssh-askpas 1:4.3p2-3 under X, asks user for a > passphras > > -- no debconf information > > -- > Andrea Mennucc > "E' un mondo difficile. Che vita intensa!" (Tonino Carotone) > #include "stdio.h" > #include <string.h> //strlen > > #ifdef HAVE_CONFIG_H > # include <config.h> > #endif > > #include <gtk/gtk.h> > > #ifdef USE_IMLIB > #include <gdk_imlib.h> > #else > #include <gdk-pixbuf/gdk-pixbuf.h> > #endif > > > > #include "gtk-meta.h" > > #include <math.h> > > #include "gtktopdata.h" > #include "gtk_subimagesel.h" > #include "main.h" > > #include "callbacks.h" > #include "interface.h" > #include "guide.h" > #include "support.h" > //#include "pixmaps.h" > > #ifndef IS_PLYMORPH > #include "mesh-gtk.h" > #include "utils.h" > #include "feature.h" > #include "../libmorph/relax.h" > #endif > > #include "mag.h" > #include "fourier.hh" > #include "dialogs.h" > #include "callbacks_fs.h" > > #include "loadsave.h" > > #ifndef IS_PLYMORPH > #include "loadsave_mesh.h" > #else > #include "loadsave_ply.h" > #endif > > #include "callbacks_subimg.h" //redraw_spins > > /* some code was taken from the gtk-tutorial , the "scribble" example */ > > > /******************************************************************* > ****************************************************************** > > main window > > ********************************************************************** > ********************************************************************** > > */ > > > > > > gboolean > on_window_main_delete (GtkWidget *widget, > GdkEvent *event, > gpointer user_data) > { > if(guide_callback("delete_event",MAIN_WIN)) { > gtk_widget_hide(widget); > return TRUE; > } > else > { > on_quit1_activate(NULL,NULL); > return TRUE; > } > } > > > void > on_quit1_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > int lp; char s[MAX_WINS*5+10]; > s[0]=0; > /* FIXME < or <= ?? */ > for(lp=1;lp<=MAX_WINS; lp++) { > if( sp->im_widget[lp] && > #ifdef IS_PLYMORPH > sp->im_ply_labels_unsaved[lp] > #else > sp->im_mesh[lp].changed>0 > #endif > ) { > int l=strlen(s); sprintf(s+l," %d",lp); > } > } > if ( s[0]) { > GtkWidget *q=create_question(), *b; > char *z=g_strdup_printf > (_("the mesh(es) %s were not saved! do you want to exit anyway?"),s); > //gtk_window_set_title(GTK_WINDOW(q),z); > > gtk_widget_show(q); > b=lookup_widget(q,"yes"); > gtk_signal_connect (GTK_OBJECT (b), "clicked", > GTK_SIGNAL_FUNC (gtk_main_quit), > NULL); > b=lookup_widget(q,"no"); > gtk_signal_connect (GTK_OBJECT (b), "clicked", > GTK_SIGNAL_FUNC (gtk_widget_destroy), > q); > b=lookup_widget(q,"questionlabel"); > gtk_label_set_text(GTK_LABEL(b),z); > > g_free(z); > } > else > gtk_main_quit(); > } > > > > > void > on_resulting_image_size_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > GtkWidget* hb= lookup_widget ( sp->im_widget[MAIN_WIN] , > "handlebox_res_size"); > g_assert(hb); > gtk_widget_show(hb); > } > > > void > on_show_morph_factors_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > int lp; > for(lp=1 ; lp <= MAX_WINS; lp ++) > if(sp->im_widget[lp] != NULL) { > //set_editview(lp,EDITVIEW_SHOWMESHES ); > setup_handlebox_factor(lp,TRUE); > } > } > > > > //void > //on_logtext_realize (GtkWidget *widget, > // gpointer user_data) > //{ > // > //} > > > > /* > main menus callbacks > > */ > #include <time.h> > > gchar *session_name=NULL; > void > on_load_session_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > fileselection_hook=load_session; > fileselection1_for_image_num_g=MAIN_WIN; > show_fs(//GTK_WIDGET(menuitem), > _("load session") > #if GTK_MAJOR_VERSION >= 2 > , GTK_FILE_CHOOSER_ACTION_OPEN > #endif > ); > if(session_name) > gtk_file_selection_set_filename ((fileselection_g),session_name); > } > > > void > on_save_session_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > fileselection_hook=save_session; > fileselection1_for_image_num_g=MAIN_WIN; > show_fs(//GTK_WIDGET(menuitem), > _("save session") > #if GTK_MAJOR_VERSION >= 2 > , GTK_FILE_CHOOSER_ACTION_SAVE > #endif > ); > if(!session_name){ > #if GLIB_MAJOR_VERSION == 1 > session_name=g_strdup_printf("gtkmorph.session"); > #else > GDate D; > g_date_set_time (&D, time (NULL)); > session_name=g_strdup_printf("%d-%02d-%02d.session", > g_date_get_year (&D),g_date_get_month (&D), > g_date_get_day (&D)); > #endif > } > gtk_file_selection_set_filename ((fileselection_g),session_name); > } > > > > void > on_add_an_image_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > int lp; > for(lp=1 ; lp <= MAX_WINS; lp ++) > if(sp->im_widget[lp] == NULL) > { > /* we set this before, > otherwise the "factor_normalize" goes berseker */ > sp->max_wins++; > > create_and_show_image_win(lp); > setup_handlebox_factor(lp,FALSE); > return; > } > } > > > > > > > > > > > void > on_view_images1_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > int lp; > for(lp=1 ; lp <= MAIN_WIN ; lp ++) > { > if(sp->im_widget[lp] != NULL) > gtk_widget_show (sp->im_widget[lp]); > } > } > > > > double > tot_mixing_factors() > { > double totdiss; > int lp; > totdiss=0; > for ( lp =1; lp <= MAX_WINS; lp++) > if(sp->im_widget[lp] != NULL) > totdiss += sp->mf.im_dissolve_factor[lp]; > // FIXME this is not shown > sp->mf.im_dissolve_factor[MAIN_WIN]=totdiss; > > return totdiss; > } > > double > tot_mixing_factors_nice() > { > double totdiss=tot_mixing_factors(); > int lp; > if ( ABS(totdiss) < 0.001) > { > show_warning( _("\ > to blend the images, the sum of the all `image mixing factors' must be > nonzero\ > \nI have put default values for you")); > > for ( lp =1; lp <= MAX_WINS; lp++) > if(sp->im_widget[lp] != NULL) { > sp->mf.im_dissolve_factor[lp]=1.0/(double)sp->max_wins; > //gtk_widget_get_data_top(sp->im_widget[lp],"imagenum") > } > totdiss =1; > redraw_spins(-3); > } > return totdiss; > } > > > /******************************** > does the actual morphing > ********************************/ > > #define PRINT_MORPH_TIME > > void > on_morph_images1_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > int lp; > //double totdiss=tot_mixing_factors_nice(); > > #ifdef PRINT_MORPH_TIME > GTimeVal bef,aft; > g_get_current_time(&bef); > #endif > > if( sp->max_wins<=1) > { > show_error( _("\ > to morph, you must have at least two input images")); > return; > } > > on_interpolate_meshes1_activate (NULL,NULL); > > > for ( lp =1; lp <= MAX_WINS; lp++) > if(sp->im_widget[lp] != NULL > #ifndef IS_PLYMORPH > && !sp->im_widget_is_difference_mesh[lp] > #endif > ) > { > #ifdef IS_PLYMORPH > extern int reference_ply_surface_n; > g_return_if_fail(reference_ply_surface_n>0); > if( lp != reference_ply_surface_n && > ABS(sp->mf.im_dissolve_factor[lp]) < 0.001 ) > #else > if(ABS(sp->mf.im_dissolve_factor[lp]) < 0.001 ) > #endif > g_message("NOT morphing image %d to resultin mesh", lp); > else > { > g_message("warping image %d to resulting mesh", lp); > // do_warp_an_image_old(lp,r,g,b); > do_warp_an_image_new(lp); > } > } > > on_do_mixing_clicked(NULL,NULL); > #ifdef PRINT_MORPH_TIME > g_get_current_time(&aft); > g_message("morph time %.2f",(double)(aft.tv_sec-bef.tv_sec) + > (double)(aft.tv_usec -bef.tv_usec) /1e6 ); > #endif > > #ifdef IS_PLYMORPH > __after_morph_ply_callback(); > #endif > > if(settings_get_value( "show warp after warp")) > set_editview(MAIN_WIN, EDITVIEW_SHOW); > > MY_GTK_DRAW (sp->im_widget[MAIN_WIN]); > } > > > > > > > /*********************************************************** > * > *************************** file selection ************ > * > ********************************************************** > > the following hook is set > so that the same fileselection dialog will be used for many > different purposes > > */ > > > void > on_ok_button1_realize (GtkWidget *widget, > gpointer user_data) > { > // GtkWidget *widget_f= gtk_widget_get_toplevel (widget); > // doesnt work > // gtk_container_add (GTK_CONTAINER (widget_f), > // menu_image_num_g); > > // gtk_menu_item_set_submenu(widget,create_menu_image_num_g ); > } > > > > void > on_ok_button1_clicked (GtkButton *button, > gpointer user_data) > { > const char *file= > gtk_file_selection_get_filename ( fileselection_g); > > g_assert(fileselection1_for_image_num_g > 0); > > if( //e.g. fileselection_hook=load_image_from_file > fileselection_hook (fileselection1_for_image_num_g, > file)) > { > //gtk_widget_hide(GTK_WIDGET(fileselection_g)); > //gtk_file_selection_complete (fileselection_g,""); > gtk_widget_show( sp-> im_widget[fileselection1_for_image_num_g]); > > guide_callback("file",fileselection1_for_image_num_g); > // lets be nasty > fileselection1_for_image_num_g=-2; > fileselection_hook=NULL; > gtk_widget_destroy(GTK_WIDGET(fileselection_g)); > fileselection_g=NULL; > } > } > > > > > > > > > > > > > > > > > > > > > #if HAVE_WAILI > #include "wavelet.hh" > GNode *l2_warped_stats[MAX_WINS], *l2_subimage_stats[MAX_WINS]; > #endif > > #ifndef IS_PLYMORPH > void > on_wavelet_equalize_activate (GtkMenuItem *menuitem, > gpointer user_data) > { > #if HAVE_WAILI > int lp; > GNode *l2_tmp=NULL; > double fact=0; > for ( lp =1; lp <= MAX_WINS; lp++) > if(sp->im_widget[lp] != NULL && sp-> im_subimage_pixbuf[lp] ) > fact +=1; > fact = 1/fact; > for ( lp =1; lp <= MAX_WINS; lp++) > if(sp->im_widget[lp] != NULL && sp-> im_subimage_pixbuf[lp] ) { > g_debug(" ----- wavelet L2 energies for subimage image %d\n",lp); > l2_subimage_stats[lp]=wavelet_stats( sp-> im_subimage_pixbuf[lp]); > if(!l2_tmp) > l2_tmp=wavelet_stats_clone(l2_subimage_stats[lp]); > wavelet_stats_sum(l2_tmp,l2_subimage_stats[lp],fact); > } > > for ( lp =1; lp <= MAX_WINS; lp++) > if(sp->im_widget[lp] != NULL && sp-> im_subimage_pixbuf[lp] ) { > g_debug(" --- equalizing wavelet L2 energies for image %d\n",lp); > wavelet_equalize(sp-> im_subimage_pixbuf[lp],l2_tmp); > } > #else > show_error(_("gtkmorph was not linked with Waili wavelet library")); > #endif > } > #endif > > static int round_and_dither( double v) > { > static double delta=0; double nv; > v=v+delta; > nv=floor(v+0.5); > delta=v-nv; > return (int)nv; > } > > void > on_do_mixing_clicked (GtkButton *button, > gpointer user_data) > { > int lp; > double totdiss=tot_mixing_factors_nice(); > guint w=sp->resulting_width, h=sp->resulting_height; > int effective_wins=0, max_win=0; > guchar *data[MAX_WINS+2]; > > g_debug("blending textures of warped images"); > > for ( lp =1; lp <= MAX_WINS; lp++) { > if(sp->im_widget[lp] != NULL && > #ifndef IS_PLYMORPH > !sp->im_widget_is_difference_mesh[lp] && > #endif > ABS(sp->mf.im_dissolve_factor[lp]) >= 0.0001 && lp != MAIN_WIN ) { > effective_wins++; max_win=lp; > data[lp] = gdk_pixbuf_get_pixels(sp-> im_warped_pixbuf[lp]); > g_assert( data[lp] != NULL); > } else > data[lp]=NULL; > } > > if( effective_wins <=1) { > //simply copy > if(sp-> im_warped_pixbuf[MAIN_WIN]) > gdk_pixbuf_unref(sp-> im_warped_pixbuf[MAIN_WIN]); > sp-> im_warped_pixbuf[MAIN_WIN]= > gdk_pixbuf_copy(sp-> im_warped_pixbuf[max_win]); > #ifndef IS_PLYMORPH > render_pixmap(MAIN_WIN, PIXWARPED); > set_editview(MAIN_WIN, settings_get_value( "show warp after warp")); > MY_GTK_DRAW(sp->im_widget[MAIN_WIN] ); > #endif > return; > } > > { > /* we precompute some data */ > double fact[max_win+1]; > guint rowstride[max_win+1]; > guint channels[max_win+1]; > #if HAVE_WAILI > GNode *l2_average_stat=NULL; > #endif > > for ( lp =1; lp <= max_win; lp++) > if(data[lp]) { > fact[lp] = sp->mf.im_dissolve_factor[lp] / totdiss; > rowstride[lp]= gdk_pixbuf_get_rowstride(sp-> im_warped_pixbuf[lp]); > channels[lp]= gdk_pixbuf_get_n_channels(sp-> im_warped_pixbuf[lp]); > } > > #if HAVE_WAILI > if( settings_get_value ("wavelet equalization")) { > g_message("collecting wavelet statistics"); > for ( lp =1 ; lp <= max_win ; lp++) { > if (data[lp] != NULL){ > if(NULL==l2_warped_stats[lp]) { > g_debug(" ----- wavelet L2 energies for image %d\n",lp); > l2_warped_stats[lp]=wavelet_stats( sp-> im_warped_pixbuf[lp]); > } > if(NULL==l2_average_stat) > l2_average_stat=wavelet_stats_clone(l2_warped_stats[lp]); > wavelet_stats_sum(l2_average_stat, l2_warped_stats[lp] , fact[lp] ); > } > }} > #endif > { > GdkPixbuf *dpb = sp-> im_warped_pixbuf[MAIN_WIN]; > if(dpb==NULL) { > #ifdef IS_PLYMORPH > dpb = sp-> im_warped_pixbuf[MAIN_WIN]= > gdk_pixbuf_new(GDK_COLORSPACE_RGB,//GdkColorspace colorspace, > TRUE,//gboolean has_alpha, > 8,//int bits_per_sample, > w,h);//int width, int height); > > #else > create__pixbuf(MAIN_WIN, PIXWARPED); > dpb = sp-> im_warped_pixbuf[MAIN_WIN]; > #endif > > } > guchar *ddata = gdk_pixbuf_get_pixels(dpb); > guint drowstride= gdk_pixbuf_get_rowstride (dpb) ; > guint dchannels= gdk_pixbuf_get_n_channels(dpb); > guint i,j; > double val; int v; > guint dps[max_win+1]; long dp=0; /* data position */ > //we clear the old image > gdk_pixbuf_clear(dpb); > > //FIXME > for ( lp =max_win ; lp >= 1 ; lp--) > if (data[lp] != NULL) > if( dchannels != channels[lp] ) { > show_error( _("the input images have different numbers of channels: > cannot blend")); > return; > } > > for( j=0; j< h ; j++) { > dp= drowstride * j; > for ( lp =max_win ; lp >= 1 ; lp--) > if (data[lp] != NULL) > dps[lp]=rowstride[lp] * j; > /* this interpolates also the alpha value, if any */ > for( i=0; i< dchannels*w ; i++) { > val = 0 ; > for ( lp =max_win ; lp >= 1 ; lp--) { > if (data[lp] != NULL) { > val += fact[lp] * (double) (data[lp])[dps[lp] + i ] ; > }} > /* FIXME if the image is not 8 bit */ > v=round_and_dither(val); > ddata[dp + i] = CLAMP(v, 0, 255); > } > } > #if HAVE_WAILI > if( settings_get_value ("wavelet equalization")) { > g_message("wavelet equalization"); > wavelet_equalize(dpb,l2_average_stat); > } > #endif > } > } > #ifndef IS_PLYMORPH > render_pixmap(MAIN_WIN, PIXWARPED); > set_editview(MAIN_WIN, settings_get_value( "show warp after warp")); > #endif > MY_GTK_DRAW(sp->im_widget[MAIN_WIN] ); > } > > void do_mesh_factors_equal() > { > int lp; > for ( lp =1; lp <= MAX_WINS; lp++) > if( sp->im_widget[lp] != NULL) > sp->mf.im_warp_factor[lp]=1.0/ (double)sp->max_wins; > } > > > > > > > /* > ********************************************************************** > > ************** resulting image, spinbuttons ******************** > > ********************************************************************** > */ > > #include "movies.h" > > > void > on_resulting_apply_clicked (GtkButton *button, > gpointer user_data) > { > double w=sp->resulting_width,h=sp->resulting_height ; > sp->resulting_width = sp->resulting_width_sp; > sp->resulting_height = sp->resulting_height_sp; > { > GtkWidget* hb= lookup_widget ( sp->im_widget[MAIN_WIN] , > "handlebox_res_size"); > g_assert(hb); > gtk_widget_hide(hb); > } > int lp; > #ifndef IS_PLYMORPH > #ifdef ANIMATE_INTERNALLY > int movie_pixmap_free(); > #endif > for( lp =1; lp <= MAIN_WIN; lp++) > if ( sp->im_widget[lp] ) { > destroy_image_win_pixbufs(lp,1); > //alloc_image_win_data(lp,1); > { > int j ; > for (j=2;j>=1;j--) { > create__pixbuf(lp,j); > // can't do this now-- need a window --create__pixmap(lp,j); > }} > { > int j ; > for (j=2;j>=1;j--) { > // do this now-- need a window -- > create__pixmap(lp,j); > } > } > subimage2affines(lp); > reload_and_scale_image(lp); > meshScaleFreeformat( &(sp->im_mesh[lp]), > (double)sp->resulting_width/w, > (double)sp->resulting_height/h); > } > guide_callback("resulting size",MAIN_WIN); > #endif > for( lp =1; lp <= MAIN_WIN; lp++) > if ( sp->im_widget[lp] ) { > drawingarea_configure(lp); > MY_GTK_DRAW( sp-> im_widget[lp]); > } > } > > > void spinbutton_res_set() > { > GtkWidget *widget=lookup_widget(sp->im_widget[MAIN_WIN], > "spinbutton_reswidth"); > gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget), > sp->resulting_width_sp ); > widget=lookup_widget(sp->im_widget[MAIN_WIN],"spinbutton_resheight"); > gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget), > sp->resulting_height_sp ); > } > > void > on_spinbutton_reswidth_changed (my_GtkSpinButton > *spinbutton,//GtkEditable *editable, > gpointer user_data) > { > // GtkSpinButton *spin = GTK_SPIN_BUTTON (editable); > sp->resulting_width_sp =gtk_spin_button_get_value_as_float (spinbutton); > } > > > void > on_spinbutton_resheight_changed (my_GtkSpinButton > *spinbutton,//GtkEditable *editable, > gpointer user_data) > { > // GtkSpinButton *spin = GTK_SPIN_BUTTON (editable); > sp->resulting_height_sp =gtk_spin_button_get_value_as_float (spinbutton); > } > > > > > > void > on_double_size_clicked (GtkButton *button, > gpointer user_data) > { > if( sp->resulting_height_sp <= 5000 && sp->resulting_width_sp <= 5000 ) { > sp->resulting_height_sp *= 2; > sp->resulting_width_sp *=2; > spinbutton_res_set(); > MY_GTK_DRAW( sp-> im_widget[MAIN_WIN]); > } > } > > > void > on_halve_size_clicked (GtkButton *button, > gpointer user_data) > { > if( sp->resulting_height_sp > 8 && sp->resulting_width_sp > 8 ) { > sp->resulting_height_sp /= 2; > sp->resulting_width_sp /= 2; > spinbutton_res_set(); > MY_GTK_DRAW( sp-> im_widget[MAIN_WIN]); > } > } > > > > /*********************************************************************** > ********************************************************************** > > image windows callbacks > > > note: many callbacks are shared with the "resulting image window" > > ********************************************************************** > */ > > > gboolean > on_image_win_1_delete_event (GtkWidget *widget, > GdkEvent *event, > gpointer user_data) > { > int i= > GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); > > #ifndef IS_PLYMORPH > mag_xy_track(MAIN_WIN,0,0); > #endif > > destroy_image_win_data(i); > > sp->mf.im_warp_factor[i]=0; > sp->mf.im_dissolve_factor[i]=0; > > return FALSE; > } > > > gboolean > on_diff_window_delete_event (GtkWidget *widget, > GdkEvent *event, > gpointer user_data) > { > int i= > GPOINTER_TO_UINT(gtk_widget_get_data_top(widget,"imagenum")); > > destroy_image_win_data(i); > > sp->mf.im_warp_factor[i]=0; > sp->mf.im_dissolve_factor[i]=0; > > return FALSE; > } > > > > > > > > > > > > > > > > > > void > on_load_example_session_activate (GtkMenuItem *menuitem, > gpointer user_data) > > { > int lp; > for(lp=1;lp<=MAX_WINS; lp++) { > if( sp->im_widget[lp] && > #ifdef IS_PLYMORPH > sp->im_ply_labels_unsaved[lp] > #else > sp->im_mesh[lp].changed>0 > #endif > ) { > show_error(_("Loading the example session may ruin your current > session. Please properly save all meshes and retry.")); > return; > } > } > gchar *P=NULL; > #ifdef __WIN32__ > extern gchar *program_install_dir; > gchar *pp[]={".",program_install_dir,NULL}; > gchar *ee[]={"example/ad/gtkmorph.session", > "example/AD/gtkmorph.session",NULL}; > lp=0; int le=0; > while(P == NULL && ee[le]) { > while(P == NULL && pp[lp]) { > if(P==NULL) { > P= g_build_filename(pp[lp],ee[le],NULL); > if(!g_file_test(P, G_FILE_TEST_IS_REGULAR)) { > g_free(P);P=NULL; > } > } > lp++; > } > le++; > } > #else > if(P==NULL && > g_file_test(DATADIR "/" PACKAGE "/example/AD/gtkmorph.session", > G_FILE_TEST_IS_REGULAR)) > P=g_strdup(DATADIR "/" PACKAGE "/example/AD/gtkmorph.session"); > if(P==NULL) { > gchar *s; > if(g_file_test("/etc/debian_version", G_FILE_TEST_IS_REGULAR)) > > s=g_strdup_printf(_("The 'example' directory should be in '%s' but is > not.\nInstall the 'gtkmorph-example' debian package."), > DATADIR "/" PACKAGE ); > else > s=g_strdup_printf(_("The 'example' directory should be in '%s' but is > not."), > DATADIR "/" PACKAGE); > show_error(s); g_free(s); > } > #endif > if(P) { > g_debug("loading example session from '%s'",P); > load_session(0,P); > g_free(P); > } else g_warning("could not locate example session!"); > } -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]