nis 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ ext/nis/*.o
2
+ ext/nis/*.so
3
+ ext/nis/Makefile
4
+ ext/nis/mkmf.log
5
+ lib/nis/*.so
6
+ nis-*.gem
@@ -0,0 +1,12 @@
1
+ doc/NIS-HOWTO.html
2
+ test/yp_all.rb
3
+ test/yp_all2.rb
4
+ test/yp_first.rb
5
+ test/yp_match.rb
6
+ MANIFEST
7
+ README
8
+ README.html
9
+ extconf.rb
10
+ nis.c
11
+ nis.h
12
+ yp.c
data/README ADDED
@@ -0,0 +1,27 @@
1
+ Ruby/NIS
2
+
3
+ Copyright (C) 2001, Takaaki Tateishi (ttate@jaist.ac.jp)
4
+ -------------------------------------------------------------------------------
5
+
6
+ Description
7
+
8
+ This module provides only the module for NIS(YP) API.
9
+ -------------------------------------------------------------------------------
10
+
11
+ YP Module
12
+
13
+ Constant:
14
+
15
+ * YPERR_....
16
+ * YPOP_....
17
+
18
+ Module Functions:
19
+
20
+ * yp_all(domain, map, callback)
21
+ * yp_all(domain, map){|status, key, val| ... }
22
+ * key, val = yp_first(domain, map)
23
+ * next_key, next_val = yp_next(domain, map, key)
24
+ * val = yp_match(domain, map, key)
25
+ * yp_update(domain, map, ypop, key, val)
26
+
27
+ -------------------------------------------------------------------------------
@@ -0,0 +1,37 @@
1
+ <html>
2
+ <head><title>Ruby/NIS</title></head>
3
+ <body>
4
+
5
+ <center>
6
+ <h1>Ruby/NIS</h1>
7
+ Copyright (C) 2001, Takaaki Tateishi (ttate@jaist.ac.jp)
8
+ </center>
9
+
10
+ <hr>
11
+ <h2>Description</h2>
12
+
13
+ This module provides the module for NIS(YP) API.
14
+
15
+ <hr>
16
+ <h2>YP Module</h2>
17
+
18
+ Constant:
19
+ <ul>
20
+ <li>YPERR_....
21
+ <li>YPOP_....
22
+ </ul>
23
+
24
+ Module Functions:
25
+ <ul>
26
+ <li>yp_all(domain, map, callback)
27
+ <li>yp_all(domain, map){|status, key, val| ... }
28
+ <li>key, val = yp_first(domain, map)
29
+ <li>next_key, next_val = yp_next(domain, map, key)
30
+ <li>val = yp_match(domain, map, key)
31
+ <li>yp_update(domain, map, ypop, key, val)
32
+ </ul>
33
+
34
+ <hr>
35
+
36
+ </body>
37
+ </html>
@@ -0,0 +1,47 @@
1
+ require 'hoe'
2
+
3
+ require 'lib/nis/version.rb'
4
+
5
+ begin
6
+ require 'jeweler'
7
+ Jeweler::Tasks.new do |gem|
8
+ gem.name = "nis"
9
+ gem.summary = %Q{Provides an interface for NIS(YP) API.}
10
+ gem.description = %Q{Provides an interface for NIS(YP) API.}
11
+ gem.email = 'ttate@users.sourceforge.net'
12
+ gem.homepage = 'http://raa.ruby-lang.org/project/ruby-nis/'
13
+ gem.authors = ['Takaaki Tateishi']
14
+ gem.version = NIS::VERSION
15
+ gem.files.include "lib/nis/nis.so"
16
+ end
17
+ Jeweler::GemcutterTasks.new
18
+ rescue LoadError
19
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
+ end
21
+
22
+ # HOE = Hoe.spec 'nokogiri' do
23
+ # developer 'Takaaki Tateishi', 'ttate@users.sourceforge.net'
24
+ # self.clean_globs = [
25
+ # 'ext/nis/*.{o,so,bundle,a,log,dll}',
26
+ # 'lib/nis/*.{o,so,bundle,a,log,dll}',
27
+ # ]
28
+ # self.spec_extras = { :extensions => ["ext/nis/extconf.rb"] }
29
+ # end
30
+ # Hoe.add_include_dirs '.'
31
+
32
+ task 'ext/nis/Makefile' do
33
+ Dir.chdir('ext/nis') do
34
+ ruby "extconf.rb"
35
+ end
36
+ end
37
+
38
+ task 'lib/nis/nis.so' => 'ext/nis/Makefile' do
39
+ Dir.chdir('ext/nis') do
40
+ sh 'make'
41
+ end
42
+ FileUtils.cp 'ext/nis/nis.so', 'lib/nis'
43
+ end
44
+
45
+ task :build => 'lib/nis/nis.so'
46
+
47
+ task :default => [:build]
@@ -0,0 +1,118 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2
+ <HTML>
3
+ <HEAD>
4
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
5
+ <TITLE>The Linux NIS(YP)/NYS/NIS+ HOWTO</TITLE>
6
+ <LINK HREF="NIS-HOWTO-1.html" REL=next>
7
+
8
+
9
+ </HEAD>
10
+ <BODY>
11
+ <A HREF="NIS-HOWTO-1.html">Next</A>
12
+ Previous
13
+ Contents
14
+ <HR>
15
+ <H1>The Linux NIS(YP)/NYS/NIS+ HOWTO</H1>
16
+
17
+ <H2>Thorsten Kukuk</H2>v1.0, 09. March 1999
18
+ <P><HR>
19
+ <EM>
20
+ <!--
21
+ HOWTOs!NIS
22
+ -->
23
+
24
+ <!--
25
+ HOWTOs!YP
26
+ -->
27
+
28
+ <!--
29
+ HOWTOs!NYS
30
+ -->
31
+
32
+ <!--
33
+ HOWTOs!NIS+
34
+ -->
35
+
36
+ This document describes how to configure Linux as NIS(YP) or NIS+ client
37
+ and how to install as NIS server.</EM>
38
+ <HR>
39
+ <P>
40
+ <H2><A NAME="toc1">1.</A> <A HREF="NIS-HOWTO-1.html">Introduction</A></H2>
41
+
42
+ <UL>
43
+ <LI><A HREF="NIS-HOWTO-1.html#ss1.1">1.1 New Versions of this Document</A>
44
+ <LI><A HREF="NIS-HOWTO-1.html#ss1.2">1.2 Disclaimer</A>
45
+ <LI><A HREF="NIS-HOWTO-1.html#ss1.3">1.3 Feedback and Corrections</A>
46
+ <LI><A HREF="NIS-HOWTO-1.html#ss1.4">1.4 Acknowledgements</A>
47
+ </UL>
48
+ <P>
49
+ <H2><A NAME="toc2">2.</A> <A HREF="NIS-HOWTO-2.html">Glossary and General Information</A></H2>
50
+
51
+ <UL>
52
+ <LI><A HREF="NIS-HOWTO-2.html#ss2.1">2.1 Glossary of Terms</A>
53
+ <LI><A HREF="NIS-HOWTO-2.html#ss2.2">2.2 Some General Information</A>
54
+ </UL>
55
+ <P>
56
+ <H2><A NAME="toc3">3.</A> <A HREF="NIS-HOWTO-3.html">NIS, NYS or NIS+ ?</A></H2>
57
+
58
+ <UL>
59
+ <LI><A HREF="NIS-HOWTO-3.html#ss3.1">3.1 libc 4/5 with traditional NIS or NYS ?</A>
60
+ <LI><A HREF="NIS-HOWTO-3.html#ss3.2">3.2 glibc 2 and NIS/NIS+</A>
61
+ <LI><A HREF="NIS-HOWTO-3.html#ss3.3">3.3 NIS or NIS+ ?</A>
62
+ </UL>
63
+ <P>
64
+ <H2><A NAME="toc4">4.</A> <A HREF="NIS-HOWTO-4.html">How it works</A></H2>
65
+
66
+ <UL>
67
+ <LI><A HREF="NIS-HOWTO-4.html#ss4.1">4.1 How NIS works</A>
68
+ <LI><A HREF="NIS-HOWTO-4.html#ss4.2">4.2 How NIS+ works</A>
69
+ </UL>
70
+ <P>
71
+ <H2><A NAME="toc5">5.</A> <A HREF="NIS-HOWTO-5.html">The RPC Portmapper</A></H2>
72
+
73
+ <P>
74
+ <H2><A NAME="toc6">6.</A> <A HREF="NIS-HOWTO-6.html">What do you need to set up NIS?</A></H2>
75
+
76
+ <UL>
77
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.1">6.1 Determine whether you are a Server, Slave or Client.</A>
78
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.2">6.2 The Software</A>
79
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.3">6.3 The ypbind daemon</A>
80
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.4">6.4 Setting up a NIS Client using Traditional NIS</A>
81
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.5">6.5 Setting up a NIS Client using NYS</A>
82
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.6">6.6 Setting up a NIS Client using glibc 2.x</A>
83
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.7">6.7 The nsswitch.conf File</A>
84
+ <LI><A HREF="NIS-HOWTO-6.html#ss6.8">6.8 Shadow Passwords with NIS</A>
85
+ </UL>
86
+ <P>
87
+ <H2><A NAME="toc7">7.</A> <A HREF="NIS-HOWTO-7.html">What do you need to set up NIS+ ?</A></H2>
88
+
89
+ <UL>
90
+ <LI><A HREF="NIS-HOWTO-7.html#ss7.1">7.1 The Software</A>
91
+ <LI><A HREF="NIS-HOWTO-7.html#ss7.2">7.2 Setting up a NIS+ client</A>
92
+ <LI><A HREF="NIS-HOWTO-7.html#ss7.3">7.3 NIS+, keylogin, login and PAM</A>
93
+ <LI><A HREF="NIS-HOWTO-7.html#ss7.4">7.4 The nsswitch.conf File</A>
94
+ </UL>
95
+ <P>
96
+ <H2><A NAME="toc8">8.</A> <A HREF="NIS-HOWTO-8.html">Setting up a NIS Server</A></H2>
97
+
98
+ <UL>
99
+ <LI><A HREF="NIS-HOWTO-8.html#ss8.1">8.1 The Server Program ypserv</A>
100
+ <LI><A HREF="NIS-HOWTO-8.html#ss8.2">8.2 The Server Program yps</A>
101
+ <LI><A HREF="NIS-HOWTO-8.html#ss8.3">8.3 The Program rpc.ypxfrd</A>
102
+ <LI><A HREF="NIS-HOWTO-8.html#ss8.4">8.4 The Program rpc.yppasswdd</A>
103
+ </UL>
104
+ <P>
105
+ <H2><A NAME="toc9">9.</A> <A HREF="NIS-HOWTO-9.html">Verifying the NIS/NYS Installation</A></H2>
106
+
107
+ <P>
108
+ <H2><A NAME="toc10">10.</A> <A HREF="NIS-HOWTO-10.html">Common Problems and Troubleshooting NIS</A></H2>
109
+
110
+ <P>
111
+ <H2><A NAME="toc11">11.</A> <A HREF="NIS-HOWTO-11.html">Frequently Asked Questions</A></H2>
112
+
113
+ <HR>
114
+ <A HREF="NIS-HOWTO-1.html">Next</A>
115
+ Previous
116
+ Contents
117
+ </BODY>
118
+ </HTML>
@@ -0,0 +1,13 @@
1
+ require 'mkmf'
2
+
3
+ dir_config('yp')
4
+ dir_config('nis')
5
+
6
+ nis_h = have_header('rpcsvc/nis.h')
7
+ ypclnt_h = have_header('rpcsvc/ypclnt.h')
8
+ ypprot_h = have_header('rpcsvc/yp_prot.h')
9
+ libnsl = have_library('nsl')
10
+
11
+ if( libnsl && ypclnt_h && ypprot_h )
12
+ create_makefile('nis')
13
+ end
@@ -0,0 +1,11 @@
1
+ /* -*- C -*-
2
+ * $Id: nis.c,v 1.1.1.1 2001/04/20 05:38:57 ttate Exp $
3
+ */
4
+
5
+ #include "nis.h"
6
+
7
+ void
8
+ Init_nis()
9
+ {
10
+ Init_yp();
11
+ };
@@ -0,0 +1,14 @@
1
+ /* -*- C -*-
2
+ * $Id: nis.h,v 1.1.1.1 2001/04/20 05:38:57 ttate Exp $
3
+ */
4
+
5
+ #ifndef NIS_H
6
+ #define NIS_H
7
+
8
+ #include <ruby.h>
9
+
10
+ void Init_yp();
11
+ extern VALUE rb_mYP;
12
+ extern VALUE rb_eYPError;
13
+
14
+ #endif
@@ -0,0 +1,308 @@
1
+ /* -*- C -*-
2
+ * $Id: yp.c,v 1.4 2001/04/20 07:07:42 ttate Exp $
3
+ */
4
+
5
+ #include "nis.h"
6
+ #include <rpcsvc/ypclnt.h>
7
+ #include <rpcsvc/yp_prot.h>
8
+
9
+ #ifndef YPERR_SUCCESS
10
+ # define YPERR_SUCCESS (0)
11
+ #endif
12
+
13
+ VALUE rb_mYP;
14
+ VALUE rb_eYPError;
15
+
16
+ void
17
+ rb_yp_check_yperr(err)
18
+ {
19
+ switch( err ){
20
+ case YPERR_SUCCESS:
21
+ break;
22
+ default:
23
+ rb_raise(rb_eYPError, yperr_string(err));
24
+ };
25
+ };
26
+
27
+ VALUE
28
+ rb_yp_get_default_domain(VALUE self)
29
+ {
30
+ char *domainname;
31
+ int err;
32
+
33
+ if((err = yp_get_default_domain(&domainname)) != 0){
34
+ rb_raise(rb_eYPError, yperr_string(err));
35
+ };
36
+ return rb_tainted_str_new2(domainname);
37
+ };
38
+
39
+ VALUE
40
+ rb_yperr_string(VALUE self, VALUE err)
41
+ {
42
+ return rb_tainted_str_new2(yperr_string(FIX2INT(err)));
43
+ };
44
+
45
+ static int
46
+ rb_ypall_callback(int status, char *inkey, int inkeylen, char *inval,
47
+ int invallen, char *indata)
48
+ {
49
+ VALUE cb = (VALUE)indata;
50
+ VALUE res, key, val;
51
+
52
+ if( inkeylen > 0 ){
53
+ key = rb_tainted_str_new(inkey, inkeylen);
54
+ }
55
+ else{
56
+ key = Qnil;
57
+ };
58
+
59
+ if( invallen > 0 ){
60
+ val = rb_tainted_str_new(inval, invallen);
61
+ }
62
+ else{
63
+ val = Qnil;
64
+ };
65
+
66
+ if( SYMBOL_P(cb) ){
67
+ res = rb_funcall(rb_mKernel, SYM2ID(cb), 3,
68
+ INT2NUM(status), key, val);
69
+ }
70
+ else if( cb == Qnil ){
71
+ res = rb_yield(rb_ary_new3(3, INT2NUM(status), key, val));
72
+ }
73
+ else{
74
+ res = rb_funcall(cb, rb_intern("call"), 3,
75
+ INT2NUM(status), key, val);
76
+ };
77
+
78
+ /* return value:
79
+ * 0: call again for additional key-value pair
80
+ * nonzero: don't call again
81
+ */
82
+ if( TYPE(res) != T_FIXNUM ){
83
+ if( res == Qfalse || res == Qnil ){
84
+ return 0;
85
+ }
86
+ else{
87
+ return 1;
88
+ };
89
+ }
90
+ else{
91
+ return FIX2INT(res);
92
+ };
93
+ };
94
+
95
+ VALUE
96
+ rb_yp_all(int argc, VALUE argv[], VALUE self)
97
+ {
98
+ int res;
99
+ struct ypall_callback ypcb;
100
+ VALUE domainname, map, cb;
101
+
102
+ rb_scan_args(argc, argv, "21", &domainname, &map, &cb);
103
+ if( domainname == Qnil ){
104
+ domainname = rb_yp_get_default_domain(self);
105
+ };
106
+ switch( argc ){
107
+ case 3:
108
+ ypcb.foreach = rb_ypall_callback;
109
+ ypcb.data = (char*)cb;
110
+ break;
111
+ case 2:
112
+ ypcb.foreach = rb_ypall_callback;
113
+ ypcb.data = (char*)Qnil;
114
+ break;
115
+ };
116
+
117
+ res = yp_all(STR2CSTR(domainname), STR2CSTR(map), &ypcb);
118
+ rb_yp_check_yperr(res);
119
+
120
+ return Qnil;
121
+ };
122
+
123
+ VALUE
124
+ rb_yp_first(VALUE self, VALUE domain, VALUE map)
125
+ {
126
+ char *key, *val;
127
+ int keylen, vallen;
128
+ int res;
129
+ VALUE vkey, vval;
130
+
131
+ if( domain == Qnil ){
132
+ domain = rb_yp_get_default_domain(self);
133
+ };
134
+
135
+ res = yp_first(STR2CSTR(domain), STR2CSTR(map), &key, &keylen, &val, &vallen);
136
+ rb_yp_check_yperr(res);
137
+
138
+ if( keylen > 0 ){
139
+ vkey = rb_tainted_str_new(key, keylen);
140
+ }
141
+ else{
142
+ vkey = Qnil;
143
+ };
144
+
145
+ if( vallen > 0 ){
146
+ vval = rb_tainted_str_new(val, vallen);
147
+ }
148
+ else{
149
+ vval = Qnil;
150
+ };
151
+
152
+ return rb_assoc_new(vkey, vval);
153
+ };
154
+
155
+ VALUE
156
+ rb_yp_next(VALUE self, VALUE domain, VALUE map, VALUE inkey)
157
+ {
158
+ char *key, *val;
159
+ int keylen, vallen;
160
+ int res;
161
+ VALUE vkey, vval;
162
+
163
+ if( domain == Qnil ){
164
+ domain = rb_yp_get_default_domain(self);
165
+ };
166
+
167
+ res = yp_next(STR2CSTR(domain), STR2CSTR(map),
168
+ STR2CSTR(inkey), RSTRING(inkey)->len,
169
+ &key, &keylen, &val, &vallen);
170
+ rb_yp_check_yperr(res);
171
+
172
+ if( keylen > 0 ){
173
+ vkey = rb_tainted_str_new(key, keylen);
174
+ }
175
+ else{
176
+ vkey = Qnil;
177
+ };
178
+
179
+ if( vallen > 0 ){
180
+ vval = rb_tainted_str_new(val, vallen);
181
+ }
182
+ else{
183
+ vval = Qnil;
184
+ };
185
+
186
+ return rb_assoc_new(vkey, vval);
187
+ };
188
+
189
+ VALUE
190
+ rb_yp_update(VALUE self, VALUE domain, VALUE map, VALUE ypop, VALUE inkey, VALUE inval)
191
+ {
192
+ int res;
193
+
194
+ if( domain == Qnil ){
195
+ domain = rb_yp_get_default_domain(self);
196
+ };
197
+
198
+ res = yp_update(STR2CSTR(domain), STR2CSTR(map), FIX2INT(ypop),
199
+ STR2CSTR(inkey), RSTRING(inkey)->len,
200
+ STR2CSTR(inval), RSTRING(inval)->len);
201
+ rb_yp_check_yperr(res);
202
+
203
+ return INT2NUM(res);
204
+ };
205
+
206
+ VALUE
207
+ rb_yp_match(VALUE self, VALUE domain, VALUE map, VALUE inkey)
208
+ {
209
+ int res;
210
+ char *val;
211
+ int vallen;
212
+
213
+ if( domain == Qnil ){
214
+ domain = rb_yp_get_default_domain(self);
215
+ };
216
+
217
+ res = yp_match(STR2CSTR(domain), STR2CSTR(map),
218
+ STR2CSTR(inkey), RSTRING(inkey)->len,
219
+ &val, &vallen);
220
+ rb_yp_check_yperr(res);
221
+
222
+ if( vallen > 0 ){
223
+ return rb_tainted_str_new(val, vallen);
224
+ }
225
+ else{
226
+ return Qnil;
227
+ };
228
+ };
229
+
230
+ VALUE
231
+ rb_yp_order(VALUE self, VALUE domain, VALUE map)
232
+ {
233
+ int res, order;
234
+
235
+ if( domain == Qnil ){
236
+ domain = rb_yp_get_default_domain(self);
237
+ };
238
+
239
+ res = yp_order(STR2CSTR(domain), STR2CSTR(map), &order);
240
+ rb_yp_check_yperr(res);
241
+
242
+ return INT2NUM(order);
243
+ };
244
+
245
+ VALUE
246
+ rb_yp_master(VALUE self, VALUE domain, VALUE map)
247
+ {
248
+ int res;
249
+ char *master;
250
+ VALUE obj;
251
+
252
+ if( domain == Qnil ){
253
+ domain = rb_yp_get_default_domain(self);
254
+ };
255
+
256
+ res = yp_master(STR2CSTR(domain), STR2CSTR(map), &master);
257
+ rb_yp_check_yperr(res);
258
+
259
+ obj = rb_tainted_str_new2(master);
260
+ free(master);
261
+
262
+ return obj;
263
+ };
264
+
265
+ void
266
+ Init_yp()
267
+ {
268
+ rb_mYP = rb_define_module("YP");
269
+ rb_eYPError = rb_define_class_under(rb_mYP, "YPError", rb_eRuntimeError);
270
+
271
+ #define rb_yp_define_yperr(x) rb_define_const(rb_mYP, #x, INT2FIX(x));
272
+ rb_yp_define_yperr(YPERR_SUCCESS);
273
+ rb_yp_define_yperr(YPERR_BADARGS);
274
+ rb_yp_define_yperr(YPERR_RPC);
275
+ rb_yp_define_yperr(YPERR_DOMAIN);
276
+ rb_yp_define_yperr(YPERR_MAP);
277
+ rb_yp_define_yperr(YPERR_KEY);
278
+ rb_yp_define_yperr(YPERR_YPERR);
279
+ rb_yp_define_yperr(YPERR_RESRC);
280
+ rb_yp_define_yperr(YPERR_NOMORE);
281
+ rb_yp_define_yperr(YPERR_PMAP);
282
+ rb_yp_define_yperr(YPERR_YPBIND);
283
+ rb_yp_define_yperr(YPERR_YPSERV);
284
+ rb_yp_define_yperr(YPERR_NODOM);
285
+ rb_yp_define_yperr(YPERR_BADDB);
286
+ rb_yp_define_yperr(YPERR_VERS);
287
+ rb_yp_define_yperr(YPERR_ACCESS);
288
+ rb_yp_define_yperr(YPERR_BUSY);
289
+ #undef rb_yp_define_yperr
290
+
291
+ #define rb_yp_define_ypop(x) rb_define_const(rb_mYP, #x, INT2FIX(x));
292
+ rb_yp_define_ypop(YPOP_CHANGE);
293
+ rb_yp_define_ypop(YPOP_INSERT);
294
+ rb_yp_define_ypop(YPOP_DELETE);
295
+ rb_yp_define_ypop(YPOP_STORE);
296
+ #undef rb_yp_define_ypop
297
+
298
+ rb_define_module_function(rb_mYP, "get_default_domain",
299
+ rb_yp_get_default_domain, 0);
300
+ rb_define_module_function(rb_mYP, "yp_all", rb_yp_all, -1);
301
+ rb_define_module_function(rb_mYP, "yp_first", rb_yp_first, 2);
302
+ rb_define_module_function(rb_mYP, "yp_next", rb_yp_next, 3);
303
+ rb_define_module_function(rb_mYP, "yp_update", rb_yp_update, 5);
304
+ rb_define_module_function(rb_mYP, "yp_match", rb_yp_match, 3);
305
+ rb_define_module_function(rb_mYP, "yp_order", rb_yp_order, 2);
306
+ rb_define_module_function(rb_mYP, "yp_master", rb_yp_master, 2);
307
+ rb_define_module_function(rb_mYP, "err_string", rb_yperr_string, 1);
308
+ };
@@ -0,0 +1,9 @@
1
+ module NIS
2
+ end
3
+
4
+ # sorry for the globale namespace pollution. this is old code, and I'm
5
+ # just trying to gemify it without breaking things.
6
+ YP = NIS
7
+
8
+ require 'nis/version'
9
+ require 'nis/nis'
@@ -0,0 +1,3 @@
1
+ module NIS
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,62 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{nis}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Takaaki Tateishi"]
12
+ s.date = %q{2010-10-07}
13
+ s.description = %q{Provides an interface for NIS(YP) API.}
14
+ s.email = %q{ttate@users.sourceforge.net}
15
+ s.extensions = ["ext/nis/extconf.rb"]
16
+ s.extra_rdoc_files = [
17
+ "README",
18
+ "README.html"
19
+ ]
20
+ s.files = [
21
+ ".gitignore",
22
+ "MANIFEST",
23
+ "README",
24
+ "README.html",
25
+ "Rakefile",
26
+ "doc/NIS-HOWTO.html",
27
+ "ext/nis/extconf.rb",
28
+ "ext/nis/nis.c",
29
+ "ext/nis/nis.h",
30
+ "ext/nis/yp.c",
31
+ "lib/nis.rb",
32
+ "lib/nis/nis.so",
33
+ "lib/nis/version.rb",
34
+ "nis.gemspec",
35
+ "test/yp_all.rb",
36
+ "test/yp_all2.rb",
37
+ "test/yp_first.rb",
38
+ "test/yp_match.rb"
39
+ ]
40
+ s.homepage = %q{http://raa.ruby-lang.org/project/ruby-nis/}
41
+ s.rdoc_options = ["--charset=UTF-8"]
42
+ s.require_paths = ["lib"]
43
+ s.rubygems_version = %q{1.3.7}
44
+ s.summary = %q{Provides an interface for NIS(YP) API.}
45
+ s.test_files = [
46
+ "test/yp_all.rb",
47
+ "test/yp_first.rb",
48
+ "test/yp_match.rb",
49
+ "test/yp_all2.rb"
50
+ ]
51
+
52
+ if s.respond_to? :specification_version then
53
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
54
+ s.specification_version = 3
55
+
56
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
+ else
58
+ end
59
+ else
60
+ end
61
+ end
62
+
@@ -0,0 +1,19 @@
1
+ # -*- ruby -*-
2
+ # $Id: yp_all.rb,v 1.1.1.1 2001/04/20 05:38:57 ttate Exp $
3
+
4
+ require 'nis'
5
+
6
+ def print_data(status, key, val)
7
+ case status
8
+ when YP::YPERR_SUCCESS
9
+ return status
10
+ else
11
+ if( key && val )
12
+ print("#{key}: #{val}\n")
13
+ end
14
+ return 0
15
+ end
16
+ end
17
+
18
+ ypdomain = YP.get_default_domain
19
+ YP.yp_all(ypdomain, 'passwd.byname', :print_data)
@@ -0,0 +1,21 @@
1
+ # -*- ruby -*-
2
+ # $Id: yp_all2.rb,v 1.1.1.1 2001/04/20 05:38:57 ttate Exp $
3
+
4
+ require 'nis'
5
+
6
+ def print_data(status, key, val)
7
+ case status
8
+ when YP::YPERR_SUCCESS
9
+ return status
10
+ else
11
+ if( key && val )
12
+ print("#{key}: #{val}\n")
13
+ end
14
+ return 0
15
+ end
16
+ end
17
+
18
+ ypdomain = YP.get_default_domain
19
+ YP.yp_all(ypdomain, 'passwd.byname'){|status, key, val|
20
+ print_data(status, key, val)
21
+ }
@@ -0,0 +1,11 @@
1
+ # -*- ruby -*-
2
+ # $Id: yp_first.rb,v 1.1.1.1 2001/04/20 05:38:57 ttate Exp $
3
+
4
+ require 'nis'
5
+
6
+ ypdomain = YP.get_default_domain
7
+ key,val = YP.yp_first(ypdomain, 'passwd.byname')
8
+ while( key && val )
9
+ print("#{key}: #{val}\n")
10
+ key,val = YP.yp_next(ypdomain, 'passwd.byname', key)
11
+ end
@@ -0,0 +1,7 @@
1
+ # -*- ruby -*-
2
+ # $Id: yp_match.rb,v 1.1.1.1 2001/04/20 05:38:57 ttate Exp $
3
+
4
+ require 'nis'
5
+
6
+ ypdomain = YP.get_default_domain
7
+ p YP.yp_match(ypdomain, 'passwd.byname', 'ttate')
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nis
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
11
+ platform: ruby
12
+ authors:
13
+ - Takaaki Tateishi
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-07 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Provides an interface for NIS(YP) API.
23
+ email: ttate@users.sourceforge.net
24
+ executables: []
25
+
26
+ extensions:
27
+ - ext/nis/extconf.rb
28
+ extra_rdoc_files:
29
+ - README
30
+ - README.html
31
+ files:
32
+ - .gitignore
33
+ - MANIFEST
34
+ - README
35
+ - README.html
36
+ - Rakefile
37
+ - doc/NIS-HOWTO.html
38
+ - ext/nis/extconf.rb
39
+ - ext/nis/nis.c
40
+ - ext/nis/nis.h
41
+ - ext/nis/yp.c
42
+ - lib/nis.rb
43
+ - lib/nis/nis.so
44
+ - lib/nis/version.rb
45
+ - nis.gemspec
46
+ - test/yp_all.rb
47
+ - test/yp_all2.rb
48
+ - test/yp_first.rb
49
+ - test/yp_match.rb
50
+ has_rdoc: true
51
+ homepage: http://raa.ruby-lang.org/project/ruby-nis/
52
+ licenses: []
53
+
54
+ post_install_message:
55
+ rdoc_options:
56
+ - --charset=UTF-8
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ requirements: []
78
+
79
+ rubyforge_project:
80
+ rubygems_version: 1.3.7
81
+ signing_key:
82
+ specification_version: 3
83
+ summary: Provides an interface for NIS(YP) API.
84
+ test_files:
85
+ - test/yp_all.rb
86
+ - test/yp_first.rb
87
+ - test/yp_match.rb
88
+ - test/yp_all2.rb