public Method

Stat.executable?

stat.executable?     true or false

Returns true if stat is executable or if the operating system doesn’t distinguish executable files from nonexecutable files. The tests are made using the effective owner of the process.

File.stat("testfile").executable?   #=> false

Source Code

/*
*  call-seq:
*     stat.executable?    => true or false
*  
*  Returns <code>true</code> if <i>stat</i> is executable or if the
*  operating system doesn't distinguish executable files from
*  nonexecutable files. The tests are made using the effective owner of
*  the process.
*     
*     File.stat("testfile").executable?   #=> false
*     
*/

static VALUE
rb_stat_x(obj)
   VALUE obj;
{
   struct stat *st = get_stat(obj);

#ifdef USE_GETEUID
   if (geteuid() == 0) {
       return st->st_mode & S_IXUGO ? Qtrue : Qfalse;
   }
#endif
#ifdef S_IXUSR
   if (rb_stat_owned(obj))
       return st->st_mode & S_IXUSR ? Qtrue : Qfalse;
#endif
#ifdef S_IXGRP
   if (rb_stat_grpowned(obj))
       return st->st_mode & S_IXGRP ? Qtrue : Qfalse;
#endif
#ifdef S_IXOTH
   if (!(st->st_mode & S_IXOTH)) return Qfalse;
#endif
   return Qtrue;
}
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.