p4ruby 2020.1.2056123 → 2021.1.2156749

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e5610527695e89a26cc22b7418d48a4579b3d8d7ea3b9adaf6971e801f178af
4
- data.tar.gz: 502669cdd982a3881d3c118e05ac7e161de5682043408469436a699fd6aa6c30
3
+ metadata.gz: caea2db119dc72c9cbcdbb6d3218e0a548f75eb47c7e6471c66db6dd7d5bdb36
4
+ data.tar.gz: 3eb17c7df1baa55c73b3c195de8fa0e31bd86a5dd688970d831f5f4e205e3bf6
5
5
  SHA512:
6
- metadata.gz: 6ced573b1076fdfdba4b3b59f61235c64d790d94491e831e431ac34e870c146bdeb29cf723e53d3025e83a151b7753ce0fdd242bb7ca61fa0aa0fdb8badd9004
7
- data.tar.gz: 2492e93581b93465e717901080487954fb65fb13cbfd8e6ce23fba4c64ab2baa174cf14645664a59bdbf239297234d84459b08976b558b8e902e153fb61cafcc
6
+ metadata.gz: 9f43e94cc99bc92157512f438138610364959eeb8ccb57f313027f01e8767b699b03615ed01dac042315a6b4a5a7775c7e5cd09469733d9a73d7bbc1808624c9
7
+ data.tar.gz: f492d5051540489a0f62bd07b5d994148e02181f969523c633e5857d62253e2c983d83b9c90e7bab83b44efe2ef33770dfa025086badd89c99fbff0137e3a58d
data/LICENSE.txt CHANGED
@@ -1,24 +1,455 @@
1
- Copyright (c) 2001-2014, Perforce Software, Inc. All rights reserved.
1
+ Copyright (c) 2021, Perforce Software, Inc. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions are met:
5
+
6
+ 1. Redistributions of source code must retain the above copyright notice, this
7
+ list of conditions and the following disclaimer.
8
+
9
+ 2. Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+
13
+ 3. Neither the name of the copyright holder nor the names of its contributors
14
+ may be used to endorse or promote products derived from this software without
15
+ specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
21
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ -----------------------
28
+
29
+ The following are the license statements for code used in
30
+ this program.
31
+
32
+
33
+ sol2 License
34
+ -----------------------
35
+
36
+ Copyright (c) 2013-2018 Rapptz, ThePhD, and contributors
37
+
38
+ Permission is hereby granted, free of charge, to any person obtaining
39
+ a copy of this software and associated documentation files (the
40
+ "Software"), to deal in the Software without restriction, including
41
+ without limitation the rights to use, copy, modify, merge, publish,
42
+ distribute, sublicense, and/or sell copies of the Software, and to
43
+ permit persons to whom the Software is furnished to do so, subject to
44
+ the following conditions:
45
+
46
+ The above copyright notice and this permission notice shall be
47
+ included in all copies or substantial portions of the Software.
48
+
49
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
50
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
51
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
52
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
53
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
54
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
55
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
56
+
57
+
58
+ Lua License
59
+ -----------------------
60
+
61
+ Copyright (c) 1994-2018 Lua.org, PUC-Rio.
62
+
63
+ Permission is hereby granted, free of charge, to any person obtaining
64
+ a copy of this software and associated documentation files (the
65
+ "Software"), to deal in the Software without restriction, including
66
+ without limitation the rights to use, copy, modify, merge, publish,
67
+ distribute, sublicense, and/or sell copies of the Software, and to
68
+ permit persons to whom the Software is furnished to do so, subject to
69
+ the following conditions:
70
+
71
+ The above copyright notice and this permission notice shall be
72
+ included in all copies or substantial portions of the Software.
73
+
74
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
75
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
76
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
77
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
78
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
79
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
80
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
81
+
82
+
83
+ cURL License
84
+ -----------------------
85
+
86
+ This code uses a permissive license. Please use the following
87
+ attribution in the documentation of the open source code.
88
+
89
+ Copyright (c) 1996 - 2018, Daniel Stenberg, daniel@haxx.se, and many
90
+ contributors, see the THANKS file.
91
+
92
+ All rights reserved.
93
+
94
+ Permission to use, copy, modify, and distribute this software for any
95
+ purpose with or without fee is hereby granted, provided that the above
96
+ copyright notice and this permission notice appear in all copies.
97
+
98
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
99
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
100
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
101
+ THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
102
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
103
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
104
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
105
+ SOFTWARE.
106
+
107
+ Except as contained in this notice, the name of a copyright holder shall
108
+ not be used in advertising or otherwise to promote the sale, use or
109
+ other dealings in this Software without prior written authorization of
110
+ the copyright holder.
111
+
112
+
113
+ Lua-cURLv3 License
114
+ -----------------------
115
+
116
+ Copyright (c) 2014-2018 Alexey Melnichuk
117
+
118
+ Permission is hereby granted, free of charge, to any person obtaining a
119
+ copy of this software and associated documentation files (the
120
+ "Software"), to deal in the Software without restriction, including
121
+ without limitation the rights to use, copy, modify, merge, publish,
122
+ distribute, sublicense, and/or sell copies of the Software, and to permit
123
+ persons to whom the Software is furnished to do so, subject to the
124
+ following conditions:
125
+
126
+ The above copyright notice and this permission notice shall be included
127
+ in all copies or substantial portions of the Software.
128
+
129
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
130
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
131
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
132
+ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
133
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
134
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
135
+ USE OR OTHER DEALINGS IN THE SOFTWARE.
136
+
137
+
138
+ LuaSQLite3 License
139
+ -----------------------
140
+
141
+ Copyright (C) 2002-2016 Tiago Dionizio, Doug Currie
142
+ All rights reserved.
143
+ Author : Tiago Dionizio <tiago.dionizio@ist.utl.pt>
144
+ Author : Doug Currie <doug.currie@alum.mit.edu>
145
+ Library : lsqlite3 - an SQLite 3 database binding for Lua 5
146
+
147
+ Permission is hereby granted, free of charge, to any person obtaining
148
+ a copy of this software and associated documentation files (the
149
+ "Software"), to deal in the Software without restriction, including
150
+ without limitation the rights to use, copy, modify, merge, publish,
151
+ distribute, sublicense, and/or sell copies of the Software, and to
152
+ permit persons to whom the Software is furnished to do so, subject to
153
+ the following conditions:
154
+
155
+ The above copyright notice and this permission notice shall be
156
+ included in all copies or substantial portions of the Software.
157
+
158
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
159
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
160
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
161
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
162
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
163
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
164
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
165
+
166
+
167
+ lua-cjson License
168
+ -----------------------
169
+
170
+ Copyright (c) 2010-2012 Mark Pulford <mark@kyne.com.au>
171
+
172
+ Permission is hereby granted, free of charge, to any person obtaining
173
+ a copy of this software and associated documentation files (the
174
+ "Software"), to deal in the Software without restriction, including
175
+ without limitation the rights to use, copy, modify, merge, publish,
176
+ distribute, sublicense, and/or sell copies of the Software, and to
177
+ permit persons to whom the Software is furnished to do so, subject to
178
+ the following conditions:
179
+
180
+ The above copyright notice and this permission notice shall be
181
+ included in all copies or substantial portions of the Software.
182
+
183
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
184
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
185
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
186
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
187
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
188
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
189
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
190
+
191
+
192
+ libc++ and libc++abi License
193
+ -----------------------
194
+
195
+ These libraries are dual-licensed:
196
+
197
+ The University of Illinois/NCSA Open Source License (NCSA)
198
+ Developed under the LLVM Project
199
+
200
+ Permission is hereby granted, free of charge, to any person obtaining a
201
+ copy of this software and associated documentation files (the
202
+ "Software"), to deal with the Software without restriction, including
203
+ without limitation the rights to use, copy, modify, merge, publish,
204
+ distribute, sublicense, and/or sell copies of the Software, and to
205
+ permit persons to whom the Software is furnished to do so, subject to the
206
+ following conditions:
207
+
208
+ Redistributions of source code must retain the above copyright notice,
209
+ this list of conditions and the following disclaimers.
210
+ Redistributions in binary form must reproduce the above copyright
211
+ notice, this list of conditions and the following disclaimers in the
212
+ documentation and/or other materials provided with the distribution.
213
+ Neither the names of <Name of Development Group, Name of Institution>,
214
+ nor the names of its contributors may be used to endorse or promote
215
+ products derived from this Software without specific prior written
216
+ permission.
217
+
218
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
219
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
220
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
221
+ IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
222
+ ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
223
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
224
+ SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
225
+
226
+ MIT
227
+ Developed under the LLVM Project
228
+
229
+ Permission is hereby granted, free of charge, to any person obtaining a
230
+ copy of this software and associated documentation files (the
231
+ "Software"), to deal in the Software without restriction, including
232
+ without limitation the rights to use, copy, modify, merge, publish,
233
+ distribute, sublicense, and/or sell copies of the Software, and to permit
234
+ persons to whom the Software is furnished to do so, subject to the
235
+ following conditions:
236
+
237
+ The above copyright notice and this permission notice shall be included
238
+ in all copies or substantial portions of the Software.
239
+
240
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
241
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
242
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
243
+ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
244
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
245
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
246
+ USE OR OTHER DEALINGS IN THE SOFTWARE.
247
+
248
+
249
+ jemalloc
250
+ -----------------------
251
+
252
+ Copyright (C) 2002-present Jason Evans <jasone@canonware.com>.
253
+ All rights reserved.
254
+ Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved.
255
+ Copyright (C) 2009-present Facebook, Inc. All rights reserved.
2
256
 
3
257
  Redistribution and use in source and binary forms, with or without
4
258
  modification, are permitted provided that the following conditions are met:
259
+ 1. Redistributions of source code must retain the above copyright
260
+ notice(s), this list of conditions and the following disclaimer.
261
+ 2. Redistributions in binary form must reproduce the above copyright
262
+ notice(s), this list of conditions and the following disclaimer in the
263
+ documentation and/or other materials provided with the distribution.
264
+
265
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
266
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
267
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
268
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
269
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
270
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
271
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
272
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
273
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
274
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
275
+ SUCH DAMAGE.
276
+
277
+
278
+ JSON for Modern C++
279
+ -----------------------
280
+
281
+ Copyright (c) 2013-2018 Niels Lohmann
282
+
283
+ Permission is hereby granted, free of charge, to any person obtaining
284
+ a copy of this software and associated documentation files (the
285
+ "Software"), to deal in the Software without restriction, including
286
+ without limitation the rights to use, copy, modify, merge, publish,
287
+ distribute, sublicense, and/or sell copies of the Software, and to permit
288
+ persons to whom the Software is furnished to do so, subject to the
289
+ following conditions:
290
+
291
+ The above copyright notice and this permission notice shall be included
292
+ in all copies or substantial portions of the Software.
293
+
294
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
295
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
296
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
297
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
298
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
299
+ OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
300
+ THE USE OR OTHER DEALINGS IN THE SOFTWARE.
301
+
302
+ optional-lite and any-lite
303
+ Martin Moene
304
+ -----------------------
305
+
306
+ Boost Software License - Version 1.0 - August 17th, 2003
307
+
308
+ Permission is hereby granted, free of charge, to any person or organization
309
+ obtaining a copy of the software and accompanying documentation covered by
310
+ this license (the "Software") to use, reproduce, display, distribute,
311
+ execute, and transmit the Software, and to prepare derivative works of the
312
+ Software, and to permit third-parties to whom the Software is furnished to
313
+ do so, all subject to the following:
314
+
315
+ The copyright notices in the Software and this entire statement, including
316
+ the above license grant, this restriction and the following disclaimer,
317
+ must be included in all copies of the Software, in whole or in part, and
318
+ all derivative works of the Software, unless such copies or derivative
319
+ works are solely in the form of machine-executable object code generated by
320
+ a source language processor.
321
+
322
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
323
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
324
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
325
+ SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
326
+ FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
327
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
328
+ DEALINGS IN THE SOFTWARE.
329
+
330
+
331
+
332
+ LICENSE ISSUES
333
+ ==============
334
+
335
+ The OpenSSL toolkit stays under a double license, i.e. both the conditions of
336
+ the OpenSSL License and the original SSLeay license apply to the toolkit.
337
+ See below for the actual license texts.
338
+
339
+ OpenSSL License
340
+ ---------------
341
+
342
+ /* ====================================================================
343
+ * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved.
344
+ *
345
+ * Redistribution and use in source and binary forms, with or without
346
+ * modification, are permitted provided that the following conditions
347
+ * are met:
348
+ *
349
+ * 1. Redistributions of source code must retain the above copyright
350
+ * notice, this list of conditions and the following disclaimer.
351
+ *
352
+ * 2. Redistributions in binary form must reproduce the above copyright
353
+ * notice, this list of conditions and the following disclaimer in
354
+ * the documentation and/or other materials provided with the
355
+ * distribution.
356
+ *
357
+ * 3. All advertising materials mentioning features or use of this
358
+ * software must display the following acknowledgment:
359
+ * "This product includes software developed by the OpenSSL Project
360
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
361
+ *
362
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
363
+ * endorse or promote products derived from this software without
364
+ * prior written permission. For written permission, please contact
365
+ * openssl-core@openssl.org.
366
+ *
367
+ * 5. Products derived from this software may not be called "OpenSSL"
368
+ * nor may "OpenSSL" appear in their names without prior written
369
+ * permission of the OpenSSL Project.
370
+ *
371
+ * 6. Redistributions of any form whatsoever must retain the following
372
+ * acknowledgment:
373
+ * "This product includes software developed by the OpenSSL Project
374
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
375
+ *
376
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
377
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
378
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
379
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
380
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
381
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
382
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
383
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
384
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
385
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
386
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
387
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
388
+ * ====================================================================
389
+ *
390
+ * This product includes cryptographic software written by Eric Young
391
+ * (eay@cryptsoft.com). This product includes software written by Tim
392
+ * Hudson (tjh@cryptsoft.com).
393
+ *
394
+ */
395
+
396
+ Original SSLeay License
397
+ -----------------------
398
+
399
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
400
+ * All rights reserved.
401
+ *
402
+ * This package is an SSL implementation written
403
+ * by Eric Young (eay@cryptsoft.com).
404
+ * The implementation was written so as to conform with Netscapes SSL.
405
+ *
406
+ * This library is free for commercial and non-commercial use as long as
407
+ * the following conditions are aheared to. The following conditions
408
+ * apply to all code found in this distribution, be it the RC4, RSA,
409
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
410
+ * included with this distribution is covered by the same copyright terms
411
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
412
+ *
413
+ * Copyright remains Eric Young's, and as such any Copyright notices in
414
+ * the code are not to be removed.
415
+ * If this package is used in a product, Eric Young should be given attribution
416
+ * as the author of the parts of the library used.
417
+ * This can be in the form of a textual message at program startup or
418
+ * in documentation (online or textual) provided with the package.
419
+ *
420
+ * Redistribution and use in source and binary forms, with or without
421
+ * modification, are permitted provided that the following conditions
422
+ * are met:
423
+ * 1. Redistributions of source code must retain the copyright
424
+ * notice, this list of conditions and the following disclaimer.
425
+ * 2. Redistributions in binary form must reproduce the above copyright
426
+ * notice, this list of conditions and the following disclaimer in the
427
+ * documentation and/or other materials provided with the distribution.
428
+ * 3. All advertising materials mentioning features or use of this software
429
+ * must display the following acknowledgement:
430
+ * "This product includes cryptographic software written by
431
+ * Eric Young (eay@cryptsoft.com)"
432
+ * The word 'cryptographic' can be left out if the rouines from the library
433
+ * being used are not cryptographic related :-).
434
+ * 4. If you include any Windows specific code (or a derivative thereof) from
435
+ * the apps directory (application code) you must include an acknowledgement:
436
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
437
+ *
438
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
439
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
440
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
441
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
442
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
443
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
444
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
445
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
446
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
447
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
448
+ * SUCH DAMAGE.
449
+ *
450
+ * The licence and distribution terms for any publically available version or
451
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
452
+ * copied and put under another distribution licence
453
+ * [including the GNU Public Licence.]
454
+ */
5
455
 
6
- 1. Redistributions of source code must retain the above copyright
7
- notice, this list of conditions and the following disclaimer.
8
-
9
- 2. Redistributions in binary form must reproduce the above copyright
10
- notice, this list of conditions and the following disclaimer in the
11
- documentation and/or other materials provided with the distribution.
12
-
13
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
16
- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE
17
- SOFTWARE, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
22
- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
23
- THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
24
- DAMAGE.
@@ -56,7 +56,6 @@ ClientProgressRuby::ClientProgressRuby(VALUE prog, int t) {
56
56
  }
57
57
 
58
58
  ClientProgressRuby::~ClientProgressRuby() {
59
- rb_gc_mark( progress );
60
59
  }
61
60
 
62
61
  void ClientProgressRuby::Description(const StrPtr *d, int u) {
@@ -38,6 +38,7 @@
38
38
  #include <ruby.h>
39
39
  #include "undefdups.h"
40
40
  #include <p4/clientapi.h>
41
+ #include <p4/strtable.h>
41
42
  #include <p4/clientprog.h>
42
43
  #include <p4/spec.h>
43
44
  #include <p4/diff.h>
@@ -77,6 +78,7 @@ ClientUserRuby::ClientUserRuby(SpecMgr *s) {
77
78
  rubyExcept = 0;
78
79
  alive = 1;
79
80
  track = false;
81
+ SetSSOHandler( ssoHandler = new P4ClientSSO( s ) );
80
82
 
81
83
  ID idP4 = rb_intern("P4");
82
84
  ID idP4OH = rb_intern("OutputHandler");
@@ -723,4 +725,157 @@ void ClientUserRuby::GCMark() {
723
725
  rb_gc_mark( cProgress );
724
726
 
725
727
  results.GCMark();
728
+ ssoHandler->GCMark();
726
729
  }
730
+
731
+ //
732
+ // SSO handler
733
+ //
734
+
735
+ P4ClientSSO::P4ClientSSO( SpecMgr *s )
736
+ {
737
+ specMgr = s;
738
+ resultSet = 0;
739
+ ssoEnabled = 0;
740
+ result = Qnil;
741
+ }
742
+
743
+ ClientSSOStatus
744
+ P4ClientSSO::Authorize( StrDict &vars, int maxLength, StrBuf &strbuf )
745
+ {
746
+ ssoVars.Clear();
747
+
748
+ if( !ssoEnabled )
749
+ return CSS_SKIP;
750
+
751
+ if( ssoEnabled < 0 )
752
+ return CSS_UNSET;
753
+
754
+ if( resultSet )
755
+ {
756
+ strbuf.Clear();
757
+ VALUE resval = result;
758
+
759
+ //if( P4RDB_CALLS )
760
+ // std::cerr << "[P4] ClientSSO::Authorize(). Using supplied input"
761
+ // << std::endl;
762
+
763
+ if (Qtrue == rb_obj_is_kind_of(result, rb_cArray)) {
764
+ resval = rb_ary_shift(result);
765
+ }
766
+
767
+ if( resval != Qnil ) {
768
+ // Convert whatever's left into a string
769
+ ID to_s = rb_intern("to_s");
770
+ VALUE str = rb_funcall(resval, to_s, 0);
771
+ strbuf.Set(StringValuePtr(str));
772
+ }
773
+
774
+ return resultSet == 2 ? CSS_FAIL
775
+ : CSS_PASS;
776
+ }
777
+
778
+ ssoVars.CopyVars( vars );
779
+ return CSS_EXIT;
780
+ }
781
+
782
+ VALUE
783
+ P4ClientSSO::EnableSSO( VALUE e )
784
+ {
785
+ if( e == Qnil )
786
+ {
787
+ ssoEnabled = 0;
788
+ return Qtrue;
789
+ }
790
+
791
+ if( e == Qtrue )
792
+ {
793
+ ssoEnabled = 1;
794
+ return Qtrue;
795
+ }
796
+
797
+ if( e == Qfalse )
798
+ {
799
+ ssoEnabled = -1;
800
+ return Qtrue;
801
+ }
802
+
803
+ return Qfalse;
804
+ }
805
+
806
+ VALUE
807
+ P4ClientSSO::SSOEnabled()
808
+ {
809
+ if( ssoEnabled == 1 )
810
+ {
811
+ return Qtrue;
812
+ }
813
+ else if( ssoEnabled == -1 )
814
+ {
815
+ return Qfalse;
816
+ }
817
+ else
818
+ {
819
+ return Qnil;
820
+ }
821
+ }
822
+
823
+ VALUE
824
+ P4ClientSSO::SetPassResult( VALUE i )
825
+ {
826
+ resultSet = 1;
827
+ return SetResult( i );
828
+ }
829
+
830
+ VALUE
831
+ P4ClientSSO::GetPassResult()
832
+ {
833
+ if( resultSet == 1 )
834
+ {
835
+ return result;
836
+ }
837
+ else
838
+ {
839
+ return Qnil;
840
+ }
841
+ }
842
+
843
+ VALUE
844
+ P4ClientSSO::SetFailResult( VALUE i )
845
+ {
846
+ resultSet = 2;
847
+ return SetResult( i );
848
+ }
849
+
850
+ VALUE
851
+ P4ClientSSO::GetFailResult()
852
+ {
853
+ if( resultSet == 2 )
854
+ {
855
+ return result;
856
+ }
857
+ else
858
+ {
859
+ return Qnil;
860
+ }
861
+ }
862
+
863
+ VALUE
864
+ P4ClientSSO::SetResult( VALUE i )
865
+ {
866
+ //if (P4RDB_CALLS) fprintf(stderr, "[P4] P4ClientSSO::SetResult()\n");
867
+
868
+ result = i;
869
+ return Qtrue;
870
+ }
871
+
872
+ VALUE
873
+ P4ClientSSO::GetSSOVars()
874
+ {
875
+ return specMgr->StrDictToHash( &ssoVars );
876
+ }
877
+
878
+ void
879
+ P4ClientSSO::GCMark() {
880
+ if (result != Qnil) rb_gc_mark( result );
881
+ }
@@ -42,6 +42,39 @@
42
42
  class SpecMgr;
43
43
  class ClientProgress;
44
44
 
45
+ class P4ClientSSO : public ClientSSO
46
+ {
47
+ public:
48
+ P4ClientSSO( SpecMgr *s );
49
+
50
+ // Client SSO methods overridden here
51
+ virtual ClientSSOStatus Authorize( StrDict &vars, int maxLength,
52
+ StrBuf &result );
53
+
54
+ // Local methods
55
+ VALUE EnableSSO( VALUE e );
56
+ VALUE SSOEnabled();
57
+ VALUE SetPassResult( VALUE i );
58
+ VALUE GetPassResult();
59
+ VALUE SetFailResult( VALUE i );
60
+ VALUE GetFailResult();
61
+ VALUE GetSSOVars();
62
+
63
+ void GCMark();
64
+
65
+ private:
66
+
67
+ VALUE SetResult( VALUE i );
68
+
69
+ int ssoEnabled;
70
+ int resultSet;
71
+
72
+ StrBufDict ssoVars;
73
+ SpecMgr * specMgr;
74
+
75
+ VALUE result;
76
+ };
77
+
45
78
  class ClientUserRuby: public ClientUser, public KeepAlive {
46
79
  public:
47
80
  ClientUserRuby(SpecMgr *s);
@@ -101,6 +134,16 @@ public:
101
134
  return progress;
102
135
  }
103
136
 
137
+ // SSO handler support
138
+
139
+ VALUE EnableSSO( VALUE e ) { return ssoHandler->EnableSSO( e ); }
140
+ VALUE SSOEnabled() { return ssoHandler->SSOEnabled(); }
141
+ VALUE SetSSOPassResult( VALUE i ) { return ssoHandler->SetPassResult( i ); }
142
+ VALUE GetSSOPassResult(){ return ssoHandler->GetPassResult();}
143
+ VALUE SetSSOFailResult( VALUE i ) { return ssoHandler->SetFailResult( i ); }
144
+ VALUE GetSSOFailResult(){ return ssoHandler->GetFailResult();}
145
+ VALUE GetSSOVars() { return ssoHandler->GetSSOVars(); }
146
+
104
147
  // override from KeepAlive
105
148
  virtual int IsAlive() {
106
149
  return alive;
@@ -129,5 +172,6 @@ private:
129
172
  int alive;
130
173
  int rubyExcept;
131
174
  bool track;
175
+ P4ClientSSO * ssoHandler;
132
176
  };
133
177
 
data/ext/P4/extconf.rb CHANGED
@@ -425,6 +425,8 @@ def p4_cpu(os)
425
425
  when :darwin, :linux
426
426
  if cpu =~ /i686/
427
427
  'x86'
428
+ elsif cpu =~ /universal/
429
+ 'x86_64'
428
430
  else
429
431
  cpu
430
432
  end
@@ -451,7 +453,9 @@ def p4_platform_label
451
453
  else
452
454
  'mingwx86'
453
455
  end
454
- when /darwin/
456
+ when /darwin19|darwin[2-9][0-9]/
457
+ "macosx1015#{p4_cpu(:darwin)}"
458
+ when /darwin/
455
459
  "darwin90#{p4_cpu(:darwin)}"
456
460
  when /solaris/
457
461
  "solaris10#{p4_cpu(:solaris)}"
@@ -484,6 +488,8 @@ def filename
484
488
  filename = 'p4api-openssl1.0.2.zip'
485
489
  end
486
490
  end
491
+ elsif RbConfig::CONFIG['target_os'].downcase =~ /darwin19|darwin[2-9][0-9]/
492
+ filename = 'p4api-openssl1.1.1.tgz'
487
493
  else
488
494
  filename = 'p4api.tgz'
489
495
  if !openssl_number.to_s.empty?
data/ext/P4/p4.cpp CHANGED
@@ -314,6 +314,25 @@ static VALUE p4_set_enviro_file( VALUE self, VALUE rbstr )
314
314
  return Qtrue;
315
315
  }
316
316
 
317
+ static VALUE p4_get_evar( VALUE self, VALUE var )
318
+ {
319
+ P4ClientApi *p4;
320
+ const StrPtr *val;
321
+ Data_Get_Struct( self, P4ClientApi, p4 );
322
+ val = p4->GetEVar( StringValuePtr( var ) );
323
+ if( !val ) return Qnil;
324
+
325
+ return P4Utils::ruby_string( val->Text() );
326
+ }
327
+
328
+ static VALUE p4_set_evar( VALUE self, VALUE var, VALUE val )
329
+ {
330
+ P4ClientApi *p4;
331
+ Data_Get_Struct( self, P4ClientApi, p4 );
332
+ p4->SetEVar( StringValuePtr( var ), StringValuePtr( val ) );
333
+ return Qtrue;
334
+ }
335
+
317
336
  static VALUE p4_get_host( VALUE self )
318
337
  {
319
338
  P4ClientApi *p4;
@@ -642,7 +661,7 @@ static VALUE p4_run( VALUE self, VALUE args )
642
661
 
643
662
  // Allocate storage on the stack so it's automatically reclaimed
644
663
  // when we exit.
645
- char **p4args = ALLOCA_N( char *, argc + 1 );
664
+ char **p4args = RB_ALLOC_N( char *, argc + 1 );
646
665
 
647
666
  // Copy the args across
648
667
  for ( i = 0; i < argc; i++ )
@@ -808,6 +827,58 @@ static VALUE p4_set_progress( VALUE self, VALUE progress )
808
827
  return p4->SetProgress( progress );
809
828
  }
810
829
 
830
+ /*******************************************************************************
831
+ * SSO handler support
832
+ ******************************************************************************/
833
+ static VALUE p4_get_enabled_sso( VALUE self )
834
+ {
835
+ P4ClientApi *p4;
836
+ Data_Get_Struct( self, P4ClientApi, p4 );
837
+ return p4->GetEnableSSO();
838
+ }
839
+
840
+ static VALUE p4_set_enable_sso( VALUE self, VALUE enable )
841
+ {
842
+ P4ClientApi *p4;
843
+ Data_Get_Struct( self, P4ClientApi, p4 );
844
+ return p4->SetEnableSSO( enable );
845
+ }
846
+
847
+ static VALUE p4_get_sso_vars( VALUE self )
848
+ {
849
+ P4ClientApi *p4;
850
+ Data_Get_Struct( self, P4ClientApi, p4 );
851
+ return p4->GetSSOVars();
852
+ }
853
+
854
+ static VALUE p4_get_sso_passresult( VALUE self )
855
+ {
856
+ P4ClientApi *p4;
857
+ Data_Get_Struct( self, P4ClientApi, p4 );
858
+ return p4->GetSSOPassResult();
859
+ }
860
+
861
+ static VALUE p4_set_sso_passresult( VALUE self, VALUE result )
862
+ {
863
+ P4ClientApi *p4;
864
+ Data_Get_Struct( self, P4ClientApi, p4 );
865
+ return p4->SetSSOPassResult( result );
866
+ }
867
+
868
+ static VALUE p4_get_sso_failresult( VALUE self )
869
+ {
870
+ P4ClientApi *p4;
871
+ Data_Get_Struct( self, P4ClientApi, p4 );
872
+ return p4->GetSSOFailResult();
873
+ }
874
+
875
+ static VALUE p4_set_sso_failresult( VALUE self, VALUE result )
876
+ {
877
+ P4ClientApi *p4;
878
+ Data_Get_Struct( self, P4ClientApi, p4 );
879
+ return p4->SetSSOFailResult( result );
880
+ }
881
+
811
882
  /*******************************************************************************
812
883
  * P4::MergeData methods. Construction/destruction defined elsewhere
813
884
  ******************************************************************************/
@@ -1262,6 +1333,8 @@ void Init_P4()
1262
1333
  rb_define_method( cP4, "set_env", RUBY_METHOD_FUNC(p4_set_env) , 2 );
1263
1334
  rb_define_method( cP4, "enviro_file", RUBY_METHOD_FUNC(p4_get_enviro_file), 0);
1264
1335
  rb_define_method( cP4, "enviro_file=", RUBY_METHOD_FUNC(p4_set_enviro_file), 1);
1336
+ rb_define_method( cP4, "evar", RUBY_METHOD_FUNC(p4_get_evar) , 1 );
1337
+ rb_define_method( cP4, "set_evar", RUBY_METHOD_FUNC(p4_set_evar) , 2 );
1265
1338
  rb_define_method( cP4, "host", RUBY_METHOD_FUNC(p4_get_host) , 0 );
1266
1339
  rb_define_method( cP4, "host=", RUBY_METHOD_FUNC(p4_set_host) , 1 );
1267
1340
  rb_define_method( cP4, "ignore_file",RUBY_METHOD_FUNC(p4_get_ignore) , 0 );
@@ -1335,6 +1408,16 @@ void Init_P4()
1335
1408
  rb_define_method( cP4, "progress", RUBY_METHOD_FUNC(p4_get_progress), 0);
1336
1409
  rb_define_method( cP4, "progress=", RUBY_METHOD_FUNC(p4_set_progress), 1);
1337
1410
 
1411
+ // SSO handling
1412
+ rb_define_method( cP4, "loginsso", RUBY_METHOD_FUNC(p4_get_enabled_sso), 0);
1413
+ rb_define_method( cP4, "loginsso=", RUBY_METHOD_FUNC(p4_set_enable_sso), 1);
1414
+ rb_define_method( cP4, "ssovars", RUBY_METHOD_FUNC(p4_get_sso_vars), 0);
1415
+ rb_define_method( cP4, "ssopassresult", RUBY_METHOD_FUNC(p4_get_sso_passresult), 0);
1416
+ rb_define_method( cP4, "ssopassresult=", RUBY_METHOD_FUNC(p4_set_sso_passresult), 1);
1417
+ rb_define_method( cP4, "ssofailresult", RUBY_METHOD_FUNC(p4_get_sso_failresult), 0);
1418
+ rb_define_method( cP4, "ssofailresult=", RUBY_METHOD_FUNC(p4_set_sso_failresult), 1);
1419
+
1420
+
1338
1421
  // P4::MergeData class
1339
1422
  cP4MD = rb_define_class_under( cP4, "MergeData", rb_cObject );
1340
1423
 
@@ -37,6 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
  #include <ruby.h>
38
38
  #include "undefdups.h"
39
39
  #include <p4/clientapi.h>
40
+ #include <p4/strtable.h>
40
41
  #include <p4/i18napi.h>
41
42
  #include <p4/enviro.h>
42
43
  #include <p4/hostenv.h>
@@ -142,6 +143,21 @@ P4ClientApi::GetEnviroFile()
142
143
  return enviro->GetEnviroFile();
143
144
  }
144
145
 
146
+ void
147
+ P4ClientApi::SetEVar( const char *var, const char *val )
148
+ {
149
+ StrRef sVar( var );
150
+ StrRef sVal( val );
151
+ client.SetEVar( sVar, sVal );
152
+ }
153
+
154
+ const StrPtr *
155
+ P4ClientApi::GetEVar( const char *var )
156
+ {
157
+ StrRef sVar( var );
158
+ return client.GetEVar( sVar );
159
+ }
160
+
145
161
  void
146
162
  P4ClientApi::SetApiLevel( int level )
147
163
  {
@@ -760,3 +776,49 @@ P4ClientApi::Except( const char *func, Error *e )
760
776
  e->Fmt( &m );
761
777
  Except( func, m.Text() );
762
778
  }
779
+
780
+ //
781
+ // SSO Handlers
782
+ //
783
+
784
+ VALUE
785
+ P4ClientApi::SetEnableSSO( VALUE e )
786
+ {
787
+ return ui.EnableSSO( e );
788
+ }
789
+
790
+ VALUE
791
+ P4ClientApi::GetEnableSSO()
792
+ {
793
+ return ui.SSOEnabled();
794
+ }
795
+
796
+ VALUE
797
+ P4ClientApi::GetSSOVars()
798
+ {
799
+ return ui.GetSSOVars();
800
+ }
801
+
802
+ VALUE
803
+ P4ClientApi::SetSSOPassResult( VALUE r )
804
+ {
805
+ return ui.SetSSOPassResult( r );
806
+ }
807
+
808
+ VALUE
809
+ P4ClientApi::GetSSOPassResult()
810
+ {
811
+ return ui.GetSSOPassResult();
812
+ }
813
+
814
+ VALUE
815
+ P4ClientApi::SetSSOFailResult( VALUE r )
816
+ {
817
+ return ui.SetSSOFailResult( r );
818
+ }
819
+
820
+ VALUE
821
+ P4ClientApi::GetSSOFailResult()
822
+ {
823
+ return ui.GetSSOFailResult();
824
+ }
data/ext/P4/p4clientapi.h CHANGED
@@ -73,6 +73,7 @@ public:
73
73
  void SetClient( const char *c ) { client.SetClient( c ); }
74
74
  void SetCwd( const char *c );
75
75
  void SetEnviroFile( const char *c );
76
+ void SetEVar( const char *var, const char *val );
76
77
  void SetHost( const char *h ) { client.SetHost( h ); }
77
78
  void SetIgnoreFile( const char *f ) { client.SetIgnoreFile( f ); }
78
79
  void SetMaxResults( int v ) { maxResults = v; }
@@ -96,6 +97,7 @@ public:
96
97
  const StrPtr &GetCwd() { return client.GetCwd(); }
97
98
  const char * GetEnv( const char *v);
98
99
  const StrPtr *GetEnviroFile();
100
+ const StrPtr *GetEVar(const char *v);
99
101
  const StrPtr &GetHost() { return client.GetHost(); }
100
102
  const StrPtr &GetIgnoreFile() { return client.GetIgnoreFile();}
101
103
  const StrPtr &GetLanguage() { return client.GetLanguage(); }
@@ -169,6 +171,15 @@ public:
169
171
  VALUE SetProgress( VALUE progress );
170
172
  VALUE GetProgress() { return ui.GetProgress(); }
171
173
 
174
+ // SSO handler
175
+ VALUE SetEnableSSO( VALUE e );
176
+ VALUE GetEnableSSO();
177
+ VALUE GetSSOVars();
178
+ VALUE SetSSOPassResult( VALUE r );
179
+ VALUE GetSSOPassResult();
180
+ VALUE SetSSOFailResult( VALUE r );
181
+ VALUE GetSSOFailResult();
182
+
172
183
  // Ruby garbage collection
173
184
  void GCMark();
174
185
 
@@ -106,3 +106,32 @@ SpecDataRuby::SetLine( SpecElem *sd, int x, const StrPtr *v, Error *e )
106
106
  }
107
107
  return;
108
108
  }
109
+
110
+ void
111
+ SpecDataRuby::Comment ( SpecElem *sd, int x, const char **wv, int nl, Error *e )
112
+ {
113
+ VALUE key;
114
+ VALUE val;
115
+ VALUE ary;
116
+ StrBuf t;
117
+
118
+ key = P4Utils::ruby_string( sd->tag.Text(), sd->tag.Length() );
119
+ val = P4Utils::ruby_string( *wv );
120
+
121
+ if( sd->IsList() )
122
+ {
123
+
124
+ ary = rb_hash_aref( hash, key ); // rb_hash_aref - get the value for hash key
125
+ if( ary == Qnil )
126
+ {
127
+ ary = rb_ary_new();
128
+ rb_hash_aset( hash, key, ary ); // rb_hash_aset(hash, key, value) - set the hash key to value
129
+ }
130
+ rb_ary_store( ary, x, val );
131
+ }
132
+ else
133
+ {
134
+ rb_hash_aset( hash, key, val );
135
+ }
136
+ return;
137
+ }
data/ext/P4/p4specdata.h CHANGED
@@ -44,6 +44,8 @@ class SpecDataRuby : public SpecData
44
44
  virtual StrPtr *GetLine( SpecElem *sd, int x, const char **cmt );
45
45
  virtual void SetLine( SpecElem *sd, int x, const StrPtr *val,
46
46
  Error *e );
47
+ virtual void Comment( SpecElem *sd, int x, const char **wv,
48
+ int nl, Error *e );
47
49
 
48
50
  private:
49
51
  VALUE hash;
data/ext/P4/specmgr.cpp CHANGED
@@ -126,13 +126,13 @@ struct defaultspec {
126
126
  "MaxResults;code:402;type:word;len:12;;"
127
127
  "MaxScanRows;code:403;type:word;len:12;;"
128
128
  "MaxLockTime;code:407;type:word;len:12;;"
129
- "MaxOpenFiles;code:413;type:word;len:12;;"
129
+ "MaxOpenFiles;code:413;type:word;len:12;;"
130
130
  "Timeout;code:406;type:word;len:12;;"
131
131
  "PasswordTimeout;code:409;type:word;len:12;;"
132
132
  "LdapConfig;code:410;type:line;len:128;;"
133
133
  "LdapSearchQuery;code:411;type:line;len:128;;"
134
134
  "LdapUserAttribute;code:412;type:line;len:128;;"
135
- "LdapUserDNAttribute;code:414;type:line;len:128;;"
135
+ "LdapUserDNAttribute;code:414;type:line;len:128;;"
136
136
  "Subgroups;code:404;type:wlist;len:32;opt:default;;"
137
137
  "Owners;code:408;type:wlist;len:32;opt:default;;"
138
138
  "Users;code:405;type:wlist;len:32;opt:default;;"
@@ -200,12 +200,13 @@ struct defaultspec {
200
200
  "Clients;code:458;len:8;;"
201
201
  "Users;code:459;len:8;;"
202
202
  "Files;code:460;len:8;;"
203
- "Repos;code:462;len:8;;"
204
- },
203
+ "Repos;code:462;len:8;;"
204
+ "ExtraCapabilities;code:463;type:llist;len:512;;"
205
+ },
205
206
  {
206
207
  "protect",
207
- "SubPath;code:502;ro;len:64;;"
208
- "Update;code:503;type:date;ro;fmt:L;len:20;;"
208
+ "SubPath;code:502;ro;len:64;;"
209
+ "Update;code:503;type:date;ro;fmt:L;len:20;;"
209
210
  "Protections;code:501;fmt:C;type:wlist;words:5;opt:default;z;len:64;;"
210
211
  },
211
212
  {
@@ -226,36 +227,40 @@ struct defaultspec {
226
227
  },
227
228
  {
228
229
  "repo",
229
- "Repo;code:1001;rq;ro;len:128;;"
230
- "Owner;code:1002;len:32;;"
231
- "Created;code:1003;type:date;ro;fmt:L;len:20;;"
232
- "Pushed;code:1004;type:date;ro;fmt:L;len:20;;"
233
- "ForkedFrom;code:1005;ro;len:128;;"
234
- "Description;code:1006;type:text;len:128;;"
235
- "DefaultBranch;code:1007;len:32;;"
236
- "MirroredFrom;code:1008;len:32;;"
237
- "Options;code:1009;type:select;len:10;val:lfs/nolfs;;"
238
- "GconnMirrorServerId;code:1010;len:32;;"
230
+ "Repo;code:1001;rq;ro;fmt:L;len:128;;"
231
+ "Owner;code:1002;fmt:R;len:32;;"
232
+ "Created;code:1003;type:date;ro;fmt:L;len:20;;"
233
+ "Pushed;code:1004;type:date;ro;fmt:R;len:20;;"
234
+ "ForkedFrom;code:1005;ro;fmt:L;len:128;;"
235
+ "Description;code:1006;type:text;len:128;;"
236
+ "DefaultBranch;code:1007;fmt:L;len:32;;"
237
+ "MirroredFrom;code:1008;fmt:R;len:32;;"
238
+ "Options;code:1009;type:select;len:10;val:lfs/nolfs;;"
239
+ "GconnMirrorServerId;code:1010;fmt:L;len:32;;"
240
+ "GconnMirrorSecretToken;code:NNN;len:36;;"
241
+ "GconnMirrorStatus;code:NNN;len:8;;"
242
+ "GconnMirrorExcludedBranches;code:NNN;len:256;;"
243
+ "GconnMirrorHideFetchUrl;code:NNN;len:5;;"
239
244
  },
240
245
  {
241
246
  "server",
242
247
  "ServerID;code:751;rq;ro;len:32;;"
243
- "Type;code:752;rq;len:32;;"
244
- "Name;code:753;type:line;len:32;;"
245
- "Address;code:754;type:line;len:32;;"
246
- "ExternalAddress;code:755;type:line;len:32;;"
247
- "Services;code:756;rq;len:128;;"
248
- "Options;code:764;type:line;len:32;val:"
249
- "nomandatory/mandatory;;"
250
- "ReplicatingFrom;code:765;type:line;len:32;;"
251
- "Description;code:757;type:text;len:128;;"
252
- "User;code:761;type:line;len:64;;"
253
- "AllowedAddresses;code:763;type:wlist;len:64;;"
254
- "UpdateCachedRepos;code:766;type:wlist;len:64;;"
255
- "ClientDataFilter;code:758;type:wlist;len:64;;"
256
- "RevisionDataFilter;code:759;type:wlist;len:64;;"
257
- "ArchiveDataFilter;code:760;type:wlist;len:64;;"
258
- "DistributedConfig;code:762;type:text;len:128;;"
248
+ "Type;code:752;rq;len:32;;"
249
+ "Name;code:753;type:line;len:32;;"
250
+ "Address;code:754;type:line;len:32;;"
251
+ "ExternalAddress;code:755;type:line;len:32;;"
252
+ "Services;code:756;rq;len:128;;"
253
+ "Options;code:764;type:line;len:32;val:"
254
+ "nomandatory/mandatory;;"
255
+ "ReplicatingFrom;code:765;type:line;len:32;;"
256
+ "Description;code:757;type:text;len:128;;"
257
+ "User;code:761;type:line;len:64;;"
258
+ "AllowedAddresses;code:763;type:wlist;len:64;;"
259
+ "UpdateCachedRepos;code:766;type:wlist;len:64;;"
260
+ "ClientDataFilter;code:758;type:wlist;len:64;;"
261
+ "RevisionDataFilter;code:759;type:wlist;len:64;;"
262
+ "ArchiveDataFilter;code:760;type:wlist;len:64;;"
263
+ "DistributedConfig;code:762;type:text;len:128;;"
259
264
  },
260
265
  {
261
266
  "spec",
@@ -265,6 +270,7 @@ struct defaultspec {
265
270
  "Values;code:354;type:wlist;words:2;;"
266
271
  "Presets;code:355;type:wlist;words:2;;"
267
272
  "Openable;code:362;type:wlist;words:2;;"
273
+ "Maxwords;code:361;type:wlist;words:2;;"
268
274
  "Comments;code:356;type:text;;"
269
275
  },
270
276
  {
@@ -281,9 +287,11 @@ struct defaultspec {
281
287
  "allsubmit/ownersubmit,unlocked/locked,"
282
288
  "toparent/notoparent,fromparent/nofromparent,"
283
289
  "mergedown/mergeany;open:isolate;;"
284
- "Paths;code:710;rq;type:wlist;words:2;maxwords:3;len:64;open:propagate;;"
285
- "Remapped;code:711;type:wlist;words:2;len:64;open:propagate;;"
286
- "Ignored;code:712;type:wlist;words:1;len:64;open:propagate;;"
290
+ "ParentView;code:NNN;rq;open:isolate;"
291
+ "pre:inherit;val:noinherit/inherit;;"
292
+ "Paths;code:710;rq;type:wlist;words:2;maxwords:3;len:64;open:propagate;fmt:C;;"
293
+ "Remapped;code:711;type:wlist;words:2;len:64;open:propagate;fmt:C;;"
294
+ "Ignored;code:712;type:wlist;words:1;len:64;open:propagate;fmt:C;;"
287
295
  "View;code:713;type:wlist;words:2;len:64;;"
288
296
  "ChangeView;code:714;type:llist;ro;len:64;;"
289
297
  },
data/lib/P4/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class P4
2
- Version = VERSION = '2020.1.2056123'
2
+ Version = VERSION = '2021.1.2156749'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: p4ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2020.1.2056123
4
+ version: 2021.1.2156749
5
5
  platform: ruby
6
6
  authors:
7
7
  - Perforce Software, Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-16 00:00:00.000000000 Z
11
+ date: 2021-07-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby extensions to the C++ Perforce API.
14
14
  email: support@perforce.com
@@ -51,7 +51,7 @@ licenses:
51
51
  - MIT
52
52
  metadata:
53
53
  documentation_uri: https://www.perforce.com/manuals/p4ruby/Content/P4Ruby/Home-p4ruby.html
54
- post_install_message:
54
+ post_install_message:
55
55
  rdoc_options: []
56
56
  require_paths:
57
57
  - lib
@@ -66,8 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  requirements: []
69
- rubygems_version: 3.1.2
70
- signing_key:
69
+ rubygems_version: 3.2.15
70
+ signing_key:
71
71
  specification_version: 4
72
72
  summary: Ruby extensions to the C++ Perforce API
73
73
  test_files: []