From: cgf AT cygnus DOT com (Christopher Faylor) Subject: Re: What does it mean? 28 Jun 1998 08:47:41 -0700 Message-ID: <199806281544.LAA23472.cygnus.cygwin32.developers@kramden.cygnus.com> To: cygwin32-developers AT cygnus DOT com, sos AT prospect DOT com DOT ru >From: Sergey Okhapkin >Date: Sun, 28 Jun 1998 14:00:58 +0400 > >fhandler_disk_file::open() contains the following code: > > if ((os_being_run != winNT) && (!real_path.exec_p)) > { > DWORD done; > char magic[2]; > /* FIXME should we use /etc/magic ? */ > magic[0] = magic[1] = magic[2] = '\0'; > ReadFile (get_handle (), magic, 3, &done, 0); > if (magic[0] == ':' && magic[1] == '\n') > real_path.exec_p = 1; > > if (magic[0] == '#' && magic[1] == '!') > real_path.exec_p = 1; > if (flags & O_APPEND) > SetFilePointer (get_handle(), 0, 0, FILE_END); > else > SetFilePointer (get_handle(), 0, 0, FILE_BEGIN); > } > >The code seems to me buggy! Why we do not check file magic and do not set file pointer on NT? Shouldn't the code be something like: > > if (!real_path.exec_p) > { > DWORD done; > char magic[2]; > /* FIXME should we use /etc/magic ? */ > magic[0] = magic[1] = magic[2] = '\0'; > ReadFile (get_handle (), magic, 3, &done, 0); > if (magic[0] == ':' && magic[1] == '\n') > real_path.exec_p = 1; > > if (magic[0] == '#' && magic[1] == '!') > real_path.exec_p = 1; > } > if (flags & O_APPEND) > SetFilePointer (get_handle(), 0, 0, FILE_END); > else > SetFilePointer (get_handle(), 0, 0, FILE_BEGIN); Looks like a bug to me. I don't see what NT has to do with anything. Wanna submit a patch? cgf