View | Details | Raw Unified | Return to bug 227910
Collapse All | Expand All

(-)sysutils/p5-BSD-Sysctl/Makefile (-1 / +1 lines)
Lines 3-9 Link Here
3
3
4
PORTNAME=	BSD-Sysctl
4
PORTNAME=	BSD-Sysctl
5
PORTVERSION=	0.11
5
PORTVERSION=	0.11
6
PORTREVISION=	2
6
PORTREVISION=	3
7
CATEGORIES=	sysutils perl5
7
CATEGORIES=	sysutils perl5
8
MASTER_SITES=	CPAN
8
MASTER_SITES=	CPAN
9
PKGNAMEPREFIX=	p5-
9
PKGNAMEPREFIX=	p5-
(-)sysutils/p5-BSD-Sysctl/files/patch-Makefile.PL (+8 lines)
Line 0 Link Here
1
--- Makefile.PL.orig	2009-09-25 13:50:50.000000000 -0600
2
+++ Makefile.PL	2018-03-08 13:01:25.754377000 -0700
3
@@ -119,3 +119,5 @@
4
 T,struct_cdev	25	auto
5
 Q	26	FMT_64
6
 QU	27	FMT_U64
7
+C	28	FMT_INT8
8
+CU	29	FMT_UINT8
(-)sysutils/p5-BSD-Sysctl/files/patch-Sysctl.pm (+22 lines)
Line 0 Link Here
1
--- Sysctl.pm.orig	2014-01-21 16:08:32.000000000 -0700
2
+++ Sysctl.pm	2018-03-08 12:06:28.456797000 -0700
3
@@ -42,6 +42,8 @@
4
 use constant FMT_STRUCT_CDEV => 25;
5
 use constant FMT_64          => 26;
6
 use constant FMT_U64         => 27;
7
+use constant FMT_UINT8       => 28;
8
+use constant FMT_INT8        => 29;
9
 
10
 push @EXPORT_OK, 'sysctl';
11
 sub sysctl {
12
@@ -105,7 +107,9 @@
13
 
14
 sub reset {
15
     my $self = shift;
16
-    delete $self->{_ctx};
17
+    delete $self->{_next};
18
+    delete $self->{_name};
19
+    delete $self->{_len0};
20
     return $self;
21
 }
22
 
(-)sysutils/p5-BSD-Sysctl/files/patch-Sysctl.xs (-6 / +177 lines)
Lines 1-5 Link Here
1
--- Sysctl.xs.orig	2014-01-21 23:02:47 UTC
1
--- Sysctl.xs.orig	2014-01-21 16:02:47.000000000 -0700
2
+++ Sysctl.xs
2
+++ Sysctl.xs	2018-03-09 10:15:13.911891000 -0700
3
@@ -14,6 +14,7 @@
3
@@ -14,6 +14,7 @@
4
 
4
 
5
 #include <stdio.h>
5
 #include <stdio.h>
Lines 8-17 Link Here
8
 #include <sys/sysctl.h>
8
 #include <sys/sysctl.h>
9
 
9
 
10
 #include <sys/time.h>       /* struct clockinfo */
10
 #include <sys/time.h>       /* struct clockinfo */
11
@@ -48,78 +49,114 @@
11
@@ -48,78 +49,129 @@
12
 #include <netinet6/raw_ip6.h>
12
 #include <netinet6/raw_ip6.h>
13
 #include "bsd-sysctl.h"
13
 #include "bsd-sysctl.h"
14
 
14
 
15
+#define DECODE(T)	 					\
16
+            if (buflen == sizeof(T)) {				\
17
+                RETVAL = newSViv(*(T *)buf);			\
18
+            }							\
19
+            else {						\
20
+                AV *c = (AV *)sv_2mortal((SV *)newAV());	\
21
+                char *bptr = buf;				\
22
+                while (buflen >= sizeof(T)) {			\
23
+                    av_push(c, newSViv(*(T *)bptr));		\
24
+                    buflen -= sizeof(T);			\
25
+                    bptr   += sizeof(T);			\
26
+                }						\
27
+                RETVAL = newRV((SV *)c);			\
28
+            }
29
+
15
+void
30
+void
16
+_iterator_first(HV *self)
31
+_iterator_first(HV *self)
17
+{
32
+{
Lines 188-194 Link Here
188
 MODULE = BSD::Sysctl   PACKAGE = BSD::Sysctl
203
 MODULE = BSD::Sysctl   PACKAGE = BSD::Sysctl
189
 
204
 
190
 PROTOTYPES: ENABLE
205
 PROTOTYPES: ENABLE
191
@@ -127,67 +164,18 @@ PROTOTYPES: ENABLE
206
@@ -127,67 +179,18 @@
192
 SV *
207
 SV *
193
 next (SV *refself)
208
 next (SV *refself)
194
     INIT:
209
     INIT:
Lines 263-269 Link Here
263
     OUTPUT:
278
     OUTPUT:
264
         RETVAL
279
         RETVAL
265
 
280
 
266
@@ -878,6 +866,10 @@ _mib_set(const char *arg, const char *value)
281
@@ -235,6 +238,10 @@
282
         case 'A':
283
             fmt_type = FMT_A;
284
             break;
285
+	case 'C':
286
+	    ++f;
287
+            fmt_type = *f == 'U' ? FMT_UINT8 : FMT_INT8;
288
+            break;
289
         case 'I':
290
             ++f;
291
             fmt_type = *f == 'U' ? FMT_UINT : FMT_INT;
292
@@ -398,96 +405,31 @@
293
             SvCUR_set(sv_buf, buflen);
294
             RETVAL = sv_buf;
295
             break;
296
+
297
+        case FMT_INT8:
298
+	    DECODE(int8_t);
299
+	    break;
300
+        case FMT_UINT8:
301
+	    DECODE(uint8_t);
302
+	    break;
303
         case FMT_INT:
304
-            if (buflen == sizeof(int)) {
305
-                RETVAL = newSViv(*(int *)buf);
306
-            }
307
-            else {
308
-                AV *c = (AV *)sv_2mortal((SV *)newAV());
309
-                char *bptr = buf;
310
-                while (buflen >= sizeof(int)) {
311
-                    av_push(c, newSViv(*(int *)bptr));
312
-                    buflen -= sizeof(int);
313
-                    bptr   += sizeof(int);
314
-                }
315
-                RETVAL = newRV((SV *)c);
316
-            }
317
-            break;
318
+	    DECODE(int);
319
+	    break;
320
         case FMT_UINT:
321
-            if (buflen == sizeof(unsigned int)) {
322
-                RETVAL = newSViv(*(unsigned int *)buf);
323
-            }
324
-            else {
325
-                AV *c = (AV *)sv_2mortal((SV *)newAV());
326
-                char *bptr = buf;
327
-                while (buflen >= sizeof(unsigned int)) {
328
-                    av_push(c, newSViv(*(unsigned int *)bptr));
329
-                    buflen -= sizeof(unsigned int);
330
-                    bptr   += sizeof(unsigned int);
331
-                }
332
-                RETVAL = newRV((SV *)c);
333
-            }
334
-            break;
335
+	    DECODE(unsigned int);
336
+	    break;
337
         case FMT_LONG:
338
-            if (buflen == sizeof(long)) {
339
-                RETVAL = newSVuv(*(long *)buf);
340
-            }
341
-            else {
342
-                AV *c = (AV *)sv_2mortal((SV *)newAV());
343
-                char *bptr = buf;
344
-                while (buflen >= sizeof(long)) {
345
-                    av_push(c, newSVuv(*(long *)bptr));
346
-                    buflen -= sizeof(long);
347
-                    bptr   += sizeof(long);
348
-                }
349
-                RETVAL = newRV((SV *)c);
350
-            }
351
-            break;
352
+	    DECODE(long);
353
+	    break;
354
         case FMT_ULONG:
355
-            if (buflen == sizeof(unsigned long)) {
356
-                RETVAL = newSVuv(*(unsigned long *)buf);
357
-            }
358
-            else {
359
-                AV *c = (AV *)sv_2mortal((SV *)newAV());
360
-                char *bptr = buf;
361
-                while (buflen >= sizeof(unsigned long)) {
362
-                    av_push(c, newSVuv(*(unsigned long *)bptr));
363
-                    buflen -= sizeof(unsigned long);
364
-                    bptr   += sizeof(unsigned long);
365
-                }
366
-                RETVAL = newRV((SV *)c);
367
-            }
368
-            break;
369
+	    DECODE(unsigned long);
370
+	    break;
371
         case FMT_64:
372
-            if (buflen == sizeof(int64_t)) {
373
-                RETVAL = newSVuv(*(int64_t *)buf);
374
-            }
375
-            else {
376
-                AV *c = (AV *)sv_2mortal((SV *)newAV());
377
-                char *bptr = buf;
378
-                while (buflen >= sizeof(int64_t)) {
379
-                    av_push(c, newSVuv(*(int64_t *)bptr));
380
-                    buflen -= sizeof(int64_t);
381
-                    bptr   += sizeof(int64_t);
382
-                }
383
-                RETVAL = newRV((SV *)c);
384
-            }
385
-            break;
386
+	    DECODE(int64_t);
387
+	    break;
388
         case FMT_U64:
389
-            if (buflen == sizeof(uint64_t)) {
390
-                RETVAL = newSVuv(*(uint64_t *)buf);
391
-            }
392
-            else {
393
-                AV *c = (AV *)sv_2mortal((SV *)newAV());
394
-                char *bptr = buf;
395
-                while (buflen >= sizeof(uint64_t)) {
396
-                    av_push(c, newSVuv(*(uint64_t *)bptr));
397
-                    buflen -= sizeof(uint64_t);
398
-                    bptr   += sizeof(uint64_t);
399
-                }
400
-                RETVAL = newRV((SV *)c);
401
-            }
402
-            break;
403
+	    DECODE(uint64_t);
404
+	    break;
405
         case FMT_CLOCKINFO: {
406
             HV *c = (HV *)sv_2mortal((SV *)newHV());
407
             struct clockinfo *inf = (struct clockinfo *)buf;
408
@@ -878,6 +820,12 @@
267
         SV **oidp;
409
         SV **oidp;
268
         SV *oid;
410
         SV *oid;
269
         char *oid_data;
411
         char *oid_data;
Lines 271-280 Link Here
271
+        long long llval;
413
+        long long llval;
272
+        uint64_t uint64val;
414
+        uint64_t uint64val;
273
+        unsigned long long ullval;
415
+        unsigned long long ullval;
416
+        int8_t int8val;
417
+        uint8_t uint8val;
274
         int oid_fmt;
418
         int oid_fmt;
275
         int oid_len;
419
         int oid_len;
276
         int intval;
420
         int intval;
277
@@ -954,6 +946,42 @@ _mib_set(const char *arg, const char *value)
421
@@ -936,6 +884,26 @@
422
             newsize = sizeof(uintval);
423
             break;
424
 
425
+        case FMT_INT8:
426
+            int8val = (int8_t)strtol(value, &endconvptr, 0);
427
+            if (endconvptr == value || *endconvptr != '\0') {
428
+                warn("invalid integer: '%s'", value);
429
+                XSRETURN_UNDEF;
430
+            }
431
+            newval  = &int8val;
432
+            newsize = sizeof(int8val);
433
+            break;
434
+
435
+        case FMT_UINT8:
436
+            uint8val = (uint8_t)strtoul(value, &endconvptr, 0);
437
+            if (endconvptr == value || *endconvptr != '\0') {
438
+                warn("invalid unsigned integer: '%s'", value);
439
+                XSRETURN_UNDEF;
440
+            }
441
+            newval  = &uint8val;
442
+            newsize = sizeof(uint8val);
443
+            break;
444
+
445
         case FMT_LONG:
446
             longval = strtol(value, &endconvptr, 0);
447
             if (endconvptr == value || *endconvptr != '\0') {
448
@@ -954,6 +922,42 @@
278
             }
449
             }
279
             newval  = &ulongval;
450
             newval  = &ulongval;
280
             newsize = sizeof(ulongval);
451
             newsize = sizeof(ulongval);

Return to bug 227910