- return do_seek (tf, offset) && do_write (tf, data, n);
+ static int idx = 0;
+ char *file_name;
+ FILE *stream;
+
+ initialise ();
+ if (temp_dir == NULL)
+ return NULL;
+
+ file_name = xasprintf ("%s/%d", temp_dir->dir_name, idx++);
+ register_temp_file (temp_dir, file_name);
+ stream = fopen_temp (file_name, "wb+");
+ if (stream == NULL)
+ unregister_temp_file (temp_dir, file_name);
+ else
+ setvbuf (stream, NULL, _IOFBF, 65536);
+
+ hmapx_insert (&map, file_name, hash_pointer (stream, 0));
+
+ return stream;