1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
/*
* cvfs.c -- ckkv() function for lsof library
*/
/*
* Copyright 1998 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
* Written by Victor A. Abell
*
* This software is not subject to any license of the American Telephone
* and Telegraph Company or the Regents of the University of California.
*
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
*
* 1. Neither the authors nor Purdue University are responsible for any
* consequences of the use of this software.
*
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Credit to the authors and Purdue
* University must appear in documentation and sources.
*
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 4. This notice may not be removed or altered.
*/
#include "common.h"
#include "machine.h"
#if defined(USE_LIB_CKKV)
# include <sys/utsname.h>
/*
* ckkv() - check kernel version
*/
void ckkv(struct lsof_context *ctx, /* context */
char *d, /* dialect */
char *er, /* expected revision; NULL, no test */
char *ev, /* expected version; NULL, no test */
char *ea) /* expected architecture; NULL, no test */
{
# if defined(HASKERNIDCK)
struct utsname u;
if (Fwarn)
return;
/*
* Read the system information via uname(2).
*/
if (uname(&u) < 0) {
(void)fprintf(stderr, "%s: uname error: %s\n", Pn, strerror(errno));
Error(ctx);
}
if (er && strcmp(er, u.release)) {
(void)fprintf(stderr,
"%s: WARNING: compiled for %s release %s; this is %s.\n",
Pn, d, er, u.release);
}
if (ev && strcmp(ev, u.version)) {
(void)fprintf(stderr,
"%s: WARNING: compiled for %s version %s; this is %s.\n",
Pn, d, ev, u.version);
}
if (ea && strcmp(ea, u.machine)) {
(void)fprintf(
stderr,
"%s: WARNING: compiled for %s architecture %s; this is %s.\n", Pn,
d, ea, u.machine);
}
# endif /* defined(HASKERNIDCK) */
}
#else /* !defined(USE_LIB_CKKV) */
char ckkv_d1[] = "d";
char *ckkv_d2 = ckkv_d1;
#endif /* defined(USE_LIB_CKKV) */
|