[GRASS5] Libgrass_gis on Mingw - open.c patch

Radim Blazek blazek at itc.it
Fri May 13 03:30:55 EDT 2005


Javier A. Yebrin wrote:
> Hi all!
> This patch solves the problem of binary files read/write under win32.
> Practically forces the c runtime to binary-mode file translation as 
> default.
> It is not the cleanest way but it is simple.
> More info at: http://www.mingw.org/MinGWiki/index.php/binary
> 
> Cheers,
> 
> Javier Yebrin

Isn't it better to use 'b' as mode for fdopen?

Do I understand it correctly that text files on windows will be also 
written with LF only so that a mapset can be accessed from UNIX without 
problems?

Could it happen that also files which should be opened as text will be 
opened as binary? For example text input for modules.

Radim

> 
> 
> 
> 
> Javier A. Yebrin wrote:
> 
> 
>>Finally I've got most of grass modules compiled under Mingw/Msys. Then 
>>started to test them (first the raster modules, of course), and found 
>>some strange behaviour depending on the studied raster. I've used the 
>>Spearfish database and ran r.sum for all the present rasters (using 
>>spot.image to define the current region). These are the results(first 
>>line the raster name, then the stdout or
>>stderr):
> 
> 
>>aspect
>>WARNING: Fail of initial read of compressed file [aspect in PERMANENT]
> 
> 
>>You may see that the response changes from one type of raster to 
>>another, whether it is compresed or not. I'm trying to debug this 
>>module at the moment...
>>
>>In the meanwhile, do you have any ideas?
> 
> 
> The usual reason for that error message on Windows is that something is
> performing CRLF->LF conversion, which is inappropriate for a binary file.
> 
> ISTR that the MinGW runtime includes a function to enable/disable the
> conversions. You need to ensure that all I/O is done without conversions.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> diff -u -r /home/javier/grass-6.1.cvs_src_snapshot_2005_05_07/lib/gis/open.c /home/javier/static_grass/lib/gis/open.c
> --- /home/javier/grass-6.1.cvs_src_snapshot_2005_05_07/lib/gis/open.c	Tue Nov  9 12:20:13 2004
> +++ /home/javier/static_grass/lib/gis/open.c	Thu May 12 15:14:09 2005
> @@ -83,6 +83,13 @@
>  #include <unistd.h>
>  #include <fcntl.h>
>  
> +#ifdef __MINGW32__ 
> +#include <stdlib.h> /*  _fmode */
> +#include <fcntl.h> /*  _O_BINARY */
> +#undef _fmode
> +int _fmode = _O_BINARY;
> +#endif 
> +
>  int G__open (
>      char *element,
>      char *name,




More information about the grass-dev mailing list