[Win32utils-devel] _mktemp on Windows
Daniel Berger
djberg96 at gmail.com
Tue Jan 17 13:36:16 EST 2012
On Tue, Jan 17, 2012 at 5:00 AM, Heesob Park <phasis at gmail.com> wrote:
> Hi,
>
> 2012/1/14 Daniel Berger <djberg96 at gmail.com>:
>> Is it odd that calling _mktemp more than once in the same process doesn't work?
>>
>> require 'ffi'
>>
>> class Win
>> extend FFI::Library
>>
>> ffi_lib 'msvcrt'
>> attach_function :_mktemp, [:string], :string
>>
>> def self.mktemp
>> 5.times{ p _mktemp("rb_file_temp_XXXXXX") }
>> end
>> end
>>
>> Win.mktemp
>>
>> # Output
>> "rb_file_temp_a03680"
>> nil
>> nil
>> nil
>> nil
>
> Here is a proper working version:
>
>
> require 'ffi'
>
> class Win
> extend FFI::Library
>
> ffi_lib 'msvcrt'
> attach_function :_mktemp, [:pointer], :string
>
> def self.mktemp
> 5.times {
> buf = FFI::MemoryPointer.from_string("rb_file_temp_XXXXXX")
> p _mktemp(buf)
> }
> end
> end
>
> Win.mktemp
That's better, though it seems to return the same string each time
instead of providing a new one. I get:
"rb_file_temp_a03200"
"rb_file_temp_a03200"
"rb_file_temp_a03200"
"rb_file_temp_a03200"
"rb_file_temp_a03200"
Regards,
Dan
More information about the win32utils-devel
mailing list