|
|
| version 1.3, 2003/11/12 20:21:30 | version 1.4, 2004/04/11 21:28:03 |
|---|---|
| Line 62 | Line 62 |
| #include <stdio.h> | #include <stdio.h> |
| #include <stdlib.h> | #include <stdlib.h> |
| #include <string.h> | #include <string.h> |
| #include <stdarg.h> | |
| #include <unistd.h> | #include <unistd.h> |
| #include "kvm_private.h" | #include "kvm_private.h" |
| Line 70 | Line 71 |
| int __fdnlist (int, struct nlist *); | int __fdnlist (int, struct nlist *); |
| char * | char * |
| kvm_geterr(kd) | kvm_geterr(kvm_t *kd) |
| kvm_t *kd; | |
| { | { |
| return (kd->errbuf); | return (kd->errbuf); |
| } | } |
| #if __STDC__ | |
| #include <stdarg.h> | |
| #else | |
| #include <varargs.h> | |
| #endif | |
| /* | /* |
| * Report an error using printf style arguments. "program" is kd->program | * Report an error using printf style arguments. "program" is kd->program |
| * on hard errors, and 0 on soft errors, so that under sun error emulation, | * on hard errors, and 0 on soft errors, so that under sun error emulation, |
| Line 89 kvm_geterr(kd) | Line 83 kvm_geterr(kd) |
| * generate tons of error messages when trying to access bogus pointers). | * generate tons of error messages when trying to access bogus pointers). |
| */ | */ |
| void | void |
| #if __STDC__ | |
| _kvm_err(kvm_t *kd, const char *program, const char *fmt, ...) | _kvm_err(kvm_t *kd, const char *program, const char *fmt, ...) |
| #else | |
| _kvm_err(kd, program, fmt, va_alist) | |
| kvm_t *kd; | |
| char *program, *fmt; | |
| va_dcl | |
| #endif | |
| { | { |
| va_list ap; | va_list ap; |
| #ifdef __STDC__ | |
| va_start(ap, fmt); | va_start(ap, fmt); |
| #else | |
| va_start(ap); | |
| #endif | |
| if (program != NULL) { | if (program != NULL) { |
| (void)fprintf(stderr, "%s: ", program); | (void)fprintf(stderr, "%s: ", program); |
| (void)vfprintf(stderr, fmt, ap); | (void)vfprintf(stderr, fmt, ap); |
| Line 117 _kvm_err(kd, program, fmt, va_alist) | Line 100 _kvm_err(kd, program, fmt, va_alist) |
| } | } |
| void | void |
| #if __STDC__ | |
| _kvm_syserr(kvm_t *kd, const char *program, const char *fmt, ...) | _kvm_syserr(kvm_t *kd, const char *program, const char *fmt, ...) |
| #else | |
| _kvm_syserr(kd, program, fmt, va_alist) | |
| kvm_t *kd; | |
| char *program, *fmt; | |
| va_dcl | |
| #endif | |
| { | { |
| va_list ap; | va_list ap; |
| register int n; | int n; |
| #if __STDC__ | |
| va_start(ap, fmt); | va_start(ap, fmt); |
| #else | |
| va_start(ap); | |
| #endif | |
| if (program != NULL) { | if (program != NULL) { |
| (void)fprintf(stderr, "%s: ", program); | (void)fprintf(stderr, "%s: ", program); |
| (void)vfprintf(stderr, fmt, ap); | (void)vfprintf(stderr, fmt, ap); |
| Line 150 _kvm_syserr(kd, program, fmt, va_alist) | Line 122 _kvm_syserr(kd, program, fmt, va_alist) |
| } | } |
| void * | void * |
| _kvm_malloc(kd, n) | _kvm_malloc(kvm_t *kd, size_t n) |
| register kvm_t *kd; | |
| register size_t n; | |
| { | { |
| void *p; | void *p; |
| Line 163 _kvm_malloc(kd, n) | Line 133 _kvm_malloc(kd, n) |
| } | } |
| static kvm_t * | static kvm_t * |
| _kvm_open(kd, uf, mf, flag, errout) | _kvm_open(kvm_t *kd, const char *uf, const char *mf, int flag, char *errout) |
| register kvm_t *kd; | |
| const char *uf; | |
| const char *mf; | |
| int flag; | |
| char *errout; | |
| { | { |
| struct stat st; | struct stat st; |
| Line 257 failed: | Line 222 failed: |
| } | } |
| kvm_t * | kvm_t * |
| kvm_openfiles(uf, mf, sf, flag, errout) | kvm_openfiles(const char *uf, const char *mf, const char *sf, int flag, |
| const char *uf; | char *errout) |
| const char *mf; | |
| const char *sf; | |
| int flag; | |
| char *errout; | |
| { | { |
| register kvm_t *kd; | kvm_t *kd; |
| if ((kd = malloc(sizeof(*kd))) == NULL) { | if ((kd = malloc(sizeof(*kd))) == NULL) { |
| (void)strlcpy(errout, strerror(errno), _POSIX2_LINE_MAX); | (void)strlcpy(errout, strerror(errno), _POSIX2_LINE_MAX); |
| Line 276 kvm_openfiles(uf, mf, sf, flag, errout) | Line 237 kvm_openfiles(uf, mf, sf, flag, errout) |
| } | } |
| kvm_t * | kvm_t * |
| kvm_open(uf, mf, sf, flag, errstr) | kvm_open(const char *uf, const char *mf, const char *sf, int flag, |
| const char *uf; | const char *errstr) |
| const char *mf; | |
| const char *sf; | |
| int flag; | |
| const char *errstr; | |
| { | { |
| register kvm_t *kd; | kvm_t *kd; |
| if ((kd = malloc(sizeof(*kd))) == NULL) { | if ((kd = malloc(sizeof(*kd))) == NULL) { |
| if (errstr != NULL) | if (errstr != NULL) |
| Line 297 kvm_open(uf, mf, sf, flag, errstr) | Line 254 kvm_open(uf, mf, sf, flag, errstr) |
| } | } |
| int | int |
| kvm_close(kd) | kvm_close(kvm_t *kd) |
| kvm_t *kd; | |
| { | { |
| register int error = 0; | int error = 0; |
| if (kd->pmfd >= 0) | if (kd->pmfd >= 0) |
| error |= close(kd->pmfd); | error |= close(kd->pmfd); |
| Line 320 kvm_close(kd) | Line 276 kvm_close(kd) |
| } | } |
| int | int |
| kvm_nlist(kd, nl) | kvm_nlist(kvm_t *kd, struct nlist *nl) |
| kvm_t *kd; | |
| struct nlist *nl; | |
| { | { |
| register struct nlist *p; | struct nlist *p; |
| register int nvalid; | int nvalid; |
| struct kld_sym_lookup lookup; | struct kld_sym_lookup lookup; |
| /* | /* |
| Line 365 kvm_nlist(kd, nl) | Line 319 kvm_nlist(kd, nl) |
| } | } |
| ssize_t | ssize_t |
| kvm_read(kd, kva, buf, len) | kvm_read(kvm_t *kd, u_long kva, void *buf, size_t len) |
| kvm_t *kd; | |
| register u_long kva; | |
| register void *buf; | |
| register size_t len; | |
| { | { |
| register int cc; | int cc; |
| register void *cp; | void *cp; |
| if (ISALIVE(kd)) { | if (ISALIVE(kd)) { |
| /* | /* |
| Line 429 kvm_read(kd, kva, buf, len) | Line 379 kvm_read(kd, kva, buf, len) |
| } | } |
| ssize_t | ssize_t |
| kvm_write(kd, kva, buf, len) | kvm_write(kvm_t *kd, u_long kva, const void *buf, size_t len) |
| kvm_t *kd; | |
| register u_long kva; | |
| register const void *buf; | |
| register size_t len; | |
| { | { |
| register int cc; | int cc; |
| if (ISALIVE(kd)) { | if (ISALIVE(kd)) { |
| /* | /* |