summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-04-27 10:04:11 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-04-27 10:04:11 +0000
commit9e48333190cb95ecd4d8a49eed103518457e8ace (patch)
tree0a28d6aa4707629c5d106e979c316c5b65b72e60 /file.c
parent043c693d6a7521604ced80a0619d38b4f187f1c9 (diff)
tcltklib/gtk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r--file.c58
1 files changed, 23 insertions, 35 deletions
diff --git a/file.c b/file.c
index 2865ef6899..c26107aa98 100644
--- a/file.c
+++ b/file.c
@@ -90,8 +90,7 @@ file_s_open(argc, argv, klass)
rb_scan_args(argc, argv, "11", &fname, &vmode);
Check_SafeStr(fname);
if (!NIL_P(vmode)) {
- Check_Type(vmode, T_STRING);
- mode = RSTRING(vmode)->ptr;
+ mode = STR2CSTR(vmode);
}
else {
mode = "r";
@@ -125,8 +124,7 @@ file_reopen(argc, argv, file)
Check_SafeStr(fname);
if (!NIL_P(nmode)) {
- Check_Type(nmode, T_STRING);
- mode = RSTRING(nmode)->ptr;
+ mode = STR2CSTR(nmode);
}
else {
mode = "r";
@@ -305,19 +303,12 @@ rb_stat(file, st)
{
OpenFile *fptr;
- switch (TYPE(file)) {
- case T_STRING:
- Check_SafeStr(file);
- return stat(RSTRING(file)->ptr, st);
- break;
- case T_FILE:
+ if (TYPE(file) == T_FILE) {
GetOpenFile(file, fptr);
return fstat(fileno(fptr->f), st);
- break;
- default:
- Check_Type(file, T_STRING);
}
- return -1; /* not reached */
+ Check_SafeStr(file);
+ return stat(RSTRING(file)->ptr, st);
}
static VALUE
@@ -757,9 +748,8 @@ static VALUE
test_sticky(obj, fname)
VALUE obj, fname;
{
- Check_Type(fname, T_STRING);
#ifdef S_ISVTX
- return check3rdbyte(RSTRING(fname)->ptr, S_ISVTX);
+ return check3rdbyte(STR2CSTR(fname), S_ISVTX);
#else
return FALSE;
#endif
@@ -1183,9 +1173,7 @@ file_s_expand_path(obj, fname)
char *s, *p;
char buf[MAXPATHLEN+2];
- Check_Type(fname, T_STRING);
- s = RSTRING(fname)->ptr;
-
+ s = STR2CSTR(fname);
p = buf;
if (s[0] == '~') {
if (s[1] == '/' ||
@@ -1300,24 +1288,24 @@ file_s_basename(argc, argv)
int argc;
VALUE *argv;
{
- VALUE fname, ext;
- char *p;
+ VALUE fname, fext;
+ char *name, *p, *ext;
int f;
- rb_scan_args(argc, argv, "11", &fname, &ext);
- Check_Type(fname, T_STRING);
- if (!NIL_P(ext)) Check_Type(ext, T_STRING);
- p = strrchr(RSTRING(fname)->ptr, '/');
+ rb_scan_args(argc, argv, "11", &fname, &fext);
+ name = STR2CSTR(fname);
+ if (!NIL_P(fext)) ext = STR2CSTR(fext);
+ p = strrchr(name, '/');
if (!p) {
- if (!NIL_P(ext)) {
- f = rmext(RSTRING(fname)->ptr, RSTRING(ext)->ptr);
- if (f) return str_new(RSTRING(fname)->ptr, f);
+ if (!NIL_P(fext)) {
+ f = rmext(name, ext);
+ if (f) return str_new(name, f);
}
return fname;
}
p++; /* skip last `/' */
- if (!NIL_P(ext)) {
- f = rmext(p, RSTRING(ext)->ptr);
+ if (!NIL_P(fext)) {
+ f = rmext(p, ext);
if (f) return str_new(p, f);
}
return str_taint(str_new2(p));
@@ -1327,16 +1315,16 @@ static VALUE
file_s_dirname(obj, fname)
VALUE obj, fname;
{
- UCHAR *p;
+ UCHAR *name, *p;
- Check_Type(fname, T_STRING);
- p = strrchr(RSTRING(fname)->ptr, '/');
+ name = STR2CSTR(fname);
+ p = strrchr(name, '/');
if (!p) {
return str_new2(".");
}
- if (p == RSTRING(fname)->ptr)
+ if (p == name)
p++;
- return str_taint(str_new(RSTRING(fname)->ptr, p - RSTRING(fname)->ptr));
+ return str_taint(str_new(name, p - name));
}
static VALUE