Thread

  1. Use of access(X_OK) check in pg_upgrade

    Bruce Momjian <bruce@momjian.us> — 2011-05-18T15:41:51Z

    I broke the Win32 build members by using access(X_OK) in pg_upgrade.  I
    have a fix for this but looking at pg_upgrade's exec.c, I see for
    Win32:
    
    	    if ((buf.st_mode & S_IXUSR) == 0)
    
    I am confused why Windows supports S_IXUSR but not X_OK.
    
    -- 
      Bruce Momjian  <bruce@momjian.us>        http://momjian.us
      EnterpriseDB                             http://enterprisedb.com
    
      + It's impossible for everything to be true. +
    
    
  2. Re: Use of access(X_OK) check in pg_upgrade

    Magnus Hagander <magnus@hagander.net> — 2011-05-18T16:12:48Z

    On Wed, May 18, 2011 at 11:41, Bruce Momjian <bruce@momjian.us> wrote:
    > I broke the Win32 build members by using access(X_OK) in pg_upgrade.  I
    > have a fix for this but looking at pg_upgrade's exec.c, I see for
    > Win32:
    >
    >            if ((buf.st_mode & S_IXUSR) == 0)
    >
    > I am confused why Windows supports S_IXUSR but not X_OK.
    
    It doesn't natively - we define it in port/win32.h
    
    -- 
     Magnus Hagander
     Me: http://www.hagander.net/
     Work: http://www.redpill-linpro.com/
    
    
  3. Re: Use of access(X_OK) check in pg_upgrade

    Bruce Momjian <bruce@momjian.us> — 2011-05-18T16:13:58Z

    Bruce Momjian wrote:
    > I broke the Win32 build members by using access(X_OK) in pg_upgrade.  I
    > have a fix for this but looking at pg_upgrade's exec.c, I see for
    > Win32:
    > 
    > 	    if ((buf.st_mode & S_IXUSR) == 0)
    > 
    > I am confused why Windows supports S_IXUSR but not X_OK.
    
    I have applied the attached patch to fix this.
    
    -- 
      Bruce Momjian  <bruce@momjian.us>        http://momjian.us
      EnterpriseDB                             http://enterprisedb.com
    
      + It's impossible for everything to be true. +
    
  4. Re: Use of access(X_OK) check in pg_upgrade

    Bruce Momjian <bruce@momjian.us> — 2011-05-18T16:16:18Z

    Magnus Hagander wrote:
    > On Wed, May 18, 2011 at 11:41, Bruce Momjian <bruce@momjian.us> wrote:
    > > I broke the Win32 build members by using access(X_OK) in pg_upgrade. ?I
    > > have a fix for this but looking at pg_upgrade's exec.c, I see for
    > > Win32:
    > >
    > > ? ? ? ? ? ?if ((buf.st_mode & S_IXUSR) == 0)
    > >
    > > I am confused why Windows supports S_IXUSR but not X_OK.
    > 
    > It doesn't natively - we define it in port/win32.h
    
    Sure, but that is defined as _S_IEXEC:
    
            #define S_IXUSR _S_IEXEC
            #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
    
    So what is _S_IEXEC.  Anyway, execute permission means something
    different on Win32 for directories so I have a fix applied.
    
    -- 
      Bruce Momjian  <bruce@momjian.us>        http://momjian.us
      EnterpriseDB                             http://enterprisedb.com
    
      + It's impossible for everything to be true. +
    
    
  5. Re: Use of access(X_OK) check in pg_upgrade

    Magnus Hagander <magnus@hagander.net> — 2011-05-18T16:18:37Z

    On Wed, May 18, 2011 at 12:16, Bruce Momjian <bruce@momjian.us> wrote:
    > Magnus Hagander wrote:
    >> On Wed, May 18, 2011 at 11:41, Bruce Momjian <bruce@momjian.us> wrote:
    >> > I broke the Win32 build members by using access(X_OK) in pg_upgrade. ?I
    >> > have a fix for this but looking at pg_upgrade's exec.c, I see for
    >> > Win32:
    >> >
    >> > ? ? ? ? ? ?if ((buf.st_mode & S_IXUSR) == 0)
    >> >
    >> > I am confused why Windows supports S_IXUSR but not X_OK.
    >>
    >> It doesn't natively - we define it in port/win32.h
    >
    > Sure, but that is defined as _S_IEXEC:
    >
    >        #define S_IXUSR _S_IEXEC
    >        #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
    >
    > So what is _S_IEXEC.  Anyway, execute permission means something
    > different on Win32 for directories so I have a fix applied.
    
    I'm pretty sure it's mapped to read permissions internally in the API headers.
    
    -- 
     Magnus Hagander
     Me: http://www.hagander.net/
     Work: http://www.redpill-linpro.com/