- char *copy = NULL;
- xmlTextWriterPtr w;
- struct string str;
- ds_init_cstr (&str, driver->dirname);
- ds_put_cstr (&str, "/");
- ds_put_cstr (&str, filename);
-
- /* dirname modifies its argument, so we must copy it */
- copy = xstrdup (ds_cstr (&str));
- mkdir (dirname (copy), 0700);
- free (copy);
-
- w = xmlNewTextWriterFilename (ds_cstr (&str), 0);
-
- ds_destroy (&str);
-
- xmlTextWriterStartDocument (w, NULL, "UTF-8", NULL);
+ /* XXX this can fail */
+ *file = create_temp_file ();
+ *w = xmlNewTextWriter (xmlOutputBufferCreateFile (*file, NULL));