Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Mar 2009 15:24:21 -0700
From:      Xin LI <delphij@delphij.net>
To:        =?ISO-8859-1?Q?G=E1bor_K=F6vesd=E1n?= <gabor@FreeBSD.org>
Cc:        Ed Schouten <ed@80386.nl>, FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: fgetc doubts
Message-ID:  <49B6E895.9040701@delphij.net>
In-Reply-To: <49B6E30F.7020205@FreeBSD.org>
References:  <49B6DC95.9070607@FreeBSD.org> <20090310215512.GI31961@hoeg.nl> <49B6E30F.7020205@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi, Gábor,

Gábor Kövesdán wrote:
> Ed Schouten escribió:
>> * Gábor Kövesdán <gabor@FreeBSD.org> wrote:
>>  
>>> Hello,
>>>
>>> I have a problem when reading files with fgetc when a 0xff character 
>>> comes. In my code the reading stops at that point as if EOF had been 
>>> reached, but that's not actually the case.
>>> The code is here: 
>>> http://p4web.freebsd.org/@md=d&cd=//&c=Nsd@//depot/projects/soc2008/gabor_textproc/grep/file.c?ac=64&rev1=40
>>>
>>> And the problem occurs in grep_fgetln() when the buffers is being
>>> filled in:
>>>            for (; i < bufsiz && !grep_feof(f); i++)
>>>                binbuf[i] = grep_fgetc(f);
>>>
>>> Thanks in advance,
>>>     
>>
>> Sign extension bug?
>>   
> I tried to substitute everything with int, because fgetc can return some
> error code afaik, but using int didn't help.

Is binbuf[] an array of char or unsigned char?  If it's signed char then
you may want something like ch = binbufptr[0] & 0xff I guess.

Cheers,
- --
Xin LI <delphij@delphij.net>	http://www.delphij.net/
FreeBSD - The Power to Serve!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (FreeBSD)

iEYEARECAAYFAkm26JUACgkQi+vbBBjt66CePwCgtXlqAYcdP6G1EUUtGk0nu7vD
I1sAoIJ+Hpop5mIHDdbfcXAbwMsqht2P
=A8DH
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49B6E895.9040701>