diff -c -r gqview-1.5.1/src/image-load.c gqview-1.5.1-modi/src/image-load.c *** gqview-1.5.1/src/image-load.c 2004-02-25 11:17:16.000000000 +1300 --- gqview-1.5.1-modi/src/image-load.c 2004-06-11 12:08:12.000000000 +1200 *************** *** 77,83 **** if (il->load_fd != -1) { ! close(il->load_fd); il->load_fd = -1; } --- 77,88 ---- if (il->load_fd != -1) { ! if( il->load_F ) { ! pclose(il->load_F); ! il->load_F = 0; ! } else { ! close(il->load_fd); ! } il->load_fd = -1; } *************** *** 241,251 **** if (!il) return FALSE; pathl = path_from_utf8(il->path); ! il->load_fd = open(pathl, O_RDONLY | O_NONBLOCK); g_free(pathl); if (il->load_fd == -1) return FALSE; ! if (fstat(il->load_fd, &st) == 0) { il->bytes_total = st.st_size; } --- 246,268 ---- if (!il) return FALSE; pathl = path_from_utf8(il->path); ! if( strcmp(pathl + (strlen(pathl) -4), ".nef") == 0 ) { ! char c[PATH_MAX + 20]; ! sprintf(c, "nefextract %s", pathl); ! il->load_F = popen(c, "r"); ! if( il->load_F == NULL ) { ! il->load_fd = -1; ! } else { ! il->load_fd = fileno(il->load_F); ! } ! } else { ! il->load_fd = open(pathl, O_RDONLY | O_NONBLOCK); ! } ! g_free(pathl); if (il->load_fd == -1) return FALSE; ! if (!il->load_F && fstat(il->load_fd, &st) == 0) { il->bytes_total = st.st_size; } diff -c -r gqview-1.5.1/src/typedefs.h gqview-1.5.1-modi/src/typedefs.h *** gqview-1.5.1/src/typedefs.h 2004-03-02 12:42:36.000000000 +1300 --- gqview-1.5.1-modi/src/typedefs.h 2004-06-11 12:07:47.000000000 +1200 *************** *** 80,85 **** --- 80,86 ---- gint idle_priority; GdkPixbufLoader *loader; + FILE* load_F; gint load_fd; void (*func_area_ready)(ImageLoader *, guint x, guint y, guint w, guint h, gpointer);