Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F173678676
D33579.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D33579.id.diff
View Options
diff --git a/usr.sbin/usbconfig/usbconfig.8 b/usr.sbin/usbconfig/usbconfig.8
--- a/usr.sbin/usbconfig/usbconfig.8
+++ b/usr.sbin/usbconfig/usbconfig.8
@@ -33,9 +33,11 @@
.Nm
.Op Fl u Ar unit
.Op Fl a Ar addr
+.Op Fl i Ar interface_index
.Op cmds...
.Nm
-.Op Oo Fl d Oc Ar [ugen]<unit>.<addr>
+.Fl d Ar [[/dev/]ugen]<unit>.<addr>
+.Op Fl i Ar interface_index
.Op cmds...
.Sh DESCRIPTION
The
@@ -49,9 +51,11 @@
.It Fl a Ar addr
Limit device range to the given USB device index.
Should only be used in conjunction with the unit argument.
-.It Fl d Ar [ugen]<unit>.<addr>
+.It Fl d Ar [[/dev/]ugen]<unit>.<addr>
Limit device range to USB devices connected to the given unit and address.
-The unit and address coordinates may be prefixed by the lowercased word "ugen".
+The unit and address coordinates may be prefixed by the lowercased word "ugen",
+or the full path name
+.Pa /dev/ugen .
.It Fl i Ar interface_index
Specify interface index as indicated by the command description.
If this argument is not specified a value of zero will be used for the interface index.
@@ -81,6 +85,9 @@
.Cm dump_curr_config_desc
output.
Usually there is no need to adjust this setting.
+This command uses the
+.Fl i Ar interface_index
+option.
.It Cm set_template Ar template
Set the global USB device side template.
See
@@ -126,6 +133,9 @@
currently attached to the device.
.It Cm detach_kernel_driver
Detach kernel driver for the selected interface and USB device.
+This command uses the
+.Fl i Ar interface_index
+option.
.It Cm suspend
Force the device to suspend.
.It Cm resume
diff --git a/usr.sbin/usbconfig/usbconfig.c b/usr.sbin/usbconfig/usbconfig.c
--- a/usr.sbin/usbconfig/usbconfig.c
+++ b/usr.sbin/usbconfig/usbconfig.c
@@ -31,6 +31,7 @@
#include <stdint.h>
#include <err.h>
#include <string.h>
+#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#include <errno.h>
@@ -64,7 +65,6 @@
uint8_t got_list:1;
uint8_t got_bus:1;
uint8_t got_addr:1;
- uint8_t got_iface:1;
uint8_t got_set_config:1;
uint8_t got_set_alt:1;
uint8_t got_set_template:1;
@@ -100,10 +100,6 @@
};
enum {
- T_UNIT,
- T_ADDR,
- T_UGEN,
- T_IFACE,
T_SET_CONFIG,
T_SET_ALT,
T_SET_TEMPLATE,
@@ -136,10 +132,6 @@
static struct options options;
static const struct token token[] = {
- {"-u", T_UNIT, 1},
- {"-a", T_ADDR, 1},
- {"-d", T_UGEN, 1},
- {"-i", T_IFACE, 1},
{"set_config", T_SET_CONFIG, 1},
{"set_alt", T_SET_ALT, 1},
{"set_template", T_SET_TEMPLATE, 1},
@@ -279,8 +271,8 @@
{
fprintf(stderr, ""
"usbconfig - configure the USB subsystem" "\n"
- "usage: usbconfig -u <busnum> -a <devaddr> -i <ifaceindex> [cmds...]" "\n"
- "usage: usbconfig -d [ugen]<busnum>.<devaddr> -i <ifaceindex> [cmds...]" "\n"
+ "usage: usbconfig [-u <busnum>] [-a <devaddr>] [-i <ifaceindex>] [cmds...]" "\n"
+ "usage: usbconfig -d [ugen]<busnum>.<devaddr> [-i <ifaceindex>] [cmds...]" "\n"
"commands:" "\n"
" set_config <cfg_index>" "\n"
" set_alt <alt_index>" "\n"
@@ -563,6 +555,7 @@
int addr;
int n;
int t;
+ int ch;
if (argc < 1) {
usage();
@@ -571,7 +564,52 @@
if (pbe == NULL)
err(1, "could not access USB backend\n");
- for (n = 1; n != argc; n++) {
+ while ((ch = getopt(argc, argv, "a:d:i:u:")) != -1) {
+ switch (ch) {
+ case 'a':
+ opt->addr = num_id(optarg, "addr");
+ opt->got_addr = 1;
+ break;
+
+ case 'd':
+ if (strncmp(optarg, "ugen", strlen("ugen")) == 0) {
+ ptr = optarg + strlen("ugen");
+ } else if (strncmp(optarg, "/dev/ugen",
+ strlen("/dev/ugen")) == 0) {
+ ptr = optarg + strlen("/dev/ugen");
+ } else {
+ ptr = optarg;
+ }
+ if ((sscanf(ptr, "%d.%d",
+ &unit, &addr) != 2) ||
+ (unit < 0) || (unit > 65535) ||
+ (addr < 0) || (addr > 65535)) {
+ errx(1, "cannot "
+ "parse '%s'", optarg);
+ }
+ opt->bus = unit;
+ opt->addr = addr;
+ opt->got_bus = 1;
+ opt->got_addr = 1;
+ break;
+
+ case 'i':
+ opt->iface = num_id(optarg, "iface");
+ break;
+
+ case 'u':
+ opt->bus = num_id(optarg, "busnum");
+ opt->got_bus = 1;
+ break;
+
+ default:
+ usage();
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ for (n = 0; n != argc; n++) {
/* get number of additional options */
t = (argc - n - 1);
@@ -654,52 +692,6 @@
opt->got_show_iface_driver = 1;
break;
- case T_UGEN:
- if (opt->got_any) {
- /* allow multiple commands on the same line */
- flush_command(pbe, opt);
- }
- ptr = argv[n + 1];
-
- if ((ptr[0] == 'u') &&
- (ptr[1] == 'g') &&
- (ptr[2] == 'e') &&
- (ptr[3] == 'n'))
- ptr += 4;
-
- if ((sscanf(ptr, "%d.%d",
- &unit, &addr) != 2) ||
- (unit < 0) || (unit > 65535) ||
- (addr < 0) || (addr > 65535)) {
- errx(1, "cannot "
- "parse '%s'", argv[n + 1]);
- }
- opt->bus = unit;
- opt->addr = addr;
- opt->got_bus = 1;
- opt->got_addr = 1;
- n++;
- break;
-
- case T_UNIT:
- if (opt->got_any) {
- /* allow multiple commands on the same line */
- flush_command(pbe, opt);
- }
- opt->bus = num_id(argv[n + 1], "busnum");
- opt->got_bus = 1;
- n++;
- break;
- case T_ADDR:
- opt->addr = num_id(argv[n + 1], "addr");
- opt->got_addr = 1;
- n++;
- break;
- case T_IFACE:
- opt->iface = num_id(argv[n + 1], "iface");
- opt->got_iface = 1;
- n++;
- break;
case T_SET_CONFIG:
if (opt->got_set_config)
duplicate_option(argv[n]);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Sep 28, 4:25 PM (10 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
39781551
Default Alt Text
D33579.id.diff (5 KB)
Attached To
Mode
D33579: usbconfig: use getopt(3) for option handling
Attached
Detach File
Event Timeline
Log In to Comment