mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Aded kernelinfo(1) as a frontend of kernelinfo(2).
This commit is contained in:
parent
a7658d5b8c
commit
87248fbce9
2 changed files with 60 additions and 0 deletions
|
@ -19,6 +19,7 @@ help \
|
|||
uptime \
|
||||
memstat \
|
||||
uname \
|
||||
kernelinfo \
|
||||
idle \
|
||||
editor \
|
||||
kill \
|
||||
|
|
59
utils/kernelinfo.cpp
Normal file
59
utils/kernelinfo.cpp
Normal file
|
@ -0,0 +1,59 @@
|
|||
#include <sys/kernelinfo.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <error.h>
|
||||
|
||||
void usage(const char* argv0)
|
||||
{
|
||||
printf("usage: %s <REQUEST> ...\n", argv0);
|
||||
printf("Prints a kernel information string.\n");
|
||||
printf("example: %s name\n", argv0);
|
||||
printf("example: %s version\n", argv0);
|
||||
printf("example: %s builddate\n", argv0);
|
||||
printf("example: %s buildtime\n", argv0);
|
||||
}
|
||||
|
||||
void help(const char* argv0)
|
||||
{
|
||||
usage(argv0);
|
||||
}
|
||||
|
||||
void version(const char* argv0)
|
||||
{
|
||||
usage(argv0);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
const char* argv0 = argv[0];
|
||||
if ( argc < 2 ) { usage(argv0); return 0; }
|
||||
for ( int i = 1; i < argc; i++ )
|
||||
{
|
||||
if ( argv[i][0] != '-' ) { continue; }
|
||||
if ( strcmp(argv[i], "--usage") == 0 ) { usage(argv0); return 0; }
|
||||
if ( strcmp(argv[i], "--help") == 0 ) { help(argv0); return 0; }
|
||||
if ( strcmp(argv[i], "--version") == 0 ) { version(argv0); return 0; }
|
||||
fprintf(stderr, "%s: unknown option: %s\n", argv0, argv[i]);
|
||||
return 1;
|
||||
}
|
||||
size_t bufsize = 32;
|
||||
char* buf = (char*) malloc(bufsize);
|
||||
if ( !buf ) { perror("malloc"); return 1; }
|
||||
for ( int i = 1; i < argc; i++ )
|
||||
{
|
||||
retry:
|
||||
ssize_t ret = kernelinfo(argv[i], buf, bufsize);
|
||||
if ( ret < 0 ) { error(1, errno, "kernelinfo(\"%s\")", argv[i]); }
|
||||
if ( ret )
|
||||
{
|
||||
buf = (char*) realloc(buf, ret);
|
||||
if ( !buf ) { perror("realloc"); return 1; }
|
||||
bufsize = ret;
|
||||
goto retry;
|
||||
}
|
||||
printf("%s\n", buf);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue