summaryrefslogtreecommitdiff
path: root/lib/chef/win32
diff options
context:
space:
mode:
authorJay Mundrawala <jdmundrawala@gmail.com>2015-07-30 08:02:55 -0700
committerJay Mundrawala <jdmundrawala@gmail.com>2015-07-30 08:02:55 -0700
commitf1ca00c684cb06b0792a71579526a508e5ecb408 (patch)
treec5b7570e659ab4a924bde2c44b1043dd64ded327 /lib/chef/win32
parentd03b97177b1a7dcf9e895f6ca74ec63f8b71f158 (diff)
downloadchef-f1ca00c684cb06b0792a71579526a508e5ecb408.tar.gz
FFYify NetLocalGroupAddMembers
Diffstat (limited to 'lib/chef/win32')
-rw-r--r--lib/chef/win32/net.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/chef/win32/net.rb b/lib/chef/win32/net.rb
index 8c3ddc5a57..afbe9f6ebf 100644
--- a/lib/chef/win32/net.rb
+++ b/lib/chef/win32/net.rb
@@ -238,6 +238,28 @@ END
end
end
+ def self.members_to_lgrmi3(members)
+ buf = FFI::MemoryPointer.new(LOCALGROUP_MEMBERS_INFO_3, members.size)
+ members.size.times.collect do |i|
+ member_info = LOCALGROUP_MEMBERS_INFO_3.new(
+ buf + i * LOCALGROUP_MEMBERS_INFO_3.size)
+ member_info[:lgrmi3_domainandname] = FFI::MemoryPointer.from_string(wstring(members[i]))
+ member_info
+ end
+ end
+
+ def self.net_local_group_add_members(server_name, group_name, members)
+ server_name = wstring(server_name)
+ group_name = wstring(group_name)
+
+ lgrmi3s = members_to_lgrmi3(members)
+ rc = NetLocalGroupAddMembers(
+ server_name, group_name, 3, lgrmi3s[0], members.size)
+
+ if rc != NERR_Success
+ net_api_error!(rc)
+ end
+ end
end
end
end