Hi Mauro,
 
> I added some patches to dvb-apps/util/scan.c in order to properly support
> EN 300 468 charsets.
> Before the patch, scan were producing invalid UTF-8 codes here, for
> ISO-8859-15 charsets, as
> scan were simply filling service/provider name with whatever non-control
> characters that were
> there. So, if your computer uses the same character as your service
> provider, you're lucky.
> Otherwise, invalid characters will appear at the scan tables.
> 
> After the changes, scan gets the locale environment charset, and use it as
> the output charset
> on the output files.

This implementation in scan expects the environment settings to be 
'language_country.encoding', but i think the more general way is 
'language_country.encoding@variant'.

i get the following error from scan, because iconv doesnt know 
'ISO-8859-15@euro'.

<snip>
WARNING: Conversion from ISO-8859-9 to ISO-8859-15@euro not supported
WARNING: Conversion from ISO-8859-9 to ISO-8859-15@euro not supported
...
WARNING: Conversion from ISO-8859-15 to ISO-8859-15@euro not supported
WARNING: Conversion from ISO-8859-15 to ISO-8859-15@euro not supported
</snap>

I suggest to change scan.c as follows:

--- dvb-apps-5e68946b0e0d_orig/util/scan/scan.c 2011-04-10 20:22:52.000000000 
+0200
+++ dvb-apps-5e68946b0e0d/util/scan/scan.c      2011-04-11 19:41:21.460000060 
+0200
@@ -2570,14 +2570,14 @@
        if ((charset = getenv("LC_ALL")) ||
            (charset = getenv("LC_CTYPE")) ||
            (charset = getenv ("LANG"))) {
-               while (*charset != '.' && *charset)
-                       charset++;
-               if (*charset == '.')
-                       charset++;
-               if (*charset)
-                       output_charset = charset;
-               else
-                       output_charset = nl_langinfo(CODESET);
+               // assuming 'language_country.encoding@variant'
+               char * p;
+
+               if ((p = strchr(charset, '.')))
+                       charset = p + 1;
+               if ((p = strchr(charset, '@')))
+                       *p = 0;
+               output_charset = charset;
        } else
                output_charset = nl_langinfo(CODESET);


This cuts the '@variant' part from charset, so that iconv will find its way.

cheers,
Winfried


-- 
NEU: FreePhone - kostenlos mobil telefonieren und surfen!                       
Jetzt informieren: http://www.gmx.net/de/go/freephone
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to