summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorDominik Honnef <dominik@honnef.co>2020-03-19 18:40:45 +0100
committerGitHub <noreply@github.com>2020-03-19 13:40:45 -0400
commite22eb2d7b5078f78655e478dcee3a8298821edf3 (patch)
treedc5fdeef69b53792477d5fb44fc71218a3a907fb /pkgs/misc
parentc69153580b37c37964f2a01f113813fc0b7975a1 (diff)
downloadnixpkgs-e22eb2d7b5078f78655e478dcee3a8298821edf3.tar
nixpkgs-e22eb2d7b5078f78655e478dcee3a8298821edf3.tar.gz
nixpkgs-e22eb2d7b5078f78655e478dcee3a8298821edf3.tar.bz2
nixpkgs-e22eb2d7b5078f78655e478dcee3a8298821edf3.tar.lz
nixpkgs-e22eb2d7b5078f78655e478dcee3a8298821edf3.tar.xz
nixpkgs-e22eb2d7b5078f78655e478dcee3a8298821edf3.tar.zst
nixpkgs-e22eb2d7b5078f78655e478dcee3a8298821edf3.zip
epkowa: fix parsing of interpreters (#82909)
Building with -std=c99 breaks the obsolete "%as" format string, which
completely breaks the parsing of epkowa interpreters. This means that
no scanner requiring plugins worked.
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/drivers/epkowa/default.nix1
-rw-r--r--pkgs/misc/drivers/epkowa/sscanf.patch29
2 files changed, 30 insertions, 0 deletions
diff --git a/pkgs/misc/drivers/epkowa/default.nix b/pkgs/misc/drivers/epkowa/default.nix
index 13bb63ca709..c8c0ecb872e 100644
--- a/pkgs/misc/drivers/epkowa/default.nix
+++ b/pkgs/misc/drivers/epkowa/default.nix
@@ -244,6 +244,7 @@ stdenv.mkDerivation rec {
       sha256 = "04y70qjd220dpyh771fiq50lha16pms98mfigwjczdfmx6kpj1jd";
     })
     ./firmware_location.patch
+    ./sscanf.patch
     ];
   patchFlags = [ "-p0" ];
 
diff --git a/pkgs/misc/drivers/epkowa/sscanf.patch b/pkgs/misc/drivers/epkowa/sscanf.patch
new file mode 100644
index 00000000000..7bee9cae518
--- /dev/null
+++ b/pkgs/misc/drivers/epkowa/sscanf.patch
@@ -0,0 +1,29 @@
+The "%as" verb requests sscanf to allocate a buffer for us. However,
+this use of 'a' has been long deprecated, and gcc doesn't support it
+in this manner when using -std=c99. The modern replacement is "%ms".
+
+Without this change, iscan couldn't read the interpreter file, in turn
+breaking all scanners that require plugins.
+--- backend/cfg-obj.c.orig	2020-03-19 01:27:17.254762077 +0100
++++ backend/cfg-obj.c	2020-03-19 02:01:52.293329873 +0100
+@@ -1026,7 +1026,7 @@
+       char *vendor = NULL;
+       char *model  = NULL;
+ 
+-      sscanf (string, "%*s %as %as", &vendor, &model);
++      sscanf (string, "%*s %ms %ms", &vendor, &model);
+ 
+       if (list_append (_cfg->seen[CFG_KEY_SCSI], info))
+         {
+@@ -1108,10 +1112,10 @@
+       char *library  = NULL;
+       char *firmware = NULL;
+ 
+-      sscanf (string, "%*s %*s %x %x %as %as",
++      sscanf (string, "%*s %*s %x %x %ms %ms",
+               &vendor, &product, &library, &firmware);
+ 
+       if (library && _cfg_have_interpreter (library, firmware)
+           && list_append (_cfg->seen[CFG_KEY_INTERPRETER], info))
+         {
+