p4ruby 2020.1.2056123 → 2021.1.2156749
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +451 -20
- data/ext/P4/clientprogressruby.cpp +0 -1
- data/ext/P4/clientuserruby.cpp +155 -0
- data/ext/P4/clientuserruby.h +44 -0
- data/ext/P4/extconf.rb +7 -1
- data/ext/P4/p4.cpp +84 -1
- data/ext/P4/p4clientapi.cpp +62 -0
- data/ext/P4/p4clientapi.h +11 -0
- data/ext/P4/p4specdata.cpp +29 -0
- data/ext/P4/p4specdata.h +2 -0
- data/ext/P4/specmgr.cpp +43 -35
- data/lib/P4/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caea2db119dc72c9cbcdbb6d3218e0a548f75eb47c7e6471c66db6dd7d5bdb36
|
4
|
+
data.tar.gz: 3eb17c7df1baa55c73b3c195de8fa0e31bd86a5dd688970d831f5f4e205e3bf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f43e94cc99bc92157512f438138610364959eeb8ccb57f313027f01e8767b699b03615ed01dac042315a6b4a5a7775c7e5cd09469733d9a73d7bbc1808624c9
|
7
|
+
data.tar.gz: f492d5051540489a0f62bd07b5d994148e02181f969523c633e5857d62253e2c983d83b9c90e7bab83b44efe2ef33770dfa025086badd89c99fbff0137e3a58d
|
data/LICENSE.txt
CHANGED
@@ -1,24 +1,455 @@
|
|
1
|
-
Copyright (c)
|
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.
|
data/ext/P4/clientuserruby.cpp
CHANGED
@@ -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
|
+
}
|
data/ext/P4/clientuserruby.h
CHANGED
@@ -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 =
|
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
|
|
data/ext/P4/p4clientapi.cpp
CHANGED
@@ -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
|
|
data/ext/P4/p4specdata.cpp
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
204
|
-
|
203
|
+
"Repos;code:462;len:8;;"
|
204
|
+
"ExtraCapabilities;code:463;type:llist;len:512;;"
|
205
|
+
},
|
205
206
|
{
|
206
207
|
"protect",
|
207
|
-
|
208
|
-
|
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
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
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
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
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
|
-
"
|
285
|
-
"
|
286
|
-
"
|
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
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:
|
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:
|
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.
|
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: []
|