Indeed (and sorry for the late reply), mkstemp is not covered by the BridgeSupport mechanism yet, which is why it is not available from MacRuby.

As a workaround I would recommend too to wrap the call inside an Objective-C class. You don't have to build a framework, just a shared library (.dylib) with an empty Init_XXX function (where XXX is the name of the library file) can be loaded using #require.

But first I would try to see if there is no alternative in the Cocoa APIs. The NSTemporaryDirectory() function for instance returns you a secure temporary directory for your process. You can then create a file there based on a unique pattern.

$ macirb
>> framework 'Cocoa'
=> true
>> NSTemporaryDirectory()
=> "/var/folders/v1/v1Iq1tXOEMuSDv5AyY7i2k+++TI/-Tmp-/"
[...]

Laurent

On Feb 9, 2009, at 11:06 AM, Brian Chapados wrote:

mkstemp is defined in the standard C library.  To use it, you would
need to define a new bridged function in MacRuby on the fly. I don't
think there is a way to do this right now.

As a work-around, you could wrap the C function calls in methods
defined in an Obj-C class and build a framework.  Then you would be
able to load the framework in MacRuby and call those methods.

On Fri, Feb 6, 2009 at 12:24 AM, Michael Winterstein
<parzi...@mindspring.com> wrote:

On Feb 5, 2009, at 10:53 AM, Michael Winterstein wrote:

Hi all,

Is there a particular framework that's required in order to use
'Pointer.new_with_type'?

I'm using the trunk (build 809) and it's apparently not available in
either my Xcode project or in macirb.

Is there an alternative method for working with pointers?



My specific case is that I want to call the C function mkstemp.
Is this what I should be doing? :

@tmpfInfo += "/"+"resynch.fileinfo.XXXXXX"
tmptr = Pointer.new_with_type('*')
tmptr.assign(@tmpfInfo)
fd_tmpInfo = mkstemp(tmptr)
tmpInfoFileHandle = NSFileHandle.initWithFileDescriptor(@fd_tmpInfo)

Michael_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Scratch some of that ... I didn't have the right file and now I do have
Pointer.new_with_type.

But I'm still wondering what's the correct approach. This code still gives
me "undefined method" errors on mkstemp.

Michael


_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to