File fxload-2008_10_13-prefer_DEVNAME.patch of Package fxload
Author: Stefan Seyfried <seife+obs@b1-systems.com>
Subject: Adapt fxload to newer udev
Actually this patch is from ubuntu:
https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/156085/comments/102
* Use DEVNAME from the environment in preference to DEVICE,
the former contains the modern /dev/bus/usb path. LP: #156085.
Index: b/main.c
===================================================================
--- a/main.c
+++ b/main.c
@@ -32,23 +32,23 @@
* -s <path> -- use this second stage loader
* -c <byte> -- Download to EEPROM, with this config byte
*
* -L <path> -- Create a symbolic link to the device.
* -m <mode> -- Set the permissions on the device after download.
- * -D <path> -- Use this device, instead of $DEVICE
+ * -D <path> -- Use this device, instead of $DEVNAME or $DEVICE
*
* -V -- Print version ID for program
*
* This program is intended to be started by hotplug scripts in
* response to a device appearing on the bus. It therefore also
* expects these environment variables which are passed by hotplug to
* its sub-scripts:
*
- * DEVICE=<path>
- * This is the path to the device is /proc/bus/usb. It is the
- * complete path to the device, that I can pass to open and
- * manipulate as a USB device.
+ * DEVNAME=<path>, DEVICE=<path>
+ * This is the path to the device in /dev/bus/usb or
+ * /proc/bus/usb. It is the complete path to the device, that
+ * I can pass to open and manipulate as a USB device.
*/
# include <stdlib.h>
# include <stdio.h>
# include <getopt.h>
@@ -89,17 +89,20 @@ void logerror(const char *format, ...)
int main(int argc, char*argv[])
{
const char *link_path = 0;
const char *ihex_path = 0;
- const char *device_path = getenv("DEVICE");
+ const char *device_path = getenv("DEVNAME");
const char *type = 0;
const char *stage1 = 0;
mode_t mode = 0;
int opt;
int config = -1;
+ if (!device_path)
+ device_path = getenv("DEVICE");
+
while ((opt = getopt (argc, argv, "2vV?D:I:L:c:lm:s:t:")) != EOF)
switch (opt) {
case '2': // original version of "-t fx2"
type = "fx2";
@@ -189,11 +192,11 @@ usage:
fputs (argv [0], stderr);
fputs (" [-vV] [-l] [-t type] [-D devpath]\n", stderr);
fputs ("\t\t[-I firmware_hexfile] ", stderr);
fputs ("[-s loader] [-c config_byte]\n", stderr);
fputs ("\t\t[-L link] [-m mode]\n", stderr);
- fputs ("... [-D devpath] overrides DEVICE= in env\n", stderr);
+ fputs ("... [-D devpath] overrides DEVNAME= and DEVICE= in env\n", stderr);
fputs ("... device types: one of an21, fx, fx2, fx2lp\n", stderr);
fputs ("... at least one of -I, -L, -m is required\n", stderr);
return -1;
}