class ChildProcess::Unix::PosixSpawnProcess::Envp

Public Class Methods

new(env) click to toggle source
# File lib/childprocess/unix/posix_spawn_process.rb, line 110
def initialize(env)
  @ptrs = env.map do |key, val|
    next if val.nil?

    if key =~ /=|\0/ || val.include?("\0")
      raise InvalidEnvironmentVariable, "#{key.inspect} => #{val.inspect}"
    end

    FFI::MemoryPointer.from_string("#{key}=#{val}")
  end.compact

  @ptrs << FFI::Pointer.new(0)
end

Public Instance Methods

to_ptr() click to toggle source
# File lib/childprocess/unix/posix_spawn_process.rb, line 124
def to_ptr
  env = FFI::MemoryPointer.new(:pointer, @ptrs.size)
  env.put_array_of_pointer(0, @ptrs)

  env
end