[sane-devel] Schedule for release of sane-backends 1.0.24

m. allan noah kitno455 at gmail.com
Mon Aug 26 01:24:45 UTC 2013


That is one option. The other is to do own own upcasing, as per this patch:

diff --git a/sanei/sanei_init_debug.c b/sanei/sanei_init_debug.c
index 6b50f03..c9571e9 100644
--- a/sanei/sanei_init_debug.c
+++ b/sanei/sanei_init_debug.c
@@ -67,6 +67,19 @@
 #define BACKEND_NAME sanei_debug
 #include "../include/sane/sanei_debug.h"

+/* If a frontend enables translations, the system toupper()
+ * call will use the LANG env var. We need to use ascii
+ * instead, so the debugging env var name matches the docs.
+ * This is a particular problem in Turkish, where 'i' does
+ * not capitalize to 'I' */
+char
+toupper_ascii (int c)
+{
+  if(c > 0x60 && c < 0x7b)
+    return c - 0x20;
+  return c;
+}
+
 void
 sanei_init_debug (const char * backend, int * var)
 {
@@ -80,7 +93,7 @@ sanei_init_debug (const char * backend, int * var)
     {
       if (i >= sizeof (buf) - 1)
         break;
-      buf[i] = toupper(ch);
+      buf[i] = toupper_ascii(ch);
     }
   buf[i] = '\0';


On Sun, Aug 25, 2013 at 9:15 PM, Olaf Meeuwissen
<olaf.meeuwissen at avasys.jp> wrote:
>
> m. allan noah writes:
>
>> No, this is a good issue to discuss. I wonder, can the Turkish
>> keyboard make the capitol 'I'? If not, then what is the correct fix?
>
> A lot of string functions do take the current locale into account when
> doing their thing, so the correct fix is to use the right locale before
> calling toupper().
>
> IIRC, backend names are expected to be valid C identifiers which means
> they are ASCII.  Setting the LC_CTYPE to "C" before use of toupper() and
> reverting when done should fix this issue.  Patch attached.
>
>>> [...]
>>> This is due to  limitation of toupper() function w.r.t.  character 'i' when
>>> locale is set to turkish.
>>> As  toupper('i') is 'i' (i.e. still the small i) ,the SANE_DEBUG_RICOH  etc
>>> would not work correctly.
>>>
>>> Root cause:
>>> Env variable set by user as mentioned in the man page is as below
>>>     export SANE_DEBUG_RICOH=4
>>>
>>> Sane's search logic's final string generated  for ricoh backend would be
>>> SANE_DEBUG_RiCOH    --->note mismatch for i
>>> [...]
>
> Hope this helps,
> --
> Olaf Meeuwissen, LPIC-2           FLOSS Engineer -- AVASYS CORPORATION
> FSF Associate Member #1962               Help support software freedom
>                  http://www.fsf.org/jf?referrer=1962



-- 
"The truth is an offense, but not a sin"



More information about the sane-devel mailing list