dir.c File Reference

#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include "internal.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <ctype.h>
#include "ruby/util.h"

Go to the source code of this file.

Data Structures

struct  dir_data
struct  chdir_data
struct  glob_pattern
struct  glob_args
struct  brace_args

Defines

#define dirent   direct
#define NAMLEN(dirent)   (dirent)->d_namlen
#define HAVE_HFS   0
#define IF_HAVE_HFS(something)
#define FNM_NOESCAPE   0x01
#define FNM_PATHNAME   0x02
#define FNM_DOTMATCH   0x04
#define FNM_CASEFOLD   0x08
#define FNM_EXTGLOB   0x10
#define FNM_SYSCASE   0
#define FNM_NOMATCH   1
#define FNM_ERROR   2
#define Next(p, e, enc)   ((p)+ rb_enc_mbclen((p), (e), (enc)))
#define Inc(p, e, enc)   ((p) = Next((p), (e), (enc)))
#define UNESCAPE(p)   (escape && *(p) == '\\' ? (p) + 1 : (p))
#define ISEND(p)   (!*(p) || (pathname && *(p) == '/'))
#define RETURN(val)   return *pcur = p, *scur = s, (val);
#define GlobPathValue(str, safe)
#define check_safe_glob(str, safe)   ((safe) ? rb_check_safe_obj(str) : (void)0)
#define check_glob_encoding(str)   rb_enc_check((str), rb_enc_from_encoding(rb_usascii_encoding()))
#define GetDIR(obj, dirp)   ((dirp) = dir_check(obj))
#define READDIR(dir, enc)   readdir((dir))
#define dir_tell   rb_f_notimplement
#define dir_seek   rb_f_notimplement
#define dir_set_pos   rb_f_notimplement
#define dir_s_chroot   rb_f_notimplement
#define GLOB_VERBOSE   (1U << (sizeof(int) * CHAR_BIT - 1))
#define sys_warning(val)   (void)((flags & GLOB_VERBOSE) && rb_protect(sys_warning_1, (VALUE)(val), 0))
#define GLOB_ALLOC(type)   ((type *)malloc(sizeof(type)))
#define GLOB_ALLOC_N(type, n)   ((type *)malloc(sizeof(type) * (n)))
#define GLOB_FREE(ptr)   free(ptr)
#define GLOB_JUMP_TAG(status)   (((status) == -1) ? rb_memerror() : rb_jump_tag(status))
#define to_be_ignored(e)   ((e) == ENOENT || (e) == ENOTDIR)
#define STAT(p, s)   stat((p), (s))
#define do_lstat   do_stat
#define S_ISDIR(m)   (((m) & S_IFMT) == S_IFDIR)
#define S_ISLNK(m)   (0)
#define glob_call_func(func, path, arg, enc)   (*(func))((path), (arg), (enc))

Enumerations

enum  glob_pattern_type {
  PLAIN, MAGICAL, RECURSIVE, MATCH_ALL,
  MATCH_DIR
}
enum  answer { UNKNOWN = -1, NO, YES }

Functions

char * getenv ()
char * strchr (char *, char)
static char * bracket (const char *p, const char *pend, const char *s, const char *send, int flags, rb_encoding *enc)
static int fnmatch_helper (const char **pcur, const char **scur, int flags, rb_encoding *enc)
static int fnmatch (const char *pattern, rb_encoding *enc, const char *string, int flags)
static void dir_mark (void *ptr)
static void dir_free (void *ptr)
static size_t dir_memsize (const void *ptr)
static VALUE dir_close (VALUE)
static VALUE dir_s_alloc (VALUE klass)
static VALUE dir_initialize (int argc, VALUE *argv, VALUE dir)
static VALUE dir_s_open (int argc, VALUE *argv, VALUE klass)
static void dir_closed (void)
static struct dir_datadir_check (VALUE dir)
static VALUE dir_inspect (VALUE dir)
static VALUE dir_path (VALUE dir)
static VALUE dir_read (VALUE dir)
static VALUE dir_each (VALUE dir)
static VALUE dir_rewind (VALUE dir)
static void dir_chdir (VALUE path)
static VALUE chdir_yield (struct chdir_data *args)
static VALUE chdir_restore (struct chdir_data *args)
static VALUE dir_s_chdir (int argc, VALUE *argv, VALUE obj)
VALUE rb_dir_getwd (void)
static VALUE dir_s_getwd (VALUE dir)
static void check_dirname (volatile VALUE *dir)
static VALUE dir_s_mkdir (int argc, VALUE *argv, VALUE obj)
static VALUE dir_s_rmdir (VALUE obj, VALUE dir)
static VALUE sys_warning_1 (VALUE mesg)
static int do_stat (const char *path, struct stat *pst, int flags)
static DIRdo_opendir (const char *path, int flags, rb_encoding *enc)
static int has_magic (const char *p, const char *pend, int flags, rb_encoding *enc)
static char * find_dirsep (const char *p, const char *pend, int flags, rb_encoding *enc)
static char * remove_backslashes (char *p, register const char *pend, rb_encoding *enc)
static void glob_free_pattern (struct glob_pattern *list)
static struct glob_patternglob_make_pattern (const char *p, const char *e, int flags, rb_encoding *enc)
static char * join_path (const char *path, long len, int dirsep, const char *name, size_t namlen)
static VALUE glob_func_caller (VALUE val)
static int glob_helper (const char *path, int dirsep, enum answer exist, enum answer isdir, struct glob_pattern **beg, struct glob_pattern **end, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
static int ruby_glob0 (const char *path, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
int ruby_glob (const char *path, int flags, ruby_glob_func *func, VALUE arg)
static int rb_glob_caller (const char *path, VALUE a, void *enc)
static int rb_glob2 (const char *path, int flags, void(*func)(const char *, VALUE, void *), VALUE arg, rb_encoding *enc)
void rb_glob (const char *path, void(*func)(const char *, VALUE, void *), VALUE arg)
static void push_pattern (const char *path, VALUE ary, void *enc)
static int ruby_brace_expand (const char *str, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
static int glob_brace (const char *path, VALUE val, void *enc)
static int ruby_brace_glob0 (const char *str, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
int ruby_brace_glob (const char *str, int flags, ruby_glob_func *func, VALUE arg)
int ruby_brace_glob_with_enc (const char *str, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
static int push_glob (VALUE ary, VALUE str, int flags)
static VALUE rb_push_glob (VALUE str, int flags)
static VALUE dir_globs (long argc, const VALUE *argv, int flags)
static VALUE dir_s_aref (int argc, VALUE *argv, VALUE obj)
static VALUE dir_s_glob (int argc, VALUE *argv, VALUE obj)
static VALUE dir_open_dir (int argc, VALUE *argv)
static VALUE dir_foreach (int argc, VALUE *argv, VALUE io)
static VALUE dir_entries (int argc, VALUE *argv, VALUE io)
static int fnmatch_brace (const char *pattern, VALUE val, void *enc)
static VALUE file_s_fnmatch (int argc, VALUE *argv, VALUE obj)
static VALUE dir_s_home (int argc, VALUE *argv, VALUE obj)
static VALUE rb_dir_exists_p (VALUE obj, VALUE fname)
void Init_Dir (void)

Variables

VALUE rb_cDir
static const rb_data_type_t dir_data_type
static int chdir_blocking = 0
static VALUE chdir_thread = Qnil


Define Documentation

#define check_glob_encoding ( str   )     rb_enc_check((str), rb_enc_from_encoding(rb_usascii_encoding()))

Definition at line 396 of file dir.c.

#define check_safe_glob ( str,
safe   )     ((safe) ? rb_check_safe_obj(str) : (void)0)

Definition at line 395 of file dir.c.

#define dir_s_chroot   rb_f_notimplement

Definition at line 956 of file dir.c.

Referenced by Init_Dir().

#define dir_seek   rb_f_notimplement

Definition at line 700 of file dir.c.

Referenced by Init_Dir().

#define dir_set_pos   rb_f_notimplement

Definition at line 725 of file dir.c.

Referenced by Init_Dir().

#define dir_tell   rb_f_notimplement

Definition at line 671 of file dir.c.

Referenced by Init_Dir().

#define dirent   direct

Definition at line 32 of file dir.c.

Referenced by dir_each(), and dir_read().

#define do_lstat   do_stat

Definition at line 1064 of file dir.c.

#define FNM_CASEFOLD   0x08

Definition at line 116 of file dir.c.

Referenced by bracket(), fnmatch_helper(), has_magic(), and Init_Dir().

#define FNM_DOTMATCH   0x04

Definition at line 115 of file dir.c.

Referenced by fnmatch(), and fnmatch_helper().

#define FNM_ERROR   2

Definition at line 125 of file dir.c.

#define FNM_EXTGLOB   0x10

Definition at line 117 of file dir.c.

Referenced by file_s_fnmatch(), and Init_Dir().

#define FNM_NOESCAPE   0x01

Definition at line 113 of file dir.c.

Referenced by bracket(), find_dirsep(), fnmatch_helper(), glob_helper(), has_magic(), Init_Dir(), and ruby_brace_expand().

#define FNM_NOMATCH   1

Definition at line 124 of file dir.c.

Referenced by fnmatch(), fnmatch_brace(), and fnmatch_helper().

#define FNM_PATHNAME   0x02

Definition at line 114 of file dir.c.

Referenced by fnmatch(), fnmatch_helper(), and Init_Dir().

#define FNM_SYSCASE   0

Definition at line 121 of file dir.c.

Referenced by has_magic(), Init_Dir(), rb_glob2(), and ruby_glob0().

#define GetDIR ( obj,
dirp   )     ((dirp) = dir_check(obj))

Definition at line 516 of file dir.c.

Referenced by dir_close(), dir_each(), dir_read(), and dir_rewind().

#define GLOB_ALLOC ( type   )     ((type *)malloc(sizeof(type)))

Definition at line 1024 of file dir.c.

Referenced by glob_make_pattern().

#define GLOB_ALLOC_N ( type,
 )     ((type *)malloc(sizeof(type) * (n)))

Definition at line 1025 of file dir.c.

Referenced by glob_make_pattern(), join_path(), ruby_brace_expand(), and ruby_glob0().

#define glob_call_func ( func,
path,
arg,
enc   )     (*(func))((path), (arg), (enc))

Definition at line 1316 of file dir.c.

#define GLOB_FREE ( ptr   )     free(ptr)

Definition at line 1026 of file dir.c.

Referenced by glob_free_pattern(), glob_make_pattern(), ruby_brace_expand(), and ruby_glob0().

#define GLOB_JUMP_TAG ( status   )     (((status) == -1) ? rb_memerror() : rb_jump_tag(status))

Definition at line 1027 of file dir.c.

Referenced by dir_globs(), rb_glob(), and rb_push_glob().

#define GLOB_VERBOSE   (1U << (sizeof(int) * CHAR_BIT - 1))

Definition at line 1020 of file dir.c.

Referenced by push_glob(), rb_glob2(), ruby_brace_glob(), ruby_brace_glob_with_enc(), and ruby_glob().

#define GlobPathValue ( str,
safe   ) 

Value:

/* can contain null bytes as separators */      \
    (!RB_TYPE_P((str), T_STRING) ?              \
     (void)FilePathValue(str) :                 \
     (void)(check_safe_glob((str), (safe)),             \
      check_glob_encoding(str), (str)))

Definition at line 389 of file dir.c.

Referenced by dir_globs(), dir_initialize(), and rb_push_glob().

#define HAVE_HFS   0

Definition at line 81 of file dir.c.

#define IF_HAVE_HFS ( something   ) 

Definition at line 110 of file dir.c.

Referenced by dir_each().

#define Inc ( p,
e,
enc   )     ((p) = Next((p), (e), (enc)))

Definition at line 128 of file dir.c.

Referenced by chompdirsep(), copy_home_path(), fnmatch(), fnmatch_helper(), rb_enc_path_last_separator(), rb_enc_path_next(), rb_file_expand_path_internal(), rb_realpath_internal(), remove_backslashes(), ruby_brace_expand(), ruby_enc_find_basename(), and ruby_enc_find_extname().

#define ISEND (  )     (!*(p) || (pathname && *(p) == '/'))

Definition at line 205 of file dir.c.

Referenced by fnmatch_helper().

#define NAMLEN ( dirent   )     (dirent)->d_namlen

Definition at line 33 of file dir.c.

Referenced by dir_each(), and dir_read().

#define Next ( p,
e,
enc   )     ((p)+ rb_enc_mbclen((p), (e), (enc)))

Definition at line 127 of file dir.c.

Referenced by find_dirsep(), and has_magic().

#define READDIR ( dir,
enc   )     readdir((dir))

Definition at line 565 of file dir.c.

Referenced by dir_each(), and dir_read().

#define RETURN ( val   )     return *pcur = p, *scur = s, (val);

Definition at line 206 of file dir.c.

Referenced by big5_mbc_enc_len0(), cp949_mbc_enc_len(), euckr_mbc_enc_len(), euctw_mbc_enc_len(), fnmatch_helper(), gb18030_mbc_enc_len(), gbk_mbc_enc_len(), get_event_id(), and symbol2event_flag().

#define S_ISDIR (  )     (((m) & S_IFMT) == S_IFDIR)

Definition at line 1289 of file dir.c.

Referenced by dln_find_1(), load_file_internal(), path_check_0(), rb_file_directory_p(), rb_file_ftype(), and rb_stat_d().

#define S_ISLNK (  )     (0)

Definition at line 1294 of file dir.c.

Referenced by rb_file_expand_path_internal(), rb_file_ftype(), rb_file_symlink_p(), rb_stat_l(), and realpath_rec().

#define STAT ( p,
 )     stat((p), (s))

Definition at line 1038 of file dir.c.

Referenced by do_stat(), eaccess(), path_check_0(), rb_stat(), and rb_stat_init().

#define sys_warning ( val   )     (void)((flags & GLOB_VERBOSE) && rb_protect(sys_warning_1, (VALUE)(val), 0))

Definition at line 1021 of file dir.c.

Referenced by do_opendir(), and do_stat().

#define to_be_ignored (  )     ((e) == ENOENT || (e) == ENOTDIR)

Definition at line 1033 of file dir.c.

Referenced by do_opendir(), and do_stat().

#define UNESCAPE (  )     (escape && *(p) == '\\' ? (p) + 1 : (p))

Definition at line 204 of file dir.c.

Referenced by fnmatch_helper().


Enumeration Type Documentation

enum answer

Enumerator:
UNKNOWN 
NO 
YES 

Definition at line 1286 of file dir.c.

enum glob_pattern_type

Enumerator:
PLAIN 
MAGICAL 
RECURSIVE 
MATCH_ALL 
MATCH_DIR 

Definition at line 1182 of file dir.c.


Function Documentation

static char* bracket ( const char *  p,
const char *  pend,
const char *  s,
const char *  send,
int  flags,
rb_encoding enc 
) [static]

Definition at line 131 of file dir.c.

References FNM_CASEFOLD, FNM_NOESCAPE, memcmp(), NULL, rb_enc_codepoint, rb_enc_mbclen(), and rb_enc_toupper().

Referenced by fnmatch_helper().

static VALUE chdir_restore ( struct chdir_data args  )  [static]

Definition at line 798 of file dir.c.

References args, dir_chdir(), and Qnil.

Referenced by dir_s_chdir().

static VALUE chdir_yield ( struct chdir_data args  )  [static]

Definition at line 787 of file dir.c.

References args, dir_chdir(), Qnil, rb_thread_current(), rb_yield(), and TRUE.

Referenced by dir_s_chdir().

static void check_dirname ( volatile VALUE *  dir  )  [static]

Definition at line 917 of file dir.c.

References FilePathValue, rb_enc_get(), rb_enc_path_end(), rb_enc_path_skip_prefix(), rb_secure(), rb_str_encode_ospath(), rb_str_subseq(), RSTRING_GETMEM, and VALUE.

Referenced by dir_s_mkdir(), and dir_s_rmdir().

static void dir_chdir ( VALUE  path  )  [static]

Definition at line 772 of file dir.c.

References rb_sys_fail_path, and RSTRING_PTR.

Referenced by chdir_restore(), chdir_yield(), and dir_s_chdir().

static struct dir_data* dir_check ( VALUE  dir  )  [static]

Definition at line 507 of file dir.c.

References dir_data::dir, dir_closed(), dir_data_type, rb_check_frozen, and rb_check_typeddata().

static VALUE dir_close ( VALUE   )  [static]

Definition at line 760 of file dir.c.

References closedir, dir_data::dir, GetDIR, NULL, and Qnil.

Referenced by dir_entries(), dir_foreach(), dir_s_open(), and Init_Dir().

static void dir_closed ( void   )  [static]

Definition at line 501 of file dir.c.

References rb_eIOError, and rb_raise().

Referenced by dir_check(), and dir_each().

static VALUE dir_each ( VALUE  dir  )  [static]

Definition at line 618 of file dir.c.

References dir_data::dir, dir_closed(), dirent, dp, dir_data::enc, GetDIR, IF_HAVE_HFS, name, NAMLEN, NIL_P, NULL, rb_external_str_new_with_enc(), rb_external_str_with_enc(), rb_yield(), READDIR, RETURN_ENUMERATOR, rewinddir, and VALUE.

Referenced by dir_foreach(), and Init_Dir().

static VALUE dir_entries ( int  argc,
VALUE *  argv,
VALUE  io 
) [static]

Definition at line 1963 of file dir.c.

References dir_close(), dir_open_dir(), rb_Array(), rb_ensure(), and VALUE.

Referenced by Init_Dir().

static VALUE dir_foreach ( int  argc,
VALUE *  argv,
VALUE  io 
) [static]

Definition at line 1937 of file dir.c.

References dir_close(), dir_each(), dir_open_dir(), Qnil, rb_ensure(), RETURN_ENUMERATOR, and VALUE.

Referenced by Init_Dir().

static void dir_free ( void *  ptr  )  [static]

Definition at line 366 of file dir.c.

References closedir, dir_data::dir, and xfree.

static VALUE dir_globs ( long  argc,
const VALUE *  argv,
int  flags 
) [static]

Definition at line 1769 of file dir.c.

References GLOB_JUMP_TAG, GlobPathValue, push_glob(), rb_ary_new(), TRUE, and VALUE.

Referenced by dir_s_aref(), and dir_s_glob().

static VALUE dir_initialize ( int  argc,
VALUE *  argv,
VALUE  dir 
) [static]

Definition at line 422 of file dir.c.

References closedir, dir_data_type, dp, dir_data::enc, errno, FALSE, GlobPathValue, NIL_P, NULL, opendir, Qnil, Qundef, rb_filesystem_encoding(), rb_gc(), rb_get_kwargs(), rb_intern, rb_scan_args(), rb_str_dup_frozen, rb_str_encode_ospath(), rb_sys_fail_path, rb_to_encoding(), RSTRING_PTR, TypedData_Get_Struct, and VALUE.

Referenced by dir_s_open(), and Init_Dir().

static VALUE dir_inspect ( VALUE  dir  )  [static]

Definition at line 526 of file dir.c.

References CLASS_OF, dir_data_type, NIL_P, dir_data::path, rb_class_name(), rb_funcall(), rb_intern, rb_str_append(), rb_str_cat2(), rb_str_new_cstr(), TypedData_Get_Struct, and VALUE.

Referenced by Init_Dir().

static void dir_mark ( void *  ptr  )  [static]

Definition at line 359 of file dir.c.

References dir_data::dir, and rb_gc_mark().

static size_t dir_memsize ( const void *  ptr  )  [static]

Definition at line 376 of file dir.c.

static VALUE dir_open_dir ( int  argc,
VALUE *  argv 
) [static]

Definition at line 1905 of file dir.c.

References dir_data_type, rb_check_typeddata(), rb_funcall2, rb_intern, and VALUE.

Referenced by dir_entries(), and dir_foreach().

static VALUE dir_path ( VALUE  dir  )  [static]

Definition at line 553 of file dir.c.

References dir_data_type, NIL_P, dir_data::path, Qnil, rb_str_dup(), and TypedData_Get_Struct.

Referenced by Init_Dir().

static VALUE dir_read ( VALUE  dir  )  [static]

Definition at line 581 of file dir.c.

References dir_data::dir, dirent, dp, dir_data::enc, errno, GetDIR, NAMLEN, NULL, Qnil, rb_external_str_new_with_enc(), rb_sys_fail(), and READDIR.

Referenced by Init_Dir().

static VALUE dir_rewind ( VALUE  dir  )  [static]

Definition at line 740 of file dir.c.

References dir_data::dir, GetDIR, and rewinddir.

Referenced by Init_Dir().

static VALUE dir_s_alloc ( VALUE  klass  )  [static]

Definition at line 399 of file dir.c.

References dir_data::dir, dir_data_type, dir_data::enc, NULL, dir_data::path, Qnil, TypedData_Make_Struct, and VALUE.

Referenced by Init_Dir().

static VALUE dir_s_aref ( int  argc,
VALUE *  argv,
VALUE  obj 
) [static]

Definition at line 1794 of file dir.c.

References dir_globs(), and rb_push_glob().

Referenced by Init_Dir().

static VALUE dir_s_chdir ( int  argc,
VALUE *  argv,
VALUE  obj 
) [static]

Definition at line 849 of file dir.c.

References args, chdir_restore(), chdir_yield(), dir_chdir(), FALSE, FilePathValue, getenv, INT2FIX, Qnil, rb_block_given_p(), rb_dir_getwd(), rb_eArgError, rb_ensure(), rb_raise(), rb_scan_args(), rb_secure(), rb_str_encode_ospath(), rb_str_new2, rb_thread_current(), rb_warn(), and VALUE.

Referenced by Init_Dir().

static VALUE dir_s_getwd ( VALUE  dir  )  [static]

Definition at line 911 of file dir.c.

References rb_dir_getwd().

Referenced by Init_Dir().

static VALUE dir_s_glob ( int  argc,
VALUE *  argv,
VALUE  obj 
) [static]

Definition at line 1878 of file dir.c.

References dir_globs(), NIL_P, NUM2INT, Qnil, RARRAY_CONST_PTR, RARRAY_LEN, rb_ary_each(), rb_block_given_p(), rb_check_array_type(), rb_push_glob(), rb_scan_args(), and VALUE.

Referenced by Init_Dir().

static VALUE dir_s_home ( int  argc,
VALUE *  argv,
VALUE  obj 
) [static]

Definition at line 2134 of file dir.c.

References NIL_P, Qnil, rb_check_arity, rb_default_home_dir(), rb_home_dir_of(), rb_must_asciicompat(), rb_str_new(), SafeStringValue, StringValueCStr, and VALUE.

Referenced by Init_Dir().

static VALUE dir_s_mkdir ( int  argc,
VALUE *  argv,
VALUE  obj 
) [static]

Definition at line 975 of file dir.c.

References check_dirname(), INT2FIX, NUM2INT, rb_scan_args(), rb_sys_fail_path, RSTRING_PTR, and VALUE.

Referenced by Init_Dir().

static VALUE dir_s_open ( int  argc,
VALUE *  argv,
VALUE  klass 
) [static]

Definition at line 487 of file dir.c.

References dir_data::dir, dir_close(), dir_data_type, dir_initialize(), dp, rb_block_given_p(), rb_ensure(), rb_yield(), TypedData_Make_Struct, and VALUE.

Referenced by Init_Dir().

static VALUE dir_s_rmdir ( VALUE  obj,
VALUE  dir 
) [static]

Definition at line 1004 of file dir.c.

References check_dirname(), INT2FIX, rb_sys_fail_path, and RSTRING_PTR.

Referenced by Init_Dir().

static DIR* do_opendir ( const char *  path,
int  flags,
rb_encoding enc 
) [static]

Definition at line 1068 of file dir.c.

References errno, NULL, opendir, rb_ascii8bit_encoding(), rb_enc_str_new(), rb_str_encode_ospath(), rb_usascii_encoding(), rb_utf8_encoding(), RSTRING_PTR, strlen(), sys_warning, to_be_ignored, and VALUE.

static int do_stat ( const char *  path,
struct stat *  pst,
int  flags 
) [static]

Definition at line 1043 of file dir.c.

References errno, STAT, sys_warning, and to_be_ignored.

static VALUE file_s_fnmatch ( int  argc,
VALUE *  argv,
VALUE  obj 
) [static]

Definition at line 2091 of file dir.c.

References args, FilePathStringValue, FNM_EXTGLOB, fnmatch(), fnmatch_brace(), NUM2INT, Qfalse, Qtrue, rb_enc_compatible(), rb_enc_get(), RB_GC_GUARD, rb_scan_args(), RSTRING_PTR, ruby_brace_expand(), StringValue, and VALUE.

Referenced by Init_Dir().

static char* find_dirsep ( const char *  p,
const char *  pend,
int  flags,
rb_encoding enc 
) [static]

Definition at line 1122 of file dir.c.

References FNM_NOESCAPE, and Next.

Referenced by glob_make_pattern().

static int fnmatch ( const char *  pattern,
rb_encoding enc,
const char *  string,
int  flags 
) [static]

Definition at line 301 of file dir.c.

References FNM_DOTMATCH, FNM_NOMATCH, FNM_PATHNAME, fnmatch_helper(), Inc, and strlen().

Referenced by file_s_fnmatch(), and fnmatch_brace().

static int fnmatch_brace ( const char *  pattern,
VALUE  val,
void *  enc 
) [static]

Definition at line 1972 of file dir.c.

References ENC_CODERANGE_7BIT, brace_args::flags, FNM_NOMATCH, fnmatch(), rb_enc_asciicompat, rb_enc_get(), rb_enc_str_asciionly_p(), rb_str_coderange_scan_restartable(), RSTRING_PTR, strlen(), brace_args::value, and VALUE.

Referenced by file_s_fnmatch().

static int fnmatch_helper ( const char **  pcur,
const char **  scur,
int  flags,
rb_encoding enc 
) [static]

Definition at line 209 of file dir.c.

References bracket(), FNM_CASEFOLD, FNM_DOTMATCH, FNM_NOESCAPE, FNM_NOMATCH, FNM_PATHNAME, Inc, ISEND, MBCLEN_CHARFOUND_P, memcmp(), rb_enc_codepoint, rb_enc_precise_mbclen(), rb_enc_toupper(), RETURN, strlen(), and UNESCAPE.

Referenced by fnmatch().

char* getenv (  ) 

static int glob_brace ( const char *  path,
VALUE  val,
void *  enc 
) [static]

Definition at line 1693 of file dir.c.

References brace_args::flags, brace_args::func, ruby_glob0(), and brace_args::value.

Referenced by ruby_brace_glob0().

static void glob_free_pattern ( struct glob_pattern list  )  [static]

Definition at line 1260 of file dir.c.

References GLOB_FREE, list, and glob_pattern::str.

Referenced by glob_make_pattern(), and ruby_glob0().

static VALUE glob_func_caller ( VALUE  val  )  [static]

Definition at line 1308 of file dir.c.

References args, and Qnil.

Referenced by rb_glob_caller().

static int glob_helper ( const char *  path,
int  dirsep,
enum answer  exist,
enum answer  isdir,
struct glob_pattern **  beg,
struct glob_pattern **  end,
int  flags,
ruby_glob_func func,
VALUE  arg,
rb_encoding enc 
) [static]

Definition at line 1319 of file dir.c.

References FNM_NOESCAPE, MAGICAL, MATCH_ALL, glob_pattern::next, PLAIN, rb_bug(), RECURSIVE, and stat.

Referenced by ruby_glob0().

static struct glob_pattern* glob_make_pattern ( const char *  p,
const char *  e,
int  flags,
rb_encoding enc 
) [static]

Definition at line 1193 of file dir.c.

References buf, find_dirsep(), GLOB_ALLOC, GLOB_ALLOC_N, GLOB_FREE, glob_free_pattern(), has_magic(), list, MAGICAL, MATCH_ALL, glob_pattern::next, PLAIN, RECURSIVE, glob_pattern::str, tail, and glob_pattern::type.

Referenced by ruby_glob0().

static int has_magic ( const char *  p,
const char *  pend,
int  flags,
rb_encoding enc 
) [static]

Definition at line 1090 of file dir.c.

References FNM_CASEFOLD, FNM_NOESCAPE, FNM_SYSCASE, ISALPHA, and Next.

Referenced by glob_make_pattern().

void Init_Dir ( void   ) 

Definition at line 2188 of file dir.c.

References dir_close(), dir_each(), dir_entries(), dir_foreach(), dir_initialize(), dir_inspect(), dir_path(), dir_read(), dir_rewind(), dir_s_alloc(), dir_s_aref(), dir_s_chdir(), dir_s_chroot, dir_s_getwd(), dir_s_glob(), dir_s_home(), dir_s_mkdir(), dir_s_open(), dir_s_rmdir(), dir_seek, dir_set_pos, dir_tell, file_s_fnmatch(), FNM_CASEFOLD, FNM_EXTGLOB, FNM_NOESCAPE, FNM_PATHNAME, FNM_SYSCASE, INT2FIX, rb_cFile, rb_cObject, rb_define_alloc_func(), rb_define_class(), rb_define_method(), rb_define_singleton_method(), rb_dir_exists_p(), rb_file_const(), rb_file_directory_p(), rb_include_module(), and rb_mEnumerable.

static char* join_path ( const char *  path,
long  len,
int  dirsep,
const char *  name,
size_t  namlen 
) [static]

Definition at line 1272 of file dir.c.

References buf, and GLOB_ALLOC_N.

static int push_glob ( VALUE  ary,
VALUE  str,
int  flags 
) [static]

Definition at line 1726 of file dir.c.

References args, glob_args::enc, GLOB_VERBOSE, push_pattern(), rb_enc_get(), rb_filesystem_encoding(), RB_GC_GUARD, rb_glob_caller(), rb_usascii_encoding(), RSTRING_PTR, ruby_brace_glob0(), and VALUE.

Referenced by dir_globs(), and rb_push_glob().

static void push_pattern ( const char *  path,
VALUE  ary,
void *  enc 
) [static]

Definition at line 1622 of file dir.c.

References rb_ary_push(), rb_external_str_new_with_enc(), and strlen().

Referenced by push_glob().

static VALUE rb_dir_exists_p ( VALUE  obj,
VALUE  fname 
) [static]

Definition at line 2170 of file dir.c.

References rb_file_directory_p(), and rb_warning().

Referenced by Init_Dir().

VALUE rb_dir_getwd ( void   ) 

Definition at line 886 of file dir.c.

References my_getcwd, rb_enc_associate(), rb_filesystem_encoding(), rb_tainted_str_new2, VALUE, and xfree.

Referenced by dir_s_chdir(), dir_s_getwd(), and rb_realpath_internal().

void rb_glob ( const char *  path,
void(*)(const char *, VALUE, void *)  func,
VALUE  arg 
)

Definition at line 1615 of file dir.c.

References GLOB_JUMP_TAG, rb_ascii8bit_encoding(), and rb_glob2().

static int rb_glob2 ( const char *  path,
int  flags,
void(*)(const char *, VALUE, void *)  func,
VALUE  arg,
rb_encoding enc 
) [static]

Definition at line 1596 of file dir.c.

References args, glob_args::enc, FNM_SYSCASE, GLOB_VERBOSE, rb_glob_caller(), rb_warning(), ruby_glob0(), and VALUE.

Referenced by rb_glob().

static int rb_glob_caller ( const char *  path,
VALUE  a,
void *  enc 
) [static]

Definition at line 1585 of file dir.c.

References args, glob_func_caller(), and rb_protect().

Referenced by push_glob(), and rb_glob2().

static VALUE rb_push_glob ( VALUE  str,
int  flags 
) [static]

Definition at line 1742 of file dir.c.

References GLOB_JUMP_TAG, GlobPathValue, push_glob(), rb_ary_new(), rb_enc_get(), rb_enc_str_new(), RSTRING_LEN, RSTRING_PTR, strlen(), TRUE, and VALUE.

Referenced by dir_s_aref(), and dir_s_glob().

static char* remove_backslashes ( char *  p,
register const char *  pend,
rb_encoding enc 
) [static]

Definition at line 1157 of file dir.c.

References Inc, and memmove().

static int ruby_brace_expand ( const char *  str,
int  flags,
ruby_glob_func func,
VALUE  arg,
rb_encoding enc 
) [static]

Definition at line 1628 of file dir.c.

References glob_args::enc, FNM_NOESCAPE, GLOB_ALLOC_N, GLOB_FREE, Inc, shift(), strlcpy(), and strlen().

Referenced by file_s_fnmatch(), and ruby_brace_glob0().

int ruby_brace_glob ( const char *  str,
int  flags,
ruby_glob_func func,
VALUE  arg 
)

Definition at line 1713 of file dir.c.

References GLOB_VERBOSE, rb_ascii8bit_encoding(), and ruby_brace_glob0().

Referenced by cmdglob().

static int ruby_brace_glob0 ( const char *  str,
int  flags,
ruby_glob_func func,
VALUE  arg,
rb_encoding enc 
) [static]

Definition at line 1701 of file dir.c.

References args, glob_brace(), ruby_brace_expand(), and VALUE.

Referenced by push_glob(), ruby_brace_glob(), and ruby_brace_glob_with_enc().

int ruby_brace_glob_with_enc ( const char *  str,
int  flags,
ruby_glob_func func,
VALUE  arg,
rb_encoding enc 
)

Definition at line 1720 of file dir.c.

References GLOB_VERBOSE, and ruby_brace_glob0().

int ruby_glob ( const char *  path,
int  flags,
ruby_glob_func func,
VALUE  arg 
)

Definition at line 1578 of file dir.c.

References GLOB_VERBOSE, rb_ascii8bit_encoding(), and ruby_glob0().

static int ruby_glob0 ( const char *  path,
int  flags,
ruby_glob_func func,
VALUE  arg,
rb_encoding enc 
) [static]

Definition at line 1543 of file dir.c.

References FNM_SYSCASE, GLOB_ALLOC_N, GLOB_FREE, glob_free_pattern(), glob_helper(), glob_make_pattern(), list, MEMCPY, rb_enc_path_skip_prefix(), strlen(), and UNKNOWN.

Referenced by glob_brace(), rb_glob2(), and ruby_glob().

char* strchr ( char *  ,
char   
)

Referenced by check_envname(), check_exec_env_i(), date__strptime_internal(), date_strftime_with_tmx(), dln_find_1(), env_each_pair(), env_has_value(), env_inspect(), env_key(), env_keys(), env_rassoc(), env_shift(), env_to_a(), env_to_hash(), env_values(), getnameinfo(), io_encname_bom_p(), nl_langinfo_codeset(), pack_unpack(), process_sflag(), rb_env_size(), rb_exec_fillarg(), rb_f_test(), rb_feature_provided(), rb_file_open_internal(), rb_io_extract_modeenc(), rb_num2long(), rb_num2ulong_internal(), rb_path_check(), rb_strftime_with_timespec(), ruby_scan_hex(), ruby_strtod(), search_required(), str2num(), w32_aspawn_flags(), and w32_spawn().

static VALUE sys_warning_1 ( VALUE  mesg  )  [static]

Definition at line 1014 of file dir.c.

References errno, Qnil, rb_sys_warning(), and strerror().


Variable Documentation

int chdir_blocking = 0 [static]

Definition at line 778 of file dir.c.

VALUE chdir_thread = Qnil [static]

Definition at line 779 of file dir.c.

const rb_data_type_t dir_data_type [static]

Initial value:

Definition at line 381 of file dir.c.

Referenced by dir_check(), dir_initialize(), dir_inspect(), dir_open_dir(), dir_path(), dir_s_alloc(), and dir_s_open().

VALUE rb_cDir

Definition at line 350 of file dir.c.

Referenced by path_each_entry(), path_entries(), path_mkdir(), path_opendir(), path_rmdir(), path_s_getwd(), path_s_glob(), and unlink_body().


Generated on 19 Jul 2016 for Ruby by  doxygen 1.4.7