diff options
Diffstat (limited to 'contrib/ipfilter/kmem.c')
-rw-r--r-- | contrib/ipfilter/kmem.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/contrib/ipfilter/kmem.c b/contrib/ipfilter/kmem.c index 254bbf9..5cb0efd 100644 --- a/contrib/ipfilter/kmem.c +++ b/contrib/ipfilter/kmem.c @@ -46,7 +46,7 @@ #if !defined(lint) static const char sccsid[] = "@(#)kmem.c 1.4 1/12/96 (C) 1992 Darren Reed"; -static const char rcsid[] = "@(#)$Id: kmem.c,v 2.2.2.14 2002/04/17 17:44:44 darrenr Exp $"; +static const char rcsid[] = "@(#)$Id: kmem.c,v 2.2.2.15 2002/07/27 15:59:37 darrenr Exp $"; #endif #ifdef __sgi @@ -55,7 +55,7 @@ typedef int kvm_t; static int kvm_fd = -1; static char *kvm_errstr; -kvm_t kvm_open(kernel, core, swap, mode, errstr) +kvm_t *kvm_open(kernel, core, swap, mode, errstr) char *kernel, *core, *swap; int mode; char *errstr; @@ -65,17 +65,18 @@ char *errstr; if (core == NULL) core = "/dev/kmem"; kvm_fd = open(core, mode); - return (kvm_fd >= 0) ? (kvm_t)&kvm_fd : NULL; + return (kvm_fd >= 0) ? (kvm_t *)&kvm_fd : NULL; } int kvm_read(kvm, pos, buffer, size) -kvm_t kvm; +kvm_t *kvm; u_long pos; char *buffer; size_t size; { - int r, left; + size_t left; char *bufp; + int r; if (lseek(*kvm, pos, 0) == -1) { fprintf(stderr, "%s", kvm_errstr); @@ -97,13 +98,19 @@ static kvm_t *kvm_f = NULL; int openkmem(kern, core) char *kern, *core; { + union { + int ui; + kvm_t *uk; + } k; + kvm_f = kvm_open(kern, core, NULL, O_RDONLY, ""); if (kvm_f == NULL) { perror("openkmem:open"); return -1; } - return (int)kvm_f; + k.uk = kvm_f; + return k.ui; } int kmemcpy(buf, pos, n) @@ -120,7 +127,7 @@ register int n; if (openkmem(NULL, NULL) == -1) return -1; - while ((r = kvm_read(kvm_f, pos, buf, n)) < n) + while ((r = kvm_read(kvm_f, pos, buf, (size_t)n)) < n) if (r <= 0) { fprintf(stderr, "pos=0x%x ", (u_int)pos); @@ -152,7 +159,7 @@ register int n; while (n > 0) { - r = kvm_read(kvm_f, pos, buf, 1); + r = kvm_read(kvm_f, pos, buf, (size_t)1); if (r <= 0) { fprintf(stderr, "pos=0x%x ", (u_int)pos); |