Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F143190413
D54196.id167932.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
D54196.id167932.diff
View Options
diff --git a/usr.sbin/devinfo/Makefile b/usr.sbin/devinfo/Makefile
--- a/usr.sbin/devinfo/Makefile
+++ b/usr.sbin/devinfo/Makefile
@@ -2,6 +2,6 @@
PROG= devinfo
MAN= devinfo.8
-LIBADD= xo devinfo
+LIBADD= devinfo
.include <bsd.prog.mk>
diff --git a/usr.sbin/devinfo/devinfo.8 b/usr.sbin/devinfo/devinfo.8
--- a/usr.sbin/devinfo/devinfo.8
+++ b/usr.sbin/devinfo/devinfo.8
@@ -34,13 +34,10 @@
.Nd print information about system device configuration
.Sh SYNOPSIS
.Nm
-.Op Fl -libxo
.Op Fl rv
.Nm
-.Op Fl -libxo
.Fl p Ar dev Op Fl v
.Nm
-.Op Fl -libxo
.Fl u Op Fl v
.Sh DESCRIPTION
The
@@ -51,14 +48,7 @@
device.
.Pp
The following options are accepted:
-.Bl -tag -width "--libxo"
-.It Fl -libxo
-Generate output via
-.Xr libxo 3
-in a selection of different human and machine readable formats.
-See
-.Xr xo_options 7
-for details on command line arguments.
+.Bl -tag -width indent
.It Fl p Ar dev
Display the path of
.Ar dev
@@ -83,8 +73,6 @@
.Sh SEE ALSO
.Xr systat 1 ,
.Xr devinfo 3 ,
-.Xr libxo 3 ,
-.Xr xo_options 7 ,
.Xr devctl 8 ,
.Xr iostat 8 ,
.Xr pciconf 8 ,
diff --git a/usr.sbin/devinfo/devinfo.c b/usr.sbin/devinfo/devinfo.c
--- a/usr.sbin/devinfo/devinfo.c
+++ b/usr.sbin/devinfo/devinfo.c
@@ -4,7 +4,6 @@
* Copyright (c) 2000, 2001 Michael Smith
* Copyright (c) 2000 BSDi
* All rights reserved.
- * Copyright (c) 2024 KT Ullavik
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -41,18 +40,12 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-
-#include <libxo/xo.h>
#include "devinfo.h"
static bool rflag;
static bool vflag;
-static int open_tag_count;
-static char *last_res;
static void print_indent(int);
-static void print_kvlist(char *);
-static char* xml_safe_string(char *);
static void print_resource(struct devinfo_res *);
static int print_device_matching_resource(struct devinfo_res *, void *);
static int print_device_rman_resources(struct devinfo_rman *, void *);
@@ -81,46 +74,7 @@
n = MIN((size_t)n, sizeof(buffer) - 1);
memset(buffer, ' ', n);
buffer[n] = '\0';
- xo_emit("{Pa:%s}", buffer);
-}
-
-/*
- * Takes a list of key-value pairs in the form
- * "key1=val1 key2=val2 ..." and prints them according
- * to xo formatting.
- */
-static void
-print_kvlist(char *s)
-{
- char *kv;
- char *copy;
-
- if ((copy = strdup(s)) == NULL)
- xo_err(1, "No memory!");
-
- while ((kv = strsep(©, " ")) != NULL) {
- char* k = strsep(&kv, "=");
- xo_emit("{ea:%s/%s} {d:key/%s}={d:value/%s}", k, kv, k, kv);
- }
- free(copy);
-}
-
-static char
-*xml_safe_string(char *desc)
-{
- int i;
- char *s;
-
- if ((s = strdup(desc)) == NULL) {
- xo_err(1, "No memory!");
- }
-
- for (i=0; s[i] != '\0'; i++) {
- if (s[i] == ' ' || s[i] == '/') {
- s[i] = '-';
- }
- }
- return s;
+ printf("%s", buffer);
}
/*
@@ -132,28 +86,20 @@
struct devinfo_rman *rman;
bool hexmode;
rman_res_t end;
- char *safe_desc;
rman = devinfo_handle_to_rman(res->dr_rman);
hexmode = (rman->dm_size > 1000) || (rman->dm_size == 0);
end = res->dr_start + res->dr_size - 1;
- safe_desc = xml_safe_string(rman->dm_desc);
- xo_open_instance(safe_desc);
-
if (hexmode) {
- xo_emit("{:start/0x%jx}", res->dr_start);
+ printf("0x%jx", res->dr_start);
if (res->dr_size > 1)
- xo_emit("{D:-}{d:end/0x%jx}", end);
- xo_emit("{e:end/0x%jx}", end);
+ printf("-0x%jx", end);
} else {
- xo_emit("{:start/%ju}", res->dr_start);
+ printf("%ju", res->dr_start);
if (res->dr_size > 1)
- xo_emit("{D:-}{d:end/%ju}", end);
- xo_emit("{e:end/%ju}", end);
+ printf("-%ju", end);
}
- xo_close_instance(safe_desc);
- free(safe_desc);
}
/*
@@ -175,7 +121,7 @@
return(1);
print_indent(ia->indent);
print_resource(res);
- xo_emit("\n");
+ printf("\n");
}
return(0);
}
@@ -188,7 +134,6 @@
{
struct indent_arg *ia = (struct indent_arg *)arg;
int indent;
- char *safe_desc;
indent = ia->indent;
@@ -198,18 +143,13 @@
print_device_matching_resource, ia) != 0) {
/* there are, print header */
- safe_desc = xml_safe_string(rman->dm_desc);
print_indent(indent);
- xo_emit("<{:description/%s}>\n", rman->dm_desc);
- xo_open_list(safe_desc);
+ printf("%s:\n", rman->dm_desc);
/* print resources */
ia->indent = indent + 4;
devinfo_foreach_rman_resource(rman,
print_device_matching_resource, ia);
-
- xo_close_list(safe_desc);
- free(safe_desc);
}
ia->indent = indent;
return(0);
@@ -220,39 +160,20 @@
{
if (vflag) {
if (*dev->dd_desc) {
- xo_emit("<{:description/%s}>", dev->dd_desc);
+ printf(" <%s>", dev->dd_desc);
}
if (*dev->dd_pnpinfo) {
- xo_open_container("pnpinfo");
- xo_emit("{D: pnpinfo}");
-
- if ((strcmp(dev->dd_pnpinfo, "unknown") == 0))
- xo_emit("{D: unknown}");
- else
- print_kvlist(dev->dd_pnpinfo);
-
- xo_close_container("pnpinfo");
+ printf(" pnpinfo %s", dev->dd_pnpinfo);
}
if (*dev->dd_location) {
- xo_open_container("location");
- xo_emit("{D: at}");
- print_kvlist(dev->dd_location);
- xo_close_container("location");
+ printf(" at %s", dev->dd_location);
}
-
- // If verbose, then always print state for json/xml.
- if (!(dev->dd_flags & DF_ENABLED))
- xo_emit("{e:state/disabled}");
- else if (dev->dd_flags & DF_SUSPENDED)
- xo_emit("{e:state/suspended}");
- else
- xo_emit("{e:state/enabled}");
}
if (!(dev->dd_flags & DF_ENABLED))
- xo_emit("{D: (disabled)}");
+ printf(" (disabled)");
else if (dev->dd_flags & DF_SUSPENDED)
- xo_emit("{D: (suspended)}");
+ printf(" (suspended)");
}
/*
@@ -262,20 +183,16 @@
print_device(struct devinfo_dev *dev, void *arg)
{
struct indent_arg ia;
- int indent, ret;
- const char* devname = dev->dd_name[0] ? dev->dd_name : "unknown";
+ int indent;
bool printit = vflag || (dev->dd_name[0] != 0 &&
dev->dd_state >= DS_ATTACHED);
if (printit) {
indent = (int)(intptr_t)arg;
print_indent(indent);
-
- xo_open_container(devname);
- xo_emit("{d:devicename/%s}", devname);
-
+ printf("%s", dev->dd_name[0] ? dev->dd_name : "unknown");
print_device_props(dev);
- xo_emit("\n");
+ printf("\n");
if (rflag) {
ia.indent = indent + 4;
ia.arg = dev;
@@ -284,13 +201,8 @@
}
}
- ret = (devinfo_foreach_device_child(dev, print_device,
+ return(devinfo_foreach_device_child(dev, print_device,
(void *)((char *)arg + 2)));
-
- if (printit) {
- xo_close_container(devname);
- }
- return(ret);
}
/*
@@ -302,7 +214,6 @@
struct devinfo_dev *dev;
struct devinfo_rman *rman;
rman_res_t end;
- char *res_str, *entry = NULL;
bool hexmode;
dev = devinfo_handle_to_device(res->dr_device);
@@ -310,38 +221,24 @@
hexmode = (rman->dm_size > 1000) || (rman->dm_size == 0);
end = res->dr_start + res->dr_size - 1;
+ printf(" ");
+
if (hexmode) {
if (res->dr_size > 1)
- asprintf(&res_str, "0x%jx-0x%jx", res->dr_start, end);
+ printf("0x%jx-0x%jx", res->dr_start, end);
else
- asprintf(&res_str, "0x%jx", res->dr_start);
+ printf("0x%jx", res->dr_start);
} else {
if (res->dr_size > 1)
- asprintf(&res_str, "%ju-%ju", res->dr_start, end);
+ printf("%ju-%ju", res->dr_start, end);
else
- asprintf(&res_str, "%ju", res->dr_start);
- }
-
- xo_emit("{P: }");
-
- if (last_res == NULL) {
- // First resource
- xo_open_list(res_str);
- } else if (strcmp(res_str, last_res) != 0) {
- // We can't repeat json keys. So we keep an
- // open list from the last iteration and only
- // create a new list when see a new resource.
- xo_close_list(last_res);
- xo_open_list(res_str);
+ printf("%ju", res->dr_start);
}
dev = devinfo_handle_to_device(res->dr_device);
if (dev != NULL) {
if (dev->dd_name[0] != 0) {
printf(" (%s)", dev->dd_name);
- asprintf(&entry, "{el:%s}{D:%s} {D:(%s)}\n",
- res_str, res_str, dev->dd_name);
- xo_emit(entry, dev->dd_name);
} else {
printf(" (unknown)");
if (vflag && *dev->dd_pnpinfo)
@@ -350,11 +247,9 @@
printf(" at %s", dev->dd_location);
}
} else {
- asprintf(&entry, "{el:%s}{D:%s} {D:----}\n", res_str, res_str);
- xo_emit(entry, "----");
+ printf(" ----");
}
- free(entry);
- last_res = res_str;
+ printf("\n");
return(0);
}
@@ -364,16 +259,8 @@
int
print_rman(struct devinfo_rman *rman, void *arg __unused)
{
- char* safe_desc = xml_safe_string(rman->dm_desc);
-
- xo_emit("<{:description/%s}\n>", rman->dm_desc);
- xo_open_container(safe_desc);
-
+ printf("%s:\n", rman->dm_desc);
devinfo_foreach_rman_resource(rman, print_rman_resource, 0);
-
- xo_close_list(last_res);
- xo_close_container(safe_desc);
- free(safe_desc);
return(0);
}
@@ -382,17 +269,12 @@
{
const char *devname = dev->dd_name[0] ? dev->dd_name : "unknown";
- xo_open_container(devname);
- open_tag_count++;
- xo_emit("{:devicename/%s} ", devname);
+ printf("%s", devname);
print_device_props(dev);
if (vflag)
- xo_emit("\n");
+ printf("\n");
}
-/*
- * Recurse until we find the right dev. On the way up we print path.
- */
static int
print_device_path(struct devinfo_dev *dev, void *xname)
{
@@ -406,7 +288,7 @@
rv = devinfo_foreach_device_child(dev, print_device_path, xname);
if (rv == 1) {
- xo_emit("{P: }");
+ printf(" ");
print_device_path_entry(dev);
}
return (rv);
@@ -415,26 +297,19 @@
static void
print_path(struct devinfo_dev *root, char *path)
{
- open_tag_count = 0;
- if (devinfo_foreach_device_child(root, print_device_path,
- (void *)path) == 0)
- xo_errx(1, "%s: Not found", path);
+ if (devinfo_foreach_device_child(root, print_device_path, (void *)path) == 0)
+ errx(1, "%s: Not found", path);
if (!vflag)
- xo_emit("\n");
-
- while (open_tag_count > 0) {
- xo_close_container_d();
- open_tag_count--;
- }
+ printf("\n");
}
static void __dead2
usage(void)
{
- xo_error(
- "usage: devinfo [-rv]\n",
- " devinfo -u [-v]\n",
- " devinfo -p dev [-v]\n");
+ fprintf(stderr, "%s\n%s\n%s\n",
+ "usage: devinfo [-rv]",
+ " devinfo -u [-v]",
+ " devinfo -p dev [-v]");
exit(1);
}
@@ -446,11 +321,6 @@
bool uflag;
char *path = NULL;
- argc = xo_parse_args(argc, argv);
- if (argc < 0) {
- exit(1);
- }
-
uflag = false;
while ((c = getopt(argc, argv, "p:ruv")) != -1) {
switch(c) {
@@ -476,32 +346,20 @@
if ((rv = devinfo_init()) != 0) {
errno = rv;
- xo_err(1, "devinfo_init");
+ err(1, "devinfo_init");
}
if ((root = devinfo_handle_to_device(DEVINFO_ROOT_DEVICE)) == NULL)
- xo_errx(1, "can't find root device");
+ errx(1, "can't find root device");
if (path) {
- xo_set_flags(NULL, XOF_DTRT);
- xo_open_container("device-path");
print_path(root, path);
- xo_close_container("device-path");
} else if (uflag) {
/* print resource usage? */
- xo_set_flags(NULL, XOF_DTRT);
- xo_open_container("device-resources");
devinfo_foreach_rman(print_rman, NULL);
- xo_close_container("device-resources");
} else {
/* print device hierarchy */
- xo_open_container("device-information");
devinfo_foreach_device_child(root, print_device, (void *)0);
- xo_close_container("device-information");
- }
-
- if (xo_finish() < 0) {
- exit(1);
}
return(0);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jan 28, 4:53 AM (8 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28063372
Default Alt Text
D54196.id167932.diff (11 KB)
Attached To
Mode
D54196: Revert "devinfo: Add support for libxo"
Attached
Detach File
Event Timeline
Log In to Comment