Ruby  2.0.0p247(2013-06-27revision41674)
Macros | Functions | Variables
file.c File Reference
#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include <winbase.h>
#include <wchar.h>
#include <shlwapi.h>

Go to the source code of this file.

Macros

#define INVALID_FILE_ATTRIBUTES   ((DWORD)-1)
 
#define IS_DIR_SEPARATOR_P(c)   (c == L'\\' || c == L'/')
 
#define IS_DIR_UNC_P(c)   (IS_DIR_SEPARATOR_P(c[0]) && IS_DIR_SEPARATOR_P(c[1]))
 
#define INVALID_CODE_PAGE   51932
 
#define PATH_BUFFER_SIZE   MAX_PATH * 2
 
#define insecure_obj_p(obj, level)   ((level) >= 4 || ((level) > 0 && OBJ_TAINTED(obj)))
 

Functions

static void replace_wchar (wchar_t *s, int find, int replace)
 
static void convert_mb_to_wchar (VALUE str, wchar_t **wstr, wchar_t **wstr_pos, size_t *wstr_len, UINT code_page)
 
static void convert_wchar_to_mb (const wchar_t *wstr, char **str, size_t *str_len, UINT code_page)
 
static wchar_t * home_dir (void)
 
static size_t remove_invalid_alternative_data (wchar_t *wfullpath, size_t size)
 
static UINT system_code_page (void)
 
static UINT code_page (rb_encoding *enc)
 
static VALUE fix_string_encoding (VALUE str, rb_encoding *encoding)
 
static size_t replace_to_long_name (wchar_t **wfullpath, size_t size, int heap)
 
static VALUE get_user_from_path (wchar_t **wpath, int offset, UINT cp, UINT path_cp, rb_encoding *path_encoding)
 
VALUE rb_file_expand_path_internal (VALUE fname, VALUE dname, int abs_mode, int long_name, VALUE result)
 
int rb_file_load_ok (const char *path)
 
void rb_w32_init_file (void)
 

Variables

static VALUE rb_code_page
 

Macro Definition Documentation

#define insecure_obj_p (   obj,
  level 
)    ((level) >= 4 || ((level) > 0 && OBJ_TAINTED(obj)))

Definition at line 21 of file file.c.

#define INVALID_CODE_PAGE   51932

Definition at line 18 of file file.c.

Referenced by code_page(), get_user_from_path(), and rb_file_expand_path_internal().

#define INVALID_FILE_ATTRIBUTES   ((DWORD)-1)

Definition at line 8 of file file.c.

Referenced by rb_file_load_ok().

#define IS_DIR_SEPARATOR_P (   c)    (c == L'\\' || c == L'/')
#define IS_DIR_UNC_P (   c)    (IS_DIR_SEPARATOR_P(c[0]) && IS_DIR_SEPARATOR_P(c[1]))

Definition at line 15 of file file.c.

Referenced by rb_file_expand_path_internal().

#define PATH_BUFFER_SIZE   MAX_PATH * 2

Definition at line 19 of file file.c.

Referenced by rb_file_expand_path_internal().

Function Documentation

static UINT code_page ( rb_encoding enc)
static
static void convert_mb_to_wchar ( VALUE  str,
wchar_t **  wstr,
wchar_t **  wstr_pos,
size_t *  wstr_len,
UINT  code_page 
)
inlinestatic

Definition at line 35 of file file.c.

References len, NIL_P(), NULL, RSTRING_PTR, and xmalloc.

Referenced by rb_file_expand_path_internal().

static void convert_wchar_to_mb ( const wchar_t *  wstr,
char **  str,
size_t *  str_len,
UINT  code_page 
)
inlinestatic

Definition at line 52 of file file.c.

References len, NULL, and xmalloc.

Referenced by get_user_from_path().

static VALUE fix_string_encoding ( VALUE  str,
rb_encoding encoding 
)
inlinestatic
static VALUE get_user_from_path ( wchar_t **  wpath,
int  offset,
UINT  cp,
UINT  path_cp,
rb_encoding path_encoding 
)
inlinestatic
static wchar_t* home_dir ( void  )
static

Definition at line 73 of file file.c.

References len, NULL, replace_wchar(), and xmalloc.

Referenced by rb_file_expand_path_internal().

VALUE rb_file_expand_path_internal ( VALUE  fname,
VALUE  dname,
int  abs_mode,
int  long_name,
VALUE  result 
)
int rb_file_load_ok ( const char *  path)
void rb_w32_init_file ( void  )

Definition at line 709 of file file.c.

References rb_code_page, rb_gc_register_mark_object(), and rb_hash_new().

Referenced by Init_File().

static size_t remove_invalid_alternative_data ( wchar_t *  wfullpath,
size_t  size 
)
inlinestatic

Definition at line 138 of file file.c.

References IS_DIR_SEPARATOR_P, and size.

Referenced by rb_file_expand_path_internal().

static size_t replace_to_long_name ( wchar_t **  wfullpath,
size_t  size,
int  heap 
)
inlinestatic

Definition at line 255 of file file.c.

References buf, IS_DIR_SEPARATOR_P, size, xfree, and xmalloc.

Referenced by rb_file_expand_path_internal().

static void replace_wchar ( wchar_t *  s,
int  find,
int  replace 
)
inlinestatic

Definition at line 24 of file file.c.

Referenced by home_dir(), and rb_file_expand_path_internal().

static UINT system_code_page ( void  )
inlinestatic

Definition at line 170 of file file.c.

Referenced by code_page(), and rb_file_expand_path_internal().

Variable Documentation

VALUE rb_code_page
static

Definition at line 12 of file file.c.

Referenced by code_page(), and rb_w32_init_file().