summaryrefslogtreecommitdiffstats
path: root/contrib/ipfilter/kmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ipfilter/kmem.c')
-rw-r--r--contrib/ipfilter/kmem.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/contrib/ipfilter/kmem.c b/contrib/ipfilter/kmem.c
index eec8b3c..254bbf9 100644
--- a/contrib/ipfilter/kmem.c
+++ b/contrib/ipfilter/kmem.c
@@ -46,18 +46,13 @@
#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.12 2002/03/06 09:44:16 darrenr Exp $";
+static const char rcsid[] = "@(#)$Id: kmem.c,v 2.2.2.14 2002/04/17 17:44:44 darrenr Exp $";
#endif
-#ifndef __sgi
+#ifdef __sgi
+typedef int kvm_t;
-static kvm_t *kvm_f = NULL;
-
-#else
-
-typedef int kvm_t;
-
-static kvm_t kvm_f = -1;
+static int kvm_fd = -1;
static char *kvm_errstr;
kvm_t kvm_open(kernel, core, swap, mode, errstr)
@@ -65,12 +60,12 @@ char *kernel, *core, *swap;
int mode;
char *errstr;
{
- kvm_t fd;
-
kvm_errstr = errstr;
- fd = open(core, mode);
- return fd;
+ if (core == NULL)
+ core = "/dev/kmem";
+ kvm_fd = open(core, mode);
+ return (kvm_fd >= 0) ? (kvm_t)&kvm_fd : NULL;
}
int kvm_read(kvm, pos, buffer, size)
@@ -82,21 +77,22 @@ size_t size;
int r, left;
char *bufp;
- if (lseek(kvm, pos, 0) == -1) {
+ if (lseek(*kvm, pos, 0) == -1) {
fprintf(stderr, "%s", kvm_errstr);
perror("lseek");
return -1;
}
for (bufp = buffer, left = size; left > 0; bufp += r, left -= r) {
- r = read(kvm, bufp, 1);
+ r = read(*kvm, bufp, 1);
if (r <= 0)
return -1;
}
- return 0;
+ return size;
}
#endif
+static kvm_t *kvm_f = NULL;
int openkmem(kern, core)
char *kern, *core;
OpenPOWER on IntegriCloud