Mail Archives: cygwin-developers/1998/06/28/03:18:08
Hi!
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);
--
Sergey Okhapkin, http://www.lexa.ru/sos
Moscow, Russia
- Raw text -