# Re: Anyone interested in implementing Etc module	for Mono?

**URL:** <https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291>\
**Category:** IronRuby\
**Created:** [April 3, 2010, 8:02pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291 "2010-04-03T20:02:58Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 3, 2010, 8:02pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/1 "2010-04-03T20:02:58Z")

</div>

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 R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Saturday, April 03, 2010 12:13 AM  
To: removed\_email\_address@domain.invalid [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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 R.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 3, 2010, 11:31pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/2 "2010-04-03T23:31:55Z")

</div>

Sure!  
Mono::Unix::Native::Passwd[http://www.go-mono.com/docs/index.aspx?link=T: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](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](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](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 R.

Email: removed\_email\_address@domain.invalid  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)

On Sat, Apr 3, 2010 at 11:25 AM, Tomas M. \<

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 3, 2010, 11:33pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/3 "2010-04-03T23:33:05Z")

</div>

Does a clr\_array map to a Ruby Array?

Ryan R.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 3, 2010, 8:34pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/4 "2010-04-03T20:34:35Z")

</div>

Can you give an example of where you need the conversions?

Tomas

From: removed\_email\_address@domain.invalid  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Jim D.  
Sent: Saturday, April 03, 2010 11:00 AM  
To: removed\_email\_address@domain.invalid  
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 R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Saturday, April 03, 2010 12:13 AM  
To: removed\_email\_address@domain.invalid [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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 R.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 12:59am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/5 "2010-04-04T00:59:41Z")

</div>

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](http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb)

[http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA\_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb](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 R.

Email: removed\_email\_address@domain.invalid  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 1:44am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/6 "2010-04-04T01:44:14Z")

</div>

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: removed\_email\_address@domain.invalid  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 3:59 PM  
To: removed\_email\_address@domain.invalid  
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](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 R.

Email: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)

On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Sure!  
Mono::Unix::Native::Passwd[http://www.go-mono.com/docs/index.aspx?link=T: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](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](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](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 R.

Email: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)

On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
wrote:  
Can you give an example of where you need the conversions?

Tomas

From:  
removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Jim D.  
Sent: Saturday, April 03, 2010 11:00 AM

To: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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 R.  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
Sent: Saturday, April 03, 2010 12:13 AM  
To: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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 R.

* * *

Ironruby-core mailing list  
removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 2:00am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/7 "2010-04-04T02:00:38Z")

</div>

I was hoping for just such pointers, thanks! I will try to get this  
updated tonight.

Ryan

Sent from my iPhone

On Apr 3, 2010, at 4:43 PM, Tomas M.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 2:02am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/8 "2010-04-04T02:02:59Z")

</div>

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 R.

On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.  
\<removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 2:49am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/9 "2010-04-04T02:49:13Z")

</div>

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](http://github.com/panesofglass/ironruby/blob/linux/Merlin/Main/Languages/Ruby/Libs/etc.rb)

Cheers,

Ryan R.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 3:00am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/10 "2010-04-04T03:00:55Z")

</div>

That is a bug. Make it a module.

Tomas

From: removed\_email\_address@domain.invalid  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 5:02 PM  
To: removed\_email\_address@domain.invalid  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

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 R.

On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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:  
removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 3:59 PM

To: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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](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 R.

Email: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Sure!  
Mono::Unix::Native::Passwd[http://www.go-mono.com/docs/index.aspx?link=T: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](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](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](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 R.

Email: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
wrote:  
Can you give an example of where you need the conversions?

Tomas

From:  
removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Jim D.  
Sent: Saturday, April 03, 2010 11:00 AM

To: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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 R.  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
Sent: Saturday, April 03, 2010 12:13 AM  
To: removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
\<removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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 R.

* * *

Ironruby-core mailing list  
removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
removed\_email\_address@domain.invalid[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 7:02pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/11 "2010-04-04T19:02:59Z")

</div>

I’ve posted all the type fixes, but since I can’t compile master, I’m  
hesitant to rebase. What should I do? Also, I still haven’t gotten to  
the tests. Looks like the current ones all expect nil and assume  
Windows. Are those the real rubyspec specs?

Sent from my iPhone

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 7:13am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/12 "2010-04-04T07:13:47Z")

</div>

Also, to get a Int32 out of a UInt32, you should be able to use  
induced\_from:

> > > a = System::UInt32.new(1)  
> > > =\> 1 (UInt32)  
> > > Fixnum.induced\_from(a)  
> > > =\> 1

Minor thing, but it will work.

The fact that etc is a class is my bad. I was just getting enough  
implemented in order to pass some specs and use libraries that expected  
the nil on Windows.

JD

From: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Tomas M.  
Sent: Saturday, April 03, 2010 6:01 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

That is a bug. Make it a module.

Tomas

From: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 5:02 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

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 R.  
On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 3:59 PM

To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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](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 R.

Email: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Sure!  
Mono::Unix::Native::Passwd[http://www.go-mono.com/docs/index.aspx?link=T: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](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](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](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 R.

Email: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
wrote:  
Can you give an example of where you need the conversions?

Tomas

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Jim D.  
Sent: Saturday, April 03, 2010 11:00 AM

To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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 R.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
Sent: Saturday, April 03, 2010 12:13 AM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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 R.

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 4, 2010, 7:58pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/13 "2010-04-04T19:58:34Z")

</div>

If you run â€œmspec ci library\etcâ€, that runs the real RubySpec specs.  
irtests does run a command like â€œmspec ci libâ€ which will run the Etc  
RubySpec specs. [http://wiki.github.com/ironruby/ironruby/rubyspec](http://wiki.github.com/ironruby/ironruby/rubyspec) might  
be useful to you about how these scripts work.

The RubySpecs are supposed to be working on all platforms. The specs use  
checks like â€œplatform\_is :windowsâ€ or â€œplatform\_is\_not :windowsâ€ to have  
versions for all OSes. I am surprised that the current ones expect nil.  
You can fix them to have versions of the specs that work on Unixes. You  
can run the tests against MRI using â€œmspec â€“trâ€ to ensure that the spec  
you add is correct.

If you can streamline the development process for Mono, that will be  
great so others have an easier time in the futureâ€¦

From: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Ryan R.  
Sent: Sunday, April 04, 2010 9:54 AM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

I’ve posted all the type fixes, but since I can’t compile master, I’m  
hesitant to rebase. What should I do? Also, I still haven’t gotten to  
the tests. Looks like the current ones all expect nil and assume  
Windows. Are those the real rubyspec specs?

Sent from my iPhone

On Apr 3, 2010, at 10:13 PM, Jim D.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Also, to get a Int32 out of a UInt32, you should be able to use  
induced\_from:

> > > a = System::UInt32.new(1)  
> > > =\> 1 (UInt32)  
> > > Fixnum.induced\_from(a)  
> > > =\> 1

Minor thing, but it will work.

The fact that etc is a class is my bad. I was just getting enough  
implemented in order to pass some specs and use libraries that expected  
the nil on Windows.

JD

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Tomas M.  
Sent: Saturday, April 03, 2010 6:01 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

That is a bug. Make it a module.

Tomas

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 5:02 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

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 R.  
On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 3:59 PM

To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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](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 R.

Email: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Sure!  
Mono::Unix::Native::Passwd[http://www.go-mono.com/docs/index.aspx?link=T: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](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](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](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 R.

Email: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
wrote:  
Can you give an example of where you need the conversions?

Tomas

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Jim D.  
Sent: Saturday, April 03, 2010 11:00 AM

To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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 R.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
Sent: Saturday, April 03, 2010 12:13 AM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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 R.

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 5, 2010, 3:50am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/14 "2010-04-05T03:50:16Z")

</div>

Here’s the error I get with xbuild:  
Errors:

/home/ryan/dev/ironruby/Merlin/Main/Languages/Ruby/Ruby.sln (default  
targets) →   
(ValidateSolutionConfiguration target) →

```
: error : Error initializing task Message: Not registered task 

```

Message.

```
 14 Warning(s)
 1 Error(s)

```

Time Elapsed 00:00:00.1908000

Ryan R.

Email: removed\_email\_address@domain.invalid  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 5, 2010, 4:35am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/15 "2010-04-05T04:35:19Z")

</div>

Nm… I figured out that dev.sh, despite the command to export to PATH  
was  
not. I’m working on rubyspecs now. Do I put these in the rubyspec git  
repo  
or in the IR copy  
(MERLIN\_ROOT/…/External.LCA\_RESTRICTED/Languages/IronRuby/mspec/rubyspec)?

Ryan

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 5, 2010, 3:33am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/16 "2010-04-05T03:33:53Z")

</div>

Thanks, Shri. The problem is that I cannot run mspec at all. I have  
added it  
to my path, but I get a message saying thtat the command can’t be found,  
even while in the bin folder. (And yes, the files are executable. 🙂  
I’ll  
keep trying to determine what’s wrong, but I would think this should  
just  
work.

In other news, I was able to get master built on linux using rake  
compile.  
I’ve checked this into my copy of master on github, along with the  
etc.rb  
updates and Ivan’s dev.sh script. I can write the additional test cases,  
but  
they should also work now on windows. I’m about to pull and try it  
myself.

Cheers!

Ryan R.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 5, 2010, 8:13am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/17 "2010-04-05T08:13:02Z")

</div>

Great. I’ve been working on cleaning up the file paths so that I can run  
the  
specs (and irtests). The problem seems to be just having ‘\’ hard-coded  
everywhere. I’m changing this to File.join(“abc”,“xyz”). I’ve still got  
a  
few remaining, notably ir.cmd and irtests.rb. Then I’ll get on the specs  
for  
Etc. Those really shouldn’t be hard to write up as I’ve typed them over  
and  
over into the REPL the last few days. 🙂

Cheers,

Ryan

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 5, 2010, 7:30am UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/18 "2010-04-05T07:30:18Z")

</div>

You should add new/updated specs to  
MERLIN\_ROOT/../External.LCA\_RESTRICTED/Languages/IronRuby/mspec/rubyspec  
so that all IronRuby devs will immediately start running the new/updated  
specs (after your changes get pulled into the IronRuby master repo). Jim  
will then periodically push these back to the RubySpec git repo. He also  
does pull periodically from the RubySpec repo into  
MERLIN\_ROOT/../External.LCA\_RESTRICTED/Languages/IronRuby/mspec/rubyspec.

From: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Ryan R.  
Sent: Sunday, April 04, 2010 7:33 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

Nm… I figured out that dev.sh, despite the command to export to PATH  
was not. I’m working on rubyspecs now. Do I put these in the rubyspec  
git repo or in the IR copy  
(MERLIN\_ROOT/../External.LCA\_RESTRICTED/Languages/IronRuby/mspec/rubyspec)?

Ryan  
On Sun, Apr 4, 2010 at 6:32 PM, Ryan R.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Thanks, Shri. The problem is that I cannot run mspec at all. I have  
added it to my path, but I get a message saying thtat the command can’t  
be found, even while in the bin folder. (And yes, the files are  
executable. 🙂 I’ll keep trying to determine what’s wrong, but I would  
think this should just work.

In other news, I was able to get master built on linux using rake  
compile. I’ve checked this into my copy of master on github, along with  
the etc.rb updates and Ivan’s dev.sh script. I can write the additional  
test cases, but they should also work now on windows. I’m about to pull  
and try it myself.

Cheers!

Ryan R.

On Sun, Apr 4, 2010 at 10:55 AM, Shri B.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
If you run â€œmspec ci library\etcâ€, that runs the real RubySpec specs.  
irtests does run a command like â€œmspec ci libâ€ which will run the Etc  
RubySpec specs. [http://wiki.github.com/ironruby/ironruby/rubyspec](http://wiki.github.com/ironruby/ironruby/rubyspec) might  
be useful to you about how these scripts work.

The RubySpecs are supposed to be working on all platforms. The specs use  
checks like â€œplatform\_is :windowsâ€ or â€œplatform\_is\_not :windowsâ€ to have  
versions for all OSes. I am surprised that the current ones expect nil.  
You can fix them to have versions of the specs that work on Unixes. You  
can run the tests against MRI using â€œmspec â€“trâ€ to ensure that the spec  
you add is correct.

If you can streamline the development process for Mono, that will be  
great so others have an easier time in the futureâ€¦

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Ryan R.  
Sent: Sunday, April 04, 2010 9:54 AM

To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

I’ve posted all the type fixes, but since I can’t compile master, I’m  
hesitant to rebase. What should I do? Also, I still haven’t gotten to  
the tests. Looks like the current ones all expect nil and assume  
Windows. Are those the real rubyspec specs?

Sent from my iPhone

On Apr 3, 2010, at 10:13 PM, Jim D.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Also, to get a Int32 out of a UInt32, you should be able to use  
induced\_from:

> > > a = System::UInt32.new(1)  
> > > =\> 1 (UInt32)  
> > > Fixnum.induced\_from(a)  
> > > =\> 1

Minor thing, but it will work.

The fact that etc is a class is my bad. I was just getting enough  
implemented in order to pass some specs and use libraries that expected  
the nil on Windows.

JD

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Tomas M.  
Sent: Saturday, April 03, 2010 6:01 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

That is a bug. Make it a module.

Tomas

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 5:02 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc  
module for Mono?

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 R.  
On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Ryan R.  
Sent: Saturday, April 03, 2010 3:59 PM

To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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](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 R.

Email: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:  
Sure!  
Mono::Unix::Native::Passwd[http://www.go-mono.com/docs/index.aspx?link=T: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](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](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](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 R.

Email: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)  
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
wrote:  
Can you give an example of where you need the conversions?

Tomas

From:  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
On Behalf Of Jim D.  
Sent: Saturday, April 03, 2010 11:00 AM

To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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 R.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
Sent: Saturday, April 03, 2010 12:13 AM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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 R.

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [April 5, 2010, 5:33pm UTC](https://www.ruby-forum.com/t/re-anyone-interested-in-implementing-etc-module-for-mono/186291/19 "2010-04-05T17:33:42Z")

</div>

By the way, if I’ve changed jobs since I signed my LCA, do I need to do  
it  
again for my current employer?

Ryan
