From 58728a0d72c0d683c743592dcadbcb9f82c6cae1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Pinard?= Date: Sun, 9 Mar 2008 15:10:13 -0400 Subject: [PATCH] Call iconv -l --- ChangeLog | 4 ++++ tables.py | 24 +++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index fa26de4..c97b602 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-03-09 François Pinard + + * tables.py (Iconv.__init__): Call iconv -l to get information. + 2008-03-08 François Pinard * NEWS, README, THANKS, TODO, configure.ac, Makefile.am: Write diff --git a/tables.py b/tables.py index 3a45699..5c42f21 100755 --- a/tables.py +++ b/tables.py @@ -457,13 +457,23 @@ class Iconv(Options): canonical[charset.upper()] = charset # Read in the encodings.def file. - for line in file('/home/pinard/entretien/recode/admin/charset-list-libiconv'): - aliases = [] - for alias in line.split(): - if alias in canonical: - alias = canonical[alias] - aliases.append(alias) - self.data.append((aliases[0], aliases[1:])) + #for line in file('/home/pinard/entretien/recode/admin/charset-list-libiconv'): + libc = None + import os + for line in os.popen('iconv -l'): + if libc is None: + libc = len(line.split('/')) == 3 + if libc: + first, second, empty = line.split('/') + assert empty == '\n', repr(line) + self.data.append((second or first, ())) + else: + aliases = [] + for alias in line.split(): + if alias in canonical: + alias = canonical[alias] + aliases.append(alias) + self.data.append((aliases[0], aliases[1:])) def complete(self, french): if not self.do_sources: -- 2.40.0