www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/1998/06/28/03:18:08

From: sos AT prospect DOT com DOT ru (Sergey Okhapkin)
Subject: What does it mean?
28 Jun 1998 03:18:08 -0700 :
Message-ID: <01BDA29D.2DCD33F0.cygnus.cygwin32.developers@sos>
To: "'cygwin32-developers AT cygnus DOT com'" <cygwin32-developers AT cygnus DOT com>

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019