[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