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>