- FILE*fi = fopen(filename, "wb");
- if(!fi) {
- fprintf(stderr, "Couldn't open file %s for writing\n", filename);
- return -1;
+ if(i->use_tempfile) {
+ move_file(i->filename, filename);
+ } else {
+ FILE*fi = fopen(filename, "wb");
+ if(!fi) {
+ fprintf(stderr, "Couldn't open file %s for writing\n", filename);
+ return -1;
+ }
+ fwrite(i->data, i->length, 1, fi);
+ fclose(fi);