Mail Archives: cygwin-developers/1998/06/28/08:47:41
>From: Sergey Okhapkin <sos AT prospect DOT com DOT ru>
>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
- Raw text -