[Ironruby-core] Anyone interested in implementing Etc module for Mono?

Ryan Riley ryan.riley at panesofglass.org
Sat Apr 3 20:48:31 EDT 2010


Nm ... I just made the changes and committed to my linux branch. I'll work
on tests, rebasing, etc. tonight.

http://github.com/panesofglass/ironruby/blob/linux/Merlin/Main/Languages/Ruby/Libs/etc.rb

Cheers,

Ryan Riley


On Sat, Apr 3, 2010 at 5:02 PM, Ryan Riley <ryan.riley at panesofglass.org>wrote:

> Quick question: The etc.rb in Libs is a class, but the implementation in
> the Ruby Standard Library appears to be a module. Should I keep the class or
> use the module?
>
> Ryan Riley
>
>
>
> On Sat, Apr 3, 2010 at 4:43 PM, Tomas Matousek <
> Tomas.Matousek at microsoft.com> wrote:
>
>> Nice work.
>>
>>
>>
>> A few suggestions:
>>
>>
>>
>> -          You can move the file to
>> C:\M0\Merlin\Main\Languages\Ruby\Libs.
>>
>> -          Use System::Environment:: System::Environment.OSVersion.Platform
>> to detect the OS (see e.g. Win32API.rb in Libs).
>>
>> -          Rather than check for the platform in every method it might be
>> better to define the methods differently on Windows. Something like:
>>
>>
>>
>> module Etc
>>
>>   platform = System::PlatformID
>>
>>   case System::Environment.OSVersion.Platform
>>
>>     when platform.Win32S, platform.WinCE, platform.Win32Windows,
>> platform.Win32NT:
>>
>>     def self.endgrent; end
>>
>>   def self.endpwent; end
>>
>>   def self.getgrent; end
>>
>>>>
>>     else
>>
>>    load_assembly 'Mono.Posix'
>>
>>
>>
>>   def self.endgrent
>>
>>     Mono::Unix::Native::Syscall.endgrent
>>
>>   end
>>
>>
>>
>>   def self.endpwent
>>
>>     Mono::Unix::Native::Syscall.endpwent
>>
>>   end
>>
>>
>>
>>   def self.getgrent
>>
>>     to_group(Mono::Unix::Native::Syscall.getgrent)
>>
>>
>>   end
>>
>>
>>
>>>>
>>   end
>>
>> end
>>
>>
>>
>> *From:* ironruby-core-bounces at rubyforge.org [mailto:
>> ironruby-core-bounces at rubyforge.org] *On Behalf Of *Ryan Riley
>> *Sent:* Saturday, April 03, 2010 3:59 PM
>>
>> *To:* ironruby-core at rubyforge.org
>> *Subject:* Re: [Ironruby-core] Anyone interested in implementing Etc
>> module for Mono?
>>
>>
>>
>> I've posted an initial "complete" implementation, though I have only done
>> basic testing. I have a couple of TODO's remaining and some cleanup, as well
>> as writing actual specs. I still don't have tests running. You can find the
>> module here:
>> http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb
>>
>>
>>
>> Not the prettiest thing in the world, but I just wanted to get it working.
>> I definitely still have work to do.
>>
>>
>>
>> Cheers,
>>
>>
>> Ryan Riley
>>
>> Email: ryan.riley at panesofglass.org
>> LinkedIn: http://www.linkedin.com/in/ryanriley
>> Blog: http://wizardsofsmart.net/
>> Twitter: @panesofglass
>> Website: http://panesofglass.org/
>>
>> On Sat, Apr 3, 2010 at 2:30 PM, Ryan Riley <ryan.riley at panesofglass.org>
>> wrote:
>>
>> Sure! Mono::Unix::Native::Passwd<http://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Passwd>and
>> Mono::Unix::Native::Group<http://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Group>that are returned from the
>> Mono::Unix::Native::Syscall<http://www.go-mono.com/docs/index.aspx?link=M:Mono.Posix.Syscall.getusername(System.Int32>functions have UInt32, System.String, and System.String[]. System.String is
>> no biggie, and I'm finding .to_i on a System.UInt32 is still displayed as
>> System.UInt32, so I suppose that's not an issue, either. MRI displays Fixnum
>> as the type, and I was trying to get the correct types back from the
>> functions. That leaves MRI's Array to Mono's System.String[].
>>
>>
>>
>> My current implementation is just a Ruby module wrapping calls to the Mono
>> functions and returning the appropriate types. Most of it is working, though
>> without being able to run tests easily, I'm testing from the command line. I
>> still need to add conditionals to return nil if it's run on Windows. I
>> suppose I also need to conditionally load the Mono.Posix.dll if it's on
>> Windows, too.
>>
>>
>>
>> I'm about to finish the basic implementation and post to github<http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb>. (I've
>> already got what I finished last night up there.) I also asked Shri for a
>> pairing session to make sure it's inline with what you're wanting.
>>
>>
>>
>> Cheers,
>>
>>
>>
>> Ryan Riley
>>
>> Email: ryan.riley at panesofglass.org
>> LinkedIn: http://www.linkedin.com/in/ryanriley
>> Blog: http://wizardsofsmart.net/
>> Twitter: @panesofglass
>> Website: http://panesofglass.org/
>>
>> On Sat, Apr 3, 2010 at 11:25 AM, Tomas Matousek <
>> Tomas.Matousek at microsoft.com> wrote:
>>
>> Can you give an example of where you need the conversions?
>>
>>
>>
>> Tomas
>>
>>
>>
>> *From:* ironruby-core-bounces at rubyforge.org [mailto:
>> ironruby-core-bounces at rubyforge.org] *On Behalf Of *Jim Deville
>> *Sent:* Saturday, April 03, 2010 11:00 AM
>>
>>
>> *To:* ironruby-core at rubyforge.org
>>
>> *Subject:* Re: [Ironruby-core] Anyone interested in implementing Etc
>> module for Mono?
>>
>>
>>
>>
>> No conversion for Fixnums is needed (Fixnums are ints). Arrays are harder.
>> I would take a look at clr_ext in merlin/main/languages/ruby/samples. Inside
>> that file is a to_clr_array method
>>
>> JD
>> ------------------------------
>>
>> *From: *Ryan Riley <ryan.riley at panesofglass.org>
>> *Sent: *Saturday, April 03, 2010 12:13 AM
>> *To: *ironruby-core at rubyforge.org <ironruby-core at rubyforge.org>
>> *Subject: *Re: [Ironruby-core] Anyone interested in implementing Etc
>> module for Mono?
>>
>> Where is documentation on converting between CLR and Ruby types? I can get
>> RubyStrings, but what about Fixnum and Array?
>>
>>
>>
>> Thanks,
>>
>>
>> Ryan Riley
>>
>>
>>
>> _______________________________________________
>> Ironruby-core mailing list
>> Ironruby-core at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>>
>>
>>
>> _______________________________________________
>> Ironruby-core mailing list
>> Ironruby-core at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20100403/e83dcd20/attachment.html>


More information about the Ironruby-core mailing list