Project

General

Profile

Feature #11796 ยป reduce_get_stat.patch

ksss (Yuki Kurihara), 12/09/2015 02:33 PM

View differences:

file.c
static VALUE
rb_stat_r(VALUE obj)
{
struct stat *st = get_stat(obj);
struct stat *st;
#ifdef USE_GETEUID
if (geteuid() == 0) return Qtrue;
#endif
st = get_stat(obj);
#ifdef S_IRUSR
if (rb_stat_owned(obj))
return st->st_mode & S_IRUSR ? Qtrue : Qfalse;
......
static VALUE
rb_stat_R(VALUE obj)
{
struct stat *st = get_stat(obj);
struct stat *st;
#ifdef USE_GETEUID
if (getuid() == 0) return Qtrue;
#endif
st = get_stat(obj);
#ifdef S_IRUSR
if (rb_stat_rowned(obj))
return st->st_mode & S_IRUSR ? Qtrue : Qfalse;
#endif
#ifdef S_IRGRP
if (rb_group_member(get_stat(obj)->st_gid))
if (rb_group_member(st->st_gid))
return st->st_mode & S_IRGRP ? Qtrue : Qfalse;
#endif
#ifdef S_IROTH
......
static VALUE
rb_stat_w(VALUE obj)
{
struct stat *st = get_stat(obj);
struct stat *st;
#ifdef USE_GETEUID
if (geteuid() == 0) return Qtrue;
#endif
st = get_stat(obj)
#ifdef S_IWUSR
if (rb_stat_owned(obj))
return st->st_mode & S_IWUSR ? Qtrue : Qfalse;
......
static VALUE
rb_stat_W(VALUE obj)
{
struct stat *st = get_stat(obj);
struct stat *st;
#ifdef USE_GETEUID
if (getuid() == 0) return Qtrue;
#endif
st = get_stat(obj);
#ifdef S_IWUSR
if (rb_stat_rowned(obj))
return st->st_mode & S_IWUSR ? Qtrue : Qfalse;
#endif
#ifdef S_IWGRP
if (rb_group_member(get_stat(obj)->st_gid))
if (rb_group_member(st->st_gid))
return st->st_mode & S_IWGRP ? Qtrue : Qfalse;
#endif
#ifdef S_IWOTH
......
return st->st_mode & S_IXUSR ? Qtrue : Qfalse;
#endif
#ifdef S_IXGRP
if (rb_group_member(get_stat(obj)->st_gid))
if (rb_group_member(st->st_gid))
return st->st_mode & S_IXGRP ? Qtrue : Qfalse;
#endif
#ifdef S_IXOTH
    (1-1/1)