2011-06-09 14:00:35

by Nobuhiro Iwamatsu

[permalink] [raw]
Subject: [PATCH] Fix return code of hid2hci

hid2hci already return 1.
This set 0 to default retuen code and add error code.
---
tools/hid2hci.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/tools/hid2hci.c b/tools/hid2hci.c
index 45a3a3d..da278cb 100644
--- a/tools/hid2hci.c
+++ b/tools/hid2hci.c
@@ -240,7 +240,7 @@ int main(int argc, char *argv[])
enum mode mode = HCI;
const char *devpath = NULL;
int err = -1;
- int rc = 1;
+ int rc = 0;

for (;;) {
int option;
@@ -288,13 +288,16 @@ int main(int argc, char *argv[])
}

udev = udev_new();
- if (udev == NULL)
+ if (udev == NULL) {
+ rc = errno;
goto exit;
+ }

snprintf(syspath, sizeof(syspath), "%s/%s", udev_get_sys_path(udev), devpath);
udev_dev = udev_device_new_from_syspath(udev, syspath);
if (udev_dev == NULL) {
fprintf(stderr, "error: could not find '%s'\n", devpath);
+ rc = errno;
goto exit;
}

@@ -312,6 +315,7 @@ int main(int argc, char *argv[])
dev = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_device");
if (dev == NULL) {
fprintf(stderr, "error: could not find usb_device for '%s'\n", devpath);
+ rc = errno;
goto exit;
}
}
@@ -320,6 +324,7 @@ int main(int argc, char *argv[])
if (handle == NULL) {
fprintf(stderr, "error: unable to handle '%s'\n",
udev_device_get_syspath(dev));
+ rc = errno;
goto exit;
}
err = usb_switch(handle, mode);
@@ -331,6 +336,7 @@ int main(int argc, char *argv[])
device = udev_device_get_devnode(udev_dev);
if (device == NULL) {
fprintf(stderr, "error: could not find hiddev device node\n");
+ rc = errno;
goto exit;
}
err = hid_switch_logitech(device);
--
1.7.5.3



2011-06-17 10:32:55

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH] Fix return code of hid2hci

Hi,

On Thu, Jun 09, 2011, Nobuhiro Iwamatsu wrote:
> hid2hci already return 1.
> This set 0 to default retuen code and add error code.
> ---
> tools/hid2hci.c | 10 ++++++++--
> 1 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/tools/hid2hci.c b/tools/hid2hci.c
> index 45a3a3d..da278cb 100644
> --- a/tools/hid2hci.c
> +++ b/tools/hid2hci.c
> @@ -240,7 +240,7 @@ int main(int argc, char *argv[])
> enum mode mode = HCI;
> const char *devpath = NULL;
> int err = -1;
> - int rc = 1;
> + int rc = 0;
>
> for (;;) {
> int option;
> @@ -288,13 +288,16 @@ int main(int argc, char *argv[])
> }
>
> udev = udev_new();
> - if (udev == NULL)
> + if (udev == NULL) {
> + rc = errno;
> goto exit;
> + }
>
> snprintf(syspath, sizeof(syspath), "%s/%s", udev_get_sys_path(udev), devpath);
> udev_dev = udev_device_new_from_syspath(udev, syspath);
> if (udev_dev == NULL) {
> fprintf(stderr, "error: could not find '%s'\n", devpath);
> + rc = errno;
> goto exit;
> }

I don't see anything in the libudev reference documentation about it
using errno for errors (which really only should belong to libc).

I also don't see why you'd need a second "error" variable. You could
just reuse err here and at the end of main() do exit(1) if err is less
than zero.

Johan