I'm trying some tests with the hope of switching to libgsf in place of low-level fiddling with pkzip structures in reading and writing zipfiles. So far I'm only partially successful and I'd much appreciate any guidance.
I have the following C source (with correct headers included, and followed by a trivial main() function). The idea is to print the structure of a zipfile and then "unzip" it to a specified location. The printing part, "print_kids", is working fine, but the "unzipping" part is giving me an empty directory "foo". I have removed error-checking from the following for brevity, but no errors were triggered when running the full version of the code. static void print_kids (GsfInfile *infile, int level) { int nkids = gsf_infile_num_children(infile); const char *cname; GsfInput *child; gsf_off_t sz; int i, j; for (i=0; i<nkids; i++) { child = gsf_infile_child_by_index(infile, i); cname = gsf_input_name(child); sz = gsf_input_size(child); for (j=0; j<level; j++) { putchar(' '); } printf("child %d: '%s' (%d bytes)\n", i, cname, (int) sz); print_kids(GSF_INFILE(child), ++level); g_object_unref(child); } } static int gsf_test_zipread (const char *fname) { GsfInput *src, *uncomp; GsfInfile *zipfile; GsfOutfile *outfile; gsf_init(); src = gsf_input_stdio_new(fname, NULL); zipfile = gsf_infile_zip_new(src, NULL); g_object_unref(src); print_kids(zipfile, 0); uncomp = gsf_input_uncompress(GSF_INPUT(zipfile)); g_object_unref(zipfile); outfile = gsf_outfile_stdio_new("foo", &err); gsf_input_seek(uncomp, 0, G_SEEK_SET); gsf_output_seek(GSF_OUTPUT(outfile), 0, G_SEEK_SET); if (!gsf_input_copy(uncomp, GSF_OUTPUT(outfile))) { fprintf(stderr, "gsf_input_copy failed\n"); } gsf_output_close(GSF_OUTPUT(outfile)); gsf_shutdown(); return 0; } Please, what am I doing wrong in gsf_test_zipread? -- Allin Cottrell Department of Economics Wake Forest University _______________________________________________ gnumeric-list mailing list gnumeric-list@gnome.org http://mail.gnome.org/mailman/listinfo/gnumeric-list