dearblue
f0a64329b1
Prohibit array changes by "a"/"*" specifier of mrb_get_args()
...
The "a"/"*" specifier of the `mrb_get_args()` function will now return `const mrb_value *`.
This is because it is difficult for the caller to check if it is an array object and write-barrier if necessary.
And it requires calling `mrb_ary_modify()` on the unmodified array object, which is also difficult (this is similar to #5087 ).
2020-10-22 22:55:35 +09:00
Yukihiro "Matz" Matsumoto
950e60363a
Update IO#popen to use keyword arguments instead of Hash args.
2020-10-12 18:20:11 +09:00
Yukihiro "Matz" Matsumoto
5134031e18
Use mrb_int_value() instead of mrb_fixnum_value().
...
Where fixnum overflow can happen.
2020-10-12 18:20:05 +09:00
Yukihiro "Matz" Matsumoto
2b188ed8a1
Reorganize Integer system.
...
- Integrate `Fixnum` and `Integer`
- Remove `Integral`
- `int / int -> int`
- Replace `mrb_fixnum()` to `mrb_int()`
- Replace `mrb_fixnum_value()` to `mrb_int_value()`.
- Use `mrb_integer_p()` instead of `mrb_fixnum_p()`
2020-10-12 18:19:54 +09:00
Yukihiro "Matz" Matsumoto
55163a8a0a
Rename MRB_TT_FIXNUM to MRB_TT_INTEGER.
...
We still have `#define MRB_TT_FIXNUM MRB_TT_INTEGER` for compatibility.
2020-10-12 16:21:47 +09:00
Yukihiro "Matz" Matsumoto
8a87549315
Rename float configuration option names.
...
- `MRB_WITHOUT_FLOAT` => `MRB_NO_FLOAT`
- `MRB_USE_FLOAT` => `MRB_USE_FLOAT32`
The former is to use `USE_XXX` naming convention. The latter is to make
sure `float` is 32bit float and not floating point number in general.
2020-10-12 16:21:40 +09:00
Yukihiro "Matz" Matsumoto
474545bba2
Do not define mrb_lstat unless S_ISLNK is defined.
2020-10-12 16:21:14 +09:00
Yukihiro "Matz" Matsumoto
2a366ffba8
Use functions that take symbols to reduce string litrals in C.
2020-10-12 16:20:59 +09:00
Yukihiro "Matz" Matsumoto
00f5ddc9ae
Use mrb_funcall_id() extensively.
...
Except for support files e.g. `mruby-test/driver.c`, which are not
target of symbol collection via `rake gensym`.
2020-10-12 16:20:58 +09:00
dearblue
57611240a9
Prohibit string changes by "s"/"z" specifier of mrb_get_args()
...
- The `s` specifier is a string pointer obtained without performing `mrb_str_modify()`, so it cannot be changed.
- The `z` specifier cannot be changed because it is a string pointer obtained by `RSTRING_CSTR()` which returns `const char *`.
2020-09-25 21:02:58 +09:00
SiZiOUS
510b9e7abc
mruby-io: Fixing compilation issue under the legacy MinGW environment
...
Adding MRB_MINGW32_LEGACY in common.h in order to identify the legacy MinGW environment (i.e. NOT to be confused with MinGW-w64).
For more info about MinGW defined macros, see: https://sourceforge.net/p/predef/wiki/Compilers/
2020-08-29 13:58:00 +02:00
dearblue
c5dc184a6d
Use struct _stat32 instead of struct __stat32
...
It is described as `struct __stat32` in the MSVC reference manual.
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions?view=vs-2019
But it doesn't really exist, so it must use `struct _stat32`.
It also replaces `struct __stat64` with `struct _stat64` to make it look
nicer.
2020-08-11 22:09:28 +09:00
Yukihiro "Matz" Matsumoto
3b8df2c285
Fixed VC fstat issue.
2020-08-11 16:35:50 +09:00
Yukihiro "Matz" Matsumoto
cfaaf7c6d4
Should use _fstat32() on 32bit Windows.
2020-08-11 16:02:05 +09:00
Yukihiro "Matz" Matsumoto
4695dfdcb6
Avoid using mrb_funcall() from mruby-io gem.
2020-08-10 08:53:35 +09:00
dearblue
5df95e8d7b
Fix ssize_t for mingw; ref #5030
...
Legacy MinGW and MinGW-w64 had own `ssize_t`.
2020-07-12 17:10:57 +09:00
Rory OConnell
bb23faae65
downcase windows include file for mingw compatability
2020-07-10 21:18:31 -07:00
Rory OConnell
308c6c8311
Need typedef of ssize_t for msc compiler
2020-07-10 21:18:30 -07:00
Yukihiro "Matz" Matsumoto
49ae2a69f2
Add mrb_get_arg1() that retrieves single (and only) argument.
...
`mrb_get_arg1()` raises `ArgumentError` if the method does not receive one
argument.
And replaces all `mrb_get_args(mrb, "o", &arg)` by the new function.
2020-06-20 12:49:46 +09:00
dearblue
ce12ef7e5c
Hiding method implementation C functions in mruby-io
2020-06-03 14:12:51 +09:00
Yukihiro "Matz" Matsumoto
d64c4d64e6
Make off_t handling simpler; #4872 #4939
...
The newer `clang` warns implicit float conversions.
2020-05-11 10:14:25 +09:00
Yukihiro "Matz" Matsumoto
2fcdd3f8eb
Add assertion as originally intended; ref #4986
2020-05-07 08:38:46 +09:00
dearblue
49bba6c997
Avoid comparing pointers and integers
2020-04-29 17:18:09 +09:00
Yukihiro "Matz" Matsumoto
7277682cfb
Remove unused local variable if MRB_UTF8_STRING is not set.
...
Ref #4982 #4983
2020-04-28 22:34:01 +09:00
Yukihiro "Matz" Matsumoto
8627157298
Fix IO#readchar to return broken UTF-8 rather than EOF error.
...
The behavior is different from CRuby, but we believe this is a right
behavior for mruby, which only supports either ASCII or UTF-8
exclusively; fix #4983 , ref #4982
```
$ printf '\xe3\x81' | ruby -e 'p STDIN.readchar'
"\xE3\x81"
```
```
$ printf '\xe3\x81' | mruby -e 'p STDIN.readchar'
"\xE3"
```
2020-04-28 18:07:17 +09:00
Yukihiro "Matz" Matsumoto
b87268f130
Fix IO#readchar to support UTF-8 char reading; fix #4712
...
This fix only effective when `MRB_UTF8_STRING` is set.
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
e51923778f
Fix IO#sysread to update buffer string on EOF; ref #4982
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
c91c9e2429
Merge pull request #4968 from dearblue/check-fd
...
Check the file descriptor with `IO#initialize`; resolve #4966
2020-04-15 09:58:20 +09:00
Yukihiro "Matz" Matsumoto
7add524041
Selecting fd should be less than FD_SETSIZE; close #4966
2020-04-14 14:51:22 +09:00
dearblue
3c03385e2e
Check the file descriptor with IO#initialize; resolve #4966
2020-04-12 14:18:36 +09:00
dearblue
cc1db2d117
Remove unnecessary 'stdio.h'; ref #4947
...
'stdio.h' is included in 'mruby.h' ('mrbconf.h').
However, keep 'stdio.h' used by mruby-test.
2020-03-08 21:42:09 +09:00
Yukihiro "Matz" Matsumoto
1cc270f0cc
Small refactoring on #4952
...
Fix the argument of `mrb_file_is_absolute_path()`.
2020-03-08 18:57:49 +09:00
Reckordp
ab1465d9d5
Traditional, UNC, and Device Is Absolute?
2020-03-08 10:53:18 +07:00
Reckordp
66c44b8568
Commit from remote
2020-03-08 05:40:47 +07:00
Reckordp
6ee24fe1bc
Evaluate all type path
2020-03-08 05:32:27 +07:00
Yukihiro "Matz" Matsumoto
20f9128f73
Small refactoring on #4939
2020-03-07 19:06:46 +09:00
Yukihiro "Matz" Matsumoto
6901752723
Use in-house macro ISALPHA instead of isalpha; ref #4950
2020-03-07 19:03:45 +09:00
Yukihiro "Matz" Matsumoto
886355007c
Merge branch 'io-pread-pwrite' of https://github.com/dearblue/mruby into dearblue-io-pread-pwrite
2020-03-07 19:00:30 +09:00
Reckordp
5a4b9fd877
Add absolute path for UNC
2020-03-07 15:50:14 +07:00
Reckordp
f319c5fb26
Fix typo
2020-03-07 15:18:48 +07:00
Yukihiro "Matz" Matsumoto
4687f8790c
Merge the update suggested by @mattn; ref #4950
2020-03-07 14:58:05 +09:00
Yukihiro "Matz" Matsumoto
30eaee30fa
Merge pull request #4950 from Reckordp/master
...
Absolute path for windows
2020-03-07 14:53:37 +09:00
Reckordp
8df49ea955
Absolute path for windows
2020-03-07 09:09:28 +07:00
Yukihiro "Matz" Matsumoto
736ea1f5c7
Merge pull request #4941 from davidsiaw/mac-compat
...
Include time.h for ios
2020-02-05 23:11:45 +09:00
dearblue
4c6d524c47
Implement IO#pread and IO#pwrite
...
It is available by default in environments where `__unix__` is defined.
Other environments are enabled by defining `MRB_WITH_IO_PREAD_PWRITE`
(requires an implementation of `pread()` and `pwrite()` functions).
In any case, you can disable it by defining
`MRB_WITHOUT_IO_PREAD_PWRITE`.
2020-02-02 21:20:25 +09:00
Yukihiro "Matz" Matsumoto
db64bd42d3
Add explicit casting in file.c to silence warnings.
2020-01-31 09:26:45 +09:00
Yukihiro "Matz" Matsumoto
724c90f369
Avoid casting warning from mrb_int to int in io.c.
2020-01-31 09:26:05 +09:00
Yukihiro "Matz" Matsumoto
e7e999414c
Merge pull request #4873 from dearblue/open-flags
...
Support bit flags for `IO.open`
2020-01-28 11:09:33 +09:00
David Siaw
36efc33650
include time.h for ios
2020-01-28 00:43:49 +08:00
Yukihiro "Matz" Matsumoto
b545f62aeb
Avoid Boxing/Unboxing of file descriptors; ref #4872
2020-01-06 18:57:43 +09:00