diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-04 05:19:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-04 05:19:12 +0000 |
commit | 5f6a3f552d37155ab7d00aed75bb7618f23e57b9 (patch) | |
tree | 3b82e204e8b81423d26cc7144403810640714949 | |
parent | efe1295ba8ea6e8515b5ac67dc3023d3e321084f (diff) | |
download | ruby-5f6a3f552d37155ab7d00aed75bb7618f23e57b9.tar.gz |
ruby.c: simplify
* ruby.c (load_file_internal): simplify by local variables instead
of repeating RSTRING macros.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ruby.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -1697,7 +1697,8 @@ load_file_internal(VALUE argp_v) if (script) { VALUE c = 1; /* something not nil */ VALUE line; - char *p; + char *p, *str; + long len; int no_src_enc = !opt->src.enc.name; int no_ext_enc = !opt->ext.enc.name; int no_int_enc = !opt->intern.enc.name; @@ -1712,10 +1713,9 @@ load_file_internal(VALUE argp_v) opt->xflag = FALSE; while (!NIL_P(line = rb_io_gets(f))) { line_start++; - if (RSTRING_LEN(line) > 2 - && RSTRING_PTR(line)[0] == '#' - && RSTRING_PTR(line)[1] == '!') { - if ((p = strstr(RSTRING_PTR(line), ruby_engine)) != 0) { + RSTRING_GETMEM(line, str, len); + if (len > 2 && str[0] == '#' && str[1] == '!') { + if ((p = strstr(str+2, ruby_engine)) != 0) { goto start_read; } } @@ -1731,15 +1731,16 @@ load_file_internal(VALUE argp_v) if (NIL_P(line)) return 0; - if ((p = strstr(RSTRING_PTR(line), ruby_engine)) == 0) { + RSTRING_GETMEM(line, str, len); + if ((p = strstr(str, ruby_engine)) == 0) { /* not ruby script, assume -x flag */ goto search_shebang; } start_read: - RSTRING_PTR(line)[RSTRING_LEN(line) - 1] = '\0'; - if (RSTRING_PTR(line)[RSTRING_LEN(line) - 2] == '\r') - RSTRING_PTR(line)[RSTRING_LEN(line) - 2] = '\0'; + str += len - 1; + if (*str == '\n') *str-- = '\0'; + if (*str == '\r') *str-- = '\0'; /* ruby_engine should not contain a space */ if ((p = strstr(p, " -")) != 0) { opt->warning = 0; |