O_O I was trying something different (using another ifstream), but the tune is the same. To me this sounds a bug in the library :\
Thanks for looking into this, please commit at will ;) On Wed, Aug 10, 2011 at 4:42 PM, Amos Jeffries <[email protected]> wrote: > On 11/08/11 02:10, Alex Rousskov wrote: >> >> On 08/09/2011 06:34 PM, Amos Jeffries wrote: >>> >>> On Tue, 09 Aug 2011 12:56:09 -0600, Alex Rousskov wrote: >>>> >>>> On 08/09/2011 02:13 AM, Kinkie wrote: >>>>>> >>>>>> ./cf_gen cf.data ../../src/cf.data.depend >>>>>> error while opening input file 'cf.data': Unknown error: 0 >>>>> >>>>> Now this puzzles me. >>>>> ifstream fp.bad() reports badbits set, but errno is OK. On FreeBSD >>>>> 6.4 only. >>>> >>>> Perhaps the errno is reset by subsequent system calls? How close is your >>>> bad() detection to the errno use? >>>> >>> >>> The code in question is: >>> >>> fp.open(type_depend, std::ifstream::in); >>> if (fp.fail()) { >>> std::cerr<< "error while opening type dependencies file '"<< >>> input_filename<< "': "<< strerror(errno)<< >>> std::endl; >>> exit(1); >>> } >> >> Does rewriting the above to preserve errno (as in the sketch below) help? >> >> fp.open(...); >> if (!fp) { >> const int savedErrno = errno; >> std::cerr<< "error: "<< strerror(errno)<< std::endl; >> } >> >> Cheers, >> >> Alex. > > Neither of those worked in any combination. > > But.... > looking at the snippet I see type_depends being opened and input_filename > being reported. So fix that typo and look for input_filename being opened. > ... which shows that fp is re-used between the two files. > > Adding fp.clear() to reset the flags (including EOF?) after the fp.close() > solves it. > > Amos > -- > Please be using > Current Stable Squid 2.7.STABLE9 or 3.1.14 > Beta testers wanted for 3.2.0.10 > -- /kinkie
