Issue #9842 has been updated by Akira Tanaka.


Usaku NAKAMURA wrote:
> I don't disagree with this feature, but can't you design a little more abstract interface?

What the purpose of the abstraction?

For example, we can define Etc.getconf as a unified version of Etc.sysconf and Etc.confstr.
It is exepected to work as POSIX getconf command which can invoke sysconf and confstr.
getconf is an abstraction of sysconf and confstr because it includes the both functions.
Does this abstration help you?


----------------------------------------
Feature #9842: system configuration variables (sysconf(), confstr(), pathconf() and fpathconf())
https://bugs.ruby-lang.org/issues/9842#change-46761

* Author: Akira Tanaka
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
----------------------------------------
How about providing methods to obtain system configuration variables?

POSIX defines sysconf(), confstr(), pathconf() and fpathconf().
I implemented following methods in ext/etc.

* Etc.sysconf(name)
* Etc.confstr(name)
* IO.pathconf(name)
* IO#pathconf(name)

POSIX defines some names.
Various operating sysmtems define additional names.

They can be used as follows:

```
Etc.sysconf(Etc::SC_ARG_MAX) #=> 2097152
Etc.sysconf(Etc::SC_NPROCESSORS_ONLN) #=> 4
Etc.confstr(Etc::CS_PATH) #=> "/bin:/usr/bin"
Etc.confstr(Etc::CS_GNU_LIBC_VERSION) #=> "glibc 2.18"
IO.pathconf("/", Etc::PC_NAME_MAX) #=> 255
open("/") {|f| p f.pathconf(Etc::PC_TIMESTAMP_RESOLUTION) } #=> 1
```

I implemented them in ext/etc because I interpreted "etc" as
system configuration.

Any idea?


---Files--------------------------------
sysconf-confstr-pathconf.patch (13 KB)
sysconf-confstr-fpathconf.patch (12.1 KB)


-- 
https://bugs.ruby-lang.org/