This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
DOS-EOL bug in "fgets"
- To: cygwin at sourceware dot cygnus dot com
- Subject: DOS-EOL bug in "fgets"
- From: "Sergey R. Grigoriev" <Serguei dot Grigoriev at Physik dot Uni-Augsburg dot DE>
- Date: Wed, 24 May 2000 16:59:00 +0200
- Organization: Uni-Augsburg
- Reply-To: Serguei dot Grigoriev at Physik dot Uni-Augsburg dot DE
Hallo!
I've found, that for DOS-EOL (\n\r)
fgets returns the string terminated by \r
(for UNIX-EOL (\n) is all OK).
By this way I can't use any makefile generated
by "bash ./configure" under W32 without converting it into
unix-EOL.
It was some DOS-EOL problem with sed.exe and I recompiled it with
CYGNUS on W32
To configure "sed" without right working "sed" I used sed-replacement
script:
#! bash
! d2u_s $1 $2 $3 $4
! sed_org "$@"
and wrote small d2u_s.c (MUST be compiled with CYGNUS!) to convert "-f
filename" file from DOS-EOL to UNIX-EOL.
If you interesting I can sent you sed-binaries :-)
Serge
*********d2u_s.c*********
#include <stdio.h>
void d2u(char * arg)
{
FILE* in;
FILE* tmp;
FILE* out;
int c;
in=fopen(arg,"rb");
tmp=fopen("d2u_tmp_","wb");
while((c=fgetc(in)) != EOF)
{
fprintf(tmp,"%c",(char)c);
}
fclose(tmp);
fclose(in);
tmp=fopen("d2u_tmp_","rb");
out=fopen(arg,"wb");
while((c=fgetc(tmp)) != EOF)
{
if(c!=0x0D) fprintf(out,"%c",(char)c);
}
fclose(out);
fclose(tmp);
}
int main(int argc, char ** argv)
{
int i;
for(i=1;i<argc;i++)
{
if(argv[i][0]=='-')
if(argv[i][1]=='f')
if(argv[i][2]==0x00)
if((i+1)<argc) d2u(argv[i+1]);
}
return 0;
}
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com