539 |
|
dtype = DTxyze; |
540 |
|
else if ((dtype == DTxyze) & (rm->dtype == DTrgbe)) |
541 |
|
dtype = DTrgbe; |
542 |
< |
if ((dtype == DTspec) & (rm->ncomp < 3)) |
542 |
> |
if ((dtype < DTspec) & (rm->ncomp > 3)) |
543 |
> |
dtype = DTspec; |
544 |
> |
else if ((dtype == DTspec) & (rm->ncomp <= 3)) |
545 |
|
return(0); |
546 |
|
|
547 |
|
if (dtype == DTascii) /* set file type (WINDOWS) */ |
562 |
|
} |
563 |
|
if (dtype >= DTspec) { /* # components & split? */ |
564 |
|
fputncomp(rm->ncomp, fp); |
565 |
< |
if (dtype == DTspec || (rm->ncomp > 3 && |
566 |
< |
memcmp(rm->wlpart, WLPART, sizeof(WLPART)))) |
565 |
> |
if (rm->ncomp > 3 && |
566 |
> |
memcmp(rm->wlpart, WLPART, sizeof(WLPART))) |
567 |
|
fputwlsplit(rm->wlpart, fp); |
568 |
|
} else if ((rm->ncomp != 3) & (rm->ncomp != 1)) |
569 |
|
return(0); /* wrong # components */ |
685 |
|
rsrc->info = NULL; rsrc->mapped = NULL; rsrc->mtx = NULL; |
686 |
|
return(1); |
687 |
|
} |
688 |
+ |
#ifdef MAP_FILE /* just matrix data -- leave metadata */ |
689 |
|
if (rdst->mapped) |
690 |
< |
return(0); /* XXX can't handle this case */ |
691 |
< |
/* just matrix data -- leave metadata */ |
692 |
< |
if (rdst->mtx) free(rdst->mtx); |
690 |
> |
munmap(rdst->mapped, mapped_size(rdst)); |
691 |
> |
else |
692 |
> |
#endif |
693 |
> |
if (rdst->mtx) |
694 |
> |
free(rdst->mtx); |
695 |
> |
rdst->mapped = rsrc->mapped; |
696 |
|
rdst->mtx = rsrc->mtx; |
697 |
< |
rsrc->mtx = NULL; |
697 |
> |
rsrc->mapped = NULL; rsrc->mtx = NULL; |
698 |
|
return(1); |
699 |
|
} |
700 |
|
|