Rxvt-Unicode on Solaris 8 & gcc v.3.3.2
Mun Johl
mun_johl at sierralogic.com
Mon Mar 27 21:40:36 CEST 2006
Hi Marc,
Thanks for your reply.
Disclaimer: I'm not a master C++ coder; I only know enough to be dangerous.
I looked in my gcc v.3.3.2 distribution, and in the
/usr/local/include/g++-v3/bits/std_cwchar.h file (see attachment) I
found the following:
// Get rid of those macros defined in <wchar.h> in lieu of real functions.
<...stuff...>
#undef mbrtowc
And then:
#if _GLIBCPP_USE_WCHAR_T
namespace std
{
<...stuff...>
using ::mbrtowc;
With little confidence, I tried setting _GLIBCPP_USE_WCHAR_T in the
Makefile; but that just resulted in a different failure mode.
I take from the above that my compilation environment is okay; but
perhaps not compatible with rxvt-unicode.
Do you know if rxvt-unicode has been built on Solaris 8 using gcc? If
so, do you know whether or not v.3.3.2 is known to work correctly?
Thanks for any assistance you can offer.
Regards,
--
Mun
On Sun, Mar 26, 2006 at 10:00 PM PST, Marc Lehmann wrote:
ML> On Sun, Mar 26, 2006 at 04:49:54PM -0800, Mun Johl <mun_johl at sierralogic.com> wrote:
ML> > I just downloaded the latest rxvt-unicode sources (for the first time)
ML> > and tried compiling on my Solaris 8 system with gcc v.3.3.2; however,
ML> > I was unsuccessful:
ML>
ML> This is a bug in your compilation environment:
ML>
ML> > command.C:2808: error: `mbrtowc' undeclared (first use this function)
ML>
ML> mbrtowc is standard C++ and resides in the cwchar header, which is
ML> included in command.C (via rxvt.h/rxvtlib.h). If it is missing then this
ML> indicates a serious bug in your implementation of C++.
ML>
ML> > Any assistance would be greatly appreciated.
ML>
ML> I suggest you report this to your vendor.
ML>
ML> --
ML> The choice of a
ML> -----==- _GNU_
ML> ----==-- _ generation Marc Lehmann
ML> ---==---(_)__ __ ____ __ pcg at goof.com
ML> --==---/ / _ \/ // /\ \/ / http://schmorp.de/
ML> -=====/_/_//_/\_,_/ /_/\_\ XX11-RIPE
-------------- next part --------------
// -*- C++ -*- forwarding header.
// Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
//
// ISO C++ 14882: 21.4
//
#ifndef _CPP_CWCHAR
#define _CPP_CWCHAR 1
#include <bits/c++config.h>
#include <bits/std_cstddef.h>
#include <bits/std_ctime.h>
#if _GLIBCPP_HAVE_WCHAR_H
#pragma GCC system_header
#include <wchar.h>
#endif
// Need to do a bit of trickery here with mbstate_t as char_traits
// assumes it is in wchar.h, regardless of wchar_t specializations.
#ifndef _GLIBCPP_HAVE_MBSTATE_T
extern "C"
{
typedef struct
{
int __fill[6];
} mbstate_t;
}
#endif
namespace std
{
using ::mbstate_t;
}
// Get rid of those macros defined in <wchar.h> in lieu of real functions.
#undef btowc
#undef fgetwc
#undef fgetws
#undef fputwc
#undef fputws
#undef fwide
#undef fwprintf
#undef fwscanf
#undef getwc
#undef getwchar
#undef mbrlen
#undef mbrtowc
#undef mbsinit
#undef mbsrtowcs
#undef putwc
#undef putwchar
#undef swprintf
#undef swscanf
#undef ungetwc
#undef vfwprintf
#undef vfwscanf
#undef vswprintf
#undef vswscanf
#undef vwprintf
#undef vwscanf
#undef wcrtomb
#undef wcscat
#undef wcschr
#undef wcscmp
#undef wcscoll
#undef wcscpy
#undef wcscspn
#undef wcsftime
#undef wcslen
#undef wcsncat
#undef wcsncmp
#undef wcsncpy
#undef wcspbrk
#undef wcsrchr
#undef wcsrtombs
#undef wcsspn
#undef wcsstr
#undef wcstod
#undef wcstof
#undef wcstok
#undef wcstol
#undef wcstoul
#undef wcsxfrm
#undef wctob
#undef wmemchr
#undef wmemcmp
#undef wmemcpy
#undef wmemmove
#undef wmemset
#undef wprintf
#undef wscanf
#if _GLIBCPP_USE_WCHAR_T
namespace std
{
using ::wint_t;
using ::btowc;
using ::fgetwc;
using ::fgetws;
using ::fputwc;
using ::fputws;
using ::fwide;
using ::fwprintf;
using ::fwscanf;
using ::getwc;
using ::getwchar;
using ::mbrlen;
using ::mbrtowc;
using ::mbsinit;
using ::mbsrtowcs;
using ::putwc;
using ::putwchar;
using ::swprintf;
using ::swscanf;
using ::ungetwc;
using ::vfwprintf;
using ::vfwscanf;
using ::vswprintf;
using ::vswscanf;
using ::vwprintf;
using ::vwscanf;
using ::wcrtomb;
using ::wcscat;
using ::wcscmp;
using ::wcscoll;
using ::wcscpy;
using ::wcscspn;
using ::wcsftime;
using ::wcslen;
using ::wcsncat;
using ::wcsncmp;
using ::wcsncpy;
using ::wcsrtombs;
using ::wcsspn;
using ::wcstod;
using ::wcstof;
using ::wcstok;
using ::wcstol;
using ::wcstoul;
using ::wcsxfrm;
using ::wctob;
using ::wmemcmp;
using ::wmemcpy;
using ::wmemmove;
using ::wmemset;
using ::wprintf;
using ::wscanf;
using ::wcschr;
inline wchar_t*
wcschr(wchar_t* __p, wchar_t __c)
{ return wcschr(const_cast<const wchar_t*>(__p), __c); }
using ::wcspbrk;
inline wchar_t*
wcspbrk(wchar_t* __s1, wchar_t* __s2)
{ return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
using ::wcsrchr;
inline wchar_t*
wcsrchr(wchar_t* __p, wchar_t __c)
{ return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
using ::wcsstr;
inline wchar_t*
wcsstr(wchar_t* __s1, wchar_t* __s2)
{ return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
using ::wmemchr;
inline wchar_t*
wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
{ return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
}
#if _GLIBCPP_USE_C99
#undef wcstold
#undef wcstoll
#undef wcstoull
namespace __gnu_cxx
{
using ::wcstold;
using ::wcstoll;
using ::wcstoull;
}
namespace std
{
using __gnu_cxx::wcstold;
using __gnu_cxx::wcstoll;
using __gnu_cxx::wcstoull;
}
#endif
#endif //_GLIBCPP_USE_WCHAR_T
#endif
More information about the rxvt-unicode
mailing list