comparison file.c @ 26:20d40cb8abf3

Added Get Double@File
author Mike Pavone <pavone@retrodev.com>
date Fri, 26 Jun 2009 17:23:20 -0400
parents 94c885692eb5
children
comparison
equal deleted inserted replaced
24:8b2b3f4a2a58 26:20d40cb8abf3
469 file->offset += sizeof(long); 469 file->offset += sizeof(long);
470 } 470 }
471 return 0; 471 return 0;
472 } 472 }
473 473
474 int vis_file_get_double(datum ** inputlist, queue_entry * worker_entry)
475 {
476 file_data * file;
477 BOOL eof;
478 double num;
479
480 inputlist[0] = copy_datum(inputlist[0], 0);
481 file = (file_data *)inputlist[0]->c.generic.data;
482 VIS_EnterCriticalSection(file->shared->lock);
483 if(!(eof = (file->offset >= file->shared->size)))
484 {
485 vis_file_read_open_check(file);
486 fread(&num,sizeof(num),1, file->shared->file);
487 }
488 VIS_LeaveCriticalSection(file->shared->lock);
489 if(eof)
490 {
491 release_ref(inputlist[0]);
492 inputlist[0] = inputlist[1] = NULL;
493 inputlist[2] = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->program);
494 datum_set_yesno(inputlist[2], 1);
495 }
496 else
497 {
498 inputlist[1] = new_datum(BUILTIN_TYPE_REAL, 3, 0, worker_entry->instance->def->program);
499 inputlist[1]->c.real = num;
500 inputlist[2] = NULL;
501 file->offset += sizeof(num);
502 }
503 return 0;
504 }
505
474 void vis_file_write_open_check(file_data * file) 506 void vis_file_write_open_check(file_data * file)
475 { 507 {
476 switch(file->shared->status) 508 switch(file->shared->status)
477 { 509 {
478 case FILE_READ: 510 case FILE_READ: