added extension to temp files
[swftools.git] / lib / devices / record.c
index ae493ee..abace9b 100644 (file)
@@ -460,6 +460,7 @@ static void replay(struct _gfxdevice*dev, gfxdevice_t*out, reader_t*r)
            }
            case OP_ENDPAGE: {
                msg("<trace> replay: ENDPAGE");
+               out->endpage(out);
                break;
            }
            case OP_FINISH: {
@@ -584,7 +585,7 @@ void gfxresult_record_replay(gfxresult_t*result, gfxdevice_t*device)
     internal_result_t*i = (internal_result_t*)result->internal;
     
     reader_t r;
-    if(i->filename) {
+    if(i->use_tempfile) {
        reader_init_filereader2(&r, i->filename);
     } else {
        reader_init_memreader(&r, i->data, i->length);
@@ -633,6 +634,7 @@ static void record_result_destroy(gfxresult_t*r)
        free(i->data);i->data = 0;
     }
     if(i->filename) {
+       unlink(i->filename);
        free(i->filename);
     }
     free(r->internal);r->internal = 0;
@@ -668,7 +670,7 @@ void gfxdevice_record_flush(gfxdevice_t*dev, gfxdevice_t*out)
 {
     internal_t*i = (internal_t*)dev->internal;
     if(out) {
-       if(i->use_tempfile) {
+       if(!i->use_tempfile) {
            int len=0;
            void*data = writer_growmemwrite_memptr(&i->w, &len);
            reader_t r;
@@ -676,7 +678,8 @@ void gfxdevice_record_flush(gfxdevice_t*dev, gfxdevice_t*out)
            replay(dev, out, &r);
            writer_growmemwrite_reset(&i->w);
        } else {
-           msg("<error> Flushing not supported for file based record device");
+           msg("<fatal> Flushing not supported for file based record device");
+           exit(1);
        }
     }
 }
@@ -698,10 +701,10 @@ static gfxresult_t* record_finish(struct _gfxdevice*dev)
    
     ir->use_tempfile = i->use_tempfile;
     if(i->use_tempfile) {
+       ir->filename = i->filename;
+    } else {
        ir->data = writer_growmemwrite_getmem(&i->w);
        ir->length = i->w.pos;
-    } else {
-       ir->filename = i->filename;
     }
     i->w.finish(&i->w);
 
@@ -730,7 +733,7 @@ void gfxdevice_record_init(gfxdevice_t*dev, char use_tempfile)
        writer_init_growingmemwriter(&i->w, 1048576);
     } else {
        char buffer[128];
-       i->filename = strdup(mktempname(buffer));
+       i->filename = strdup(mktempname(buffer, "gfx"));
        writer_init_filewriter2(&i->w, i->filename);
     }
     i->fontlist = gfxfontlist_create();