Re: grokking libgsf



You want something like this...


diff --git a/tests/test-cp-zip.c b/tests/test-cp-zip.c
index 5523f33..2169f78 100644
--- a/tests/test-cp-zip.c
+++ b/tests/test-cp-zip.c
@@ -26,16 +26,16 @@
 #include <gsf/gsf-infile-zip.h>

 #include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile-stdio.h>
 #include <gsf/gsf-outfile.h>
 #include <gsf/gsf-outfile-zip.h>

 #include <stdio.h>

 static void
-clone (GsfInfile *in, GsfOutfile *out)
+clone (GsfInfile *in, GsfOutput *output)
 {
        GsfInput *input = GSF_INPUT (in);
-       GsfOutput *output = GSF_OUTPUT (out);

        if (gsf_input_size (input) > 0) {
                size_t len;
@@ -54,6 +54,7 @@ clone (GsfInfile *in, GsfOutfile *out)
                        }
                }
        } else {
+               GsfOutfile *out = GSF_OUTFILE (output);
                int i, n = gsf_infile_num_children (in);
                for (i = 0 ; i < n; i++) {
                        int level;
@@ -83,14 +84,14 @@ clone (GsfInfile *in, GsfOutfile *out)
                        g_free (display_name);

                        output = gsf_outfile_new_child_full  (out, name, is_dir,
-                                                             "compression-level", level,
                                                              NULL);
-                       clone (GSF_INFILE (input), GSF_OUTFILE (output));
+                       clone (GSF_INFILE (input), output);
+
+                       g_object_unref (input);
+                       gsf_output_close (output);
+                       g_object_unref (output);
                }
        }
-       gsf_output_close (GSF_OUTPUT (out));
-       g_object_unref (G_OBJECT (out));
-       g_object_unref (G_OBJECT (in));
 }

 static int
@@ -98,7 +99,6 @@ test (char *argv[])
 {
        GsfInput   *input;
        GsfInfile  *infile;
-       GsfOutput  *output;
        GsfOutfile *outfile;
        GError    *err = NULL;

@@ -124,20 +124,11 @@ test (char *argv[])
                return 1;
        }

-       output = gsf_output_stdio_new (argv[2], &err);
-       if (output == NULL) {
-
-               g_return_val_if_fail (err != NULL, 1);
-
-               g_warning ("'%s' error: %s", argv[2], err->message);
-               g_error_free (err);
-               g_object_unref (G_OBJECT (infile));
-               return 1;
-       }
+       outfile = gsf_outfile_stdio_new (argv[2], &err);
+       clone (infile, GSF_OUTPUT (outfile));

-       outfile = gsf_outfile_zip_new (output, &err);
-       g_object_unref (G_OBJECT (output));
-       clone (infile, outfile);
+       g_object_unref (outfile);
+       g_object_unref (infile);

        return 0;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]