From: akr@... Date: 2014-05-18T01:48:55+00:00 Subject: [ruby-core:62655] [ruby-trunk - Feature #9842] [Closed] system configuration variables (sysconf(), confstr(), pathconf() and fpathconf()) Issue #9842 has been updated by Akira Tanaka. Status changed from Open to Closed % Done changed from 0 to 100 Applied in changeset r45984. ---------- * ext/etc/etc.c: Etc.sysconf, Etc.confstr and IO#pathconf implemented. * ext/etc/extconf.rb: Check sysconf(), confstr() and fpathconf(). * ext/etc/mkconstants.rb: New file. [ruby-core:62600] [Feature #9842] ---------------------------------------- Feature #9842: system configuration variables (sysconf(), confstr(), pathconf() and fpathconf()) https://bugs.ruby-lang.org/issues/9842#change-46790 * Author: Akira Tanaka * Status: Closed * 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/