From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29075 invoked by alias); 28 Feb 2010 18:11:12 -0000 Received: (qmail 29060 invoked by uid 22791); 28 Feb 2010 18:11:11 -0000 X-Spam-Check-By: sourceware.org Received: from aquarius.hirmke.de (HELO calimero.vinschen.de) (217.91.18.234) by sourceware.org (qpsmtpd/0.83/v0.83-20-g38e4449) with ESMTP; Sun, 28 Feb 2010 18:11:07 +0000 Received: by calimero.vinschen.de (Postfix, from userid 500) id 567F46D42F5; Sun, 28 Feb 2010 19:11:05 +0100 (CET) Date: Sun, 28 Feb 2010 18:11:00 -0000 From: Corinna Vinschen To: gdb-patches@sourceware.org Subject: Re: [RFA] defs.h: Define GDB_DEFAULT_TARGET_[WIDE_]CHARSET for Cygwin and MingW builds Message-ID: <20100228181105.GO5683@calimero.vinschen.de> Reply-To: gdb-patches@sourceware.org Mail-Followup-To: gdb-patches@sourceware.org References: <20100228130500.GG5683@calimero.vinschen.de> <838wadcn94.fsf@gnu.org> <20100228170523.GI5683@calimero.vinschen.de> <83y6idb6fs.fsf@gnu.org> <20100228175239.GM5683@calimero.vinschen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100228175239.GM5683@calimero.vinschen.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-02/txt/msg00692.txt.bz2 On Feb 28 18:52, Corinna Vinschen wrote: > On Feb 28 19:45, Eli Zaretskii wrote: > > > Date: Sun, 28 Feb 2010 18:05:23 +0100 > > > From: Corinna Vinschen > > > > > > > > +#define GDB_DEFAULT_TARGET_CHARSET "CP1252" > > > > > +#endif > > > > > > > > Why cp1252? why not detect the ANSI codepage at run time, and make > > > > more non-Latin users happy? > > > > > > How? Is there somewhere a function which converts a Windows codepage > > > number into a iconv compatible codeset string? > > > > Sorry, I'm not following: last time I looked, iconv supported cpNNNN > > codepages out of the box. This is from an Ubuntu GNU/Linux system: > > > > $ iconv --version > > iconv (GNU libiconv 1.11) > > $ iconv --list | egrep "^CP" > > CP819 IBM819 ISO-8859-1 ISO-IR-100 ISO8859-1 ISO_8859-1 ISO_8859-1:1987 L1 LATIN1 CSISOLATIN1 > > CP1250 MS-EE WINDOWS-1250 > > CP1251 MS-CYRL WINDOWS-1251 > > CP1252 MS-ANSI WINDOWS-1252 > > CP1253 MS-GREEK WINDOWS-1253 > > CP1254 MS-TURK WINDOWS-1254 > > CP1255 MS-HEBR WINDOWS-1255 > > CP1256 MS-ARAB WINDOWS-1256 > > CP1257 WINBALTRIM WINDOWS-1257 > > CP1258 WINDOWS-1258 > > CP154 CYRILLIC-ASIAN PT154 PTCP154 CSPTCP154 > > CP1133 IBM-CP1133 > > CP874 WINDOWS-874 > > CP932 > > CP936 MS936 WINDOWS-936 > > CP950 > > CP949 UHC > > CP1361 JOHAB > > > > What am I missing? > > Windows has a function GetACP() which returns the current ANSI > codepage. iconv wants a string which determines the source and > target codesets. I don't know any function in Windows which > converts a codepage number into an iconv-compatible codeset name. Erm. Looks I wasn't thinking at all. Since every codepage seems to be simply avaiable as "CPxxx", it can be easily constructed, apparently. So this: #define GDB_DEFAULT_TARGET_CHARSET get_cp() char * get_cp () { char buf[32]; snprintf (buf, 32, "CP%u", GetACP ()); } should do it, right? Corinna -- Corinna Vinschen Cygwin Project Co-Leader Red Hat