Modified: stdcxx/branches/4.3.x/tests/include/rw_printf.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/include/rw_printf.h?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/include/rw_printf.h (original) +++ stdcxx/branches/4.3.x/tests/include/rw_printf.h Wed Jul 30 15:55:43 2008 @@ -79,7 +79,7 @@ /** * Prints to a dynamically allocated character buffer. * - * @param fmt Format specifier. + * @param fmt Format specifier. See rwtest-fmtspec page for details. * * @return On success, returns a pointer to the dynamically allocated * character buffer. Otherwise, returns 0. @@ -94,6 +94,7 @@ * @param buf A pointer to character buffer where the function should * store its output. * @param bufise The size of the character buffer in bytes. + * @param fmt Format specifier. See rwtest-fmtspec page for details. * * @return On success, if the size of the supplied buffer was sufficient * to format all characters including the terminating NUL, returns @@ -124,34 +125,7 @@ * to by this argument to the size of the dynamically allocated * character buffer, or leaves it unchanged if it doesn't allocate * any buffer. - * @param fmt Format specifier. - * The format specifier string has the same syntax as C99 sprintf - * (see 7.19.6.1 of ISO/IEC 9899:1999) with the following extensions: - * - * %n$ where n is a integer (see IEEE Std 1003.1) - * %m the value of strerror(errno) - * - * %{?} if clause (extracts an int) - * %{:} else clause - * %{;} end of if/else clause - * - * %{Ac} quoted array of narrow characters - * %{*Ac} quoted array of characters of width '*' each - * where '*' is an int argument extracted from - * the argument list - * %{#s} quoted narrow character string - * %{#ls} quoted wide character string - * %{$envvar} value of an environment variable envvar - * %{f} function pointer - * %{K} signal name (such as "SIGABRT") - * %{M} member pointer - * %{#m} name of the errno constant (such as "EINVAL") - * %{n} buffer size - * %{S} pointer to std::string - * %{lS} pointer to std::wstring - * %{tm} pointer to struct tm - * %{InJ} where n is one of { 8, 16, 32, 64 } - * and J is one of { d, o, x, X } + * @param fmt Format specifier. See rwtest-fmtspec page for details. * * @return On success, returns the number of characters formatted into * the buffer, otherwise -1. @@ -173,6 +147,9 @@ * directives and conversions. Directives that accept a pointer argument * will convert a null pointer into the string literal <tt>(null)</tt>. * + * Specifiers within formatting directives are denoted by angle brackets. + * The specifiers are placeholders whose range of possible values are + * listed in the description of the directive. * * @section rwtest-fmtspec-c89 C89 Directives * @@ -198,6 +175,16 @@ * of the argument is nonzero, the value is converted to the string * literal \c true. Otherwise, the value converts to \c false. * + * @subsection rwtest-fmtspec-ext-funptr Function Pointer \%{f} + * + * The argument is a pointer to a function. The conversion and formatting + * is performed as specified by the \c \%p directive. + * + * @subsection rwtest-fmtspec-ext-memptr Member Pointer \%{M} + * + * The argument is a pointer to a composite member. The conversion and + * formatting is performed as specified by the \c \%p directive. + * * @subsection rwtest-fmtspec-ext-esc-c Escaped Character \%{c} \%{\#c} * * The argument is an integer value converted to <tt>unsigned char</tt> @@ -245,19 +232,29 @@ * * @subsection rwtest-fmtspec-ext-bits Bitset \%{b} * - * The argument is a pointer to an array of \c char. NOT YET COMPLETE + * The argument is a pointer to an array of \c char. Each bit in the + * array, ordered from MSB of the first element to LSB of the last + * element is converted into a sequence of '0' or '1' characters. * - * @subsection rwtest-fmtspec-ext-Ai Integer Array \%{Ao} \%{Ad} \%{Ax} + * @subsection rwtest-fmtspec-ext-Ai Integer Array \%{Ac} \%{Ao} \%{Ad} \%{Ax} * * The argument is a pointer to an array of integer type. The resulting * output is formatted as a string of comma-separated integer values. - * The notation of each integer value is specified by <tt>o</tt> for - * octal, <tt>d</tt> for decimal, or <tt>x</tt> for hexadcimal. An - * optional field width specifies the size of elements in the array - * (defaults to 1). An optional precision specifies the length of the - * array. In the alternate form, the resulting output for octal and - * hexidecimal integer values are prefixed with string literals - * <tt>0</tt> and <tt>0x</tt> respectively. + * The notation of each integer value is specified by <tt>c</tt> for + * characters, <<tt>o</tt> for octal, <tt>d</tt> for decimal, or + * <tt>x</tt> for hexadcimal. An optional field width specifies the + * size of elements in the array (defaults to 1). An optional precision + * specifies the length of the array. In the alternate form, the + * resulting output for octal and hexidecimal integer values are + * prefixed with string literals <tt>0</tt> and <tt>0x</tt> respectively. + * + * @subsection rwtest-fmtspec-ext-I Fixed-Width Integers \%{I<wn>} + * + * The argument is a value of an integer type. The directive requires + * two specifiers: the <tt>w</tt> specifier is one of 8, 16, 32, or 64 + * specifying the width of the integer value. The <tt>n</tt> specifier + * is one of \c d, \c o, \c x, or \c X specifying the notation of the + * resulting output. * * @subsection rwtest-fmtspec-ext-Is Stream State \%{Is} \%{\#Is} * @@ -321,10 +318,15 @@ * @subsection rwtest-fmtspec-ext-str String \%{S} * * The argument is a pointer to an object of the \c std::string class. - * If the pointer is null, the resulting output is the string literal - * <tt>(null)</tt>. Otherwise, the pointer \c P is converted by calling - * the \c P->c_str() function and the result is formatted identical to - * the <tt>%s</tt> character string directive. + * Otherwise, the pointer \c P is converted by calling the \c P->c_str() + * function and the result is formatted identical to the <tt>%s</tt> + * character string directive. + * + * @subsection rwtest-fmtspec-ext-wstr Wide String \%{lS} + * + * The argument is a pointer to an object of the \c std::wstring class. + * Conversion and formatting is performed as stated for the \c \%{S} + * directive. * * @subsection rwtest-fmtspec-ext-tm Time Structure \%{t} \%{\#t} * @@ -340,6 +342,19 @@ * "[range]" is only shown if the value is not in the valid range for * the respective member. * + * @subsection rwtest-fmtspec-ext-other Other Directives + * + * The following directives are also recognized by RWTest output + * functions but are heretofore undocumented. + * + * <ul> + * <li> \%{<n>} buffer size + * <li> \%{<n>$} positional parameter + * <li> \%{$<s>} environment variable + * <li> \%{?} \%{:} \%{;} conditionals + * <li> [EMAIL PROTECTED] nested format + * <li> \%{!} user-defined format + * </ul> */ #endif // RW_PRINTF_H_INCLUDED
Modified: stdcxx/branches/4.3.x/tests/include/rw_streambuf.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/include/rw_streambuf.h?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/include/rw_streambuf.h (original) +++ stdcxx/branches/4.3.x/tests/include/rw_streambuf.h Wed Jul 30 15:55:43 2008 @@ -461,10 +461,14 @@ { MyStreambuf* const self = _RWSTD_CONST_CAST (MyStreambuf*, this); - int inx = memfun_inx (which); - if (-1 == inx) + const int inx = memfun_inx (which); + if (inx < 0) return true; + // assert precondition to silence HP aCC 6/cadvise warning + // #20206-D: Out of bound access + RW_ASSERT ((_RWSTD_SIZE_T)inx < sizeof ncalls_ / sizeof *ncalls_); + // increment the counter tracking the number of calls made // to each member function; do so regardless of whether // an exception will be thrown below Modified: stdcxx/branches/4.3.x/tests/localization/22.locale.cons.mt.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/localization/22.locale.cons.mt.cpp?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/localization/22.locale.cons.mt.cpp (original) +++ stdcxx/branches/4.3.x/tests/localization/22.locale.cons.mt.cpp Wed Jul 30 15:55:43 2008 @@ -126,7 +126,7 @@ // verify that the locales were created correctly if ( std::locale::none == cat -#ifdef _MSC_VER +#if defined (_MSC_VER) || defined (__MINGW32__) || std::locale::messages == cat #endif || first == next) { @@ -141,7 +141,7 @@ const std::locale combined_2 (first, next, cat); if ( std::locale::none == cat -#ifdef _MSC_VER +#if defined (_MSC_VER) || defined (__MINGW32__) || std::locale::messages == cat #endif || first == next) { Modified: stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp (original) +++ stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp Wed Jul 30 15:55:43 2008 @@ -142,7 +142,7 @@ if (!tmb) tmb = &tmp; -#ifdef _MSC_VER +#if defined (_MSC_VER) || defined (__MINGW32__) // ms crt aborts if you use out of range values in debug if (tmb->tm_hour < 0 || 24 <= tmb->tm_hour) @@ -281,11 +281,11 @@ const std::size_t n = std::strftime (buf, bufsize, patbuf, tmb); -#else // if !defined (_MSC_VER) +#else // !_MSC_VER && !__MINGW32__ const std::size_t n = std::strftime (buf, bufsize, pat, tmb); -#endif // _MSC_VER +#endif // _MSC_VER || __MINGW32__ RW_ASSERT (n < bufsize); @@ -298,11 +298,12 @@ { static const std::tm tmp = std::tm (); -#if !defined (_RWSTD_NO_WCSFTIME_WCHAR_T_FMAT) && !defined (_MSC_VER) +#if !defined (_RWSTD_NO_WCSFTIME_WCHAR_T_FMAT) \ + && !defined (_MSC_VER) && !defined (__MINGW32__) std::size_t n = std::wcsftime (wbuf, bufsize, wpat, tmb ? tmb : &tmp); -#else // if defined (_RWSTD_NO_WCSFTIME) || defined (_MSC_VER) +#else // _RWSTD_NO_WCSFTIME || _MSC_VER || __MINGW32__ char pat [1024]; char buf [1024]; @@ -311,7 +312,7 @@ std::size_t n = rw_strftime (buf, bufsize, pat, tmb ? tmb : &tmp); widen (wbuf, buf); -#endif // _RWSTD_NO_WCSFTIME, _MSC_VER +#endif // _RWSTD_NO_WCSFTIME, _MSC_VER, __MINGW32__ RW_ASSERT (n < bufsize); Copied: stdcxx/branches/4.3.x/tests/regress/18.c.limits.stdcxx-988.cpp (from r674550, stdcxx/branches/4.2.x/tests/regress/18.c.limits.stdcxx-988.cpp) URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/regress/18.c.limits.stdcxx-988.cpp?p2=stdcxx/branches/4.3.x/tests/regress/18.c.limits.stdcxx-988.cpp&p1=stdcxx/branches/4.2.x/tests/regress/18.c.limits.stdcxx-988.cpp&r1=674550&r2=681237&rev=681237&view=diff ============================================================================== --- stdcxx/branches/4.2.x/tests/regress/18.c.limits.stdcxx-988.cpp (original) +++ stdcxx/branches/4.3.x/tests/regress/18.c.limits.stdcxx-988.cpp Wed Jul 30 15:55:43 2008 @@ -29,6 +29,7 @@ #include <cassert> #include <limits.h> + int main () { #if (defined __unix__ || defined __unix || defined unix) \ @@ -73,37 +74,41 @@ // shall provide values at least this large. A strictly conforming // application must not require a larger value for correct operation. - assert (_POSIX_ARG_MAX == 4096); - assert (_POSIX_CHILD_MAX == 25); - assert (_POSIX_HOST_NAME_MAX == 255); - assert (_POSIX_LINK_MAX == 8); - assert (_POSIX_LOGIN_NAME_MAX == 9); - assert (_POSIX_MAX_CANON == 255); - assert (_POSIX_MAX_INPUT == 255); - assert (_POSIX_NAME_MAX == 14); - assert (_POSIX_NGROUPS_MAX == 8); - assert (_POSIX_OPEN_MAX == 20); - assert (_POSIX_PATH_MAX == 256); - assert (_POSIX_PIPE_BUF == 512); - assert (_POSIX_RE_DUP_MAX == 255); - assert (_POSIX_SSIZE_MAX == 32767); - assert (_POSIX_STREAM_MAX == 8); - assert (_POSIX_SYMLINK_MAX == 255); - assert (_POSIX_SYMLOOP_MAX == 8); - assert (_POSIX_TTY_NAME_MAX == 9); - assert (_POSIX_TZNAME_MAX == 6); + // avoid testing specific values since they're not important here + // all we care is that the macros be defined (i.e., that thet are + // not somehow hidden or #undef'd by our implementation) + + assert (_POSIX_ARG_MAX != 0 /* == 4096 */); + assert (_POSIX_CHILD_MAX != 0 /* == 25 */); + assert (_POSIX_HOST_NAME_MAX != 0 /* == 255 */); + assert (_POSIX_LINK_MAX != 0 /* == 8 */); + assert (_POSIX_LOGIN_NAME_MAX != 0 /* == 9 */); + assert (_POSIX_MAX_CANON != 0 /* == 255 */); + assert (_POSIX_MAX_INPUT != 0 /* == 255 */); + assert (_POSIX_NAME_MAX != 0 /* == 14 */); + assert (_POSIX_NGROUPS_MAX != 0 /* == 8 */); + assert (_POSIX_OPEN_MAX != 0 /* == 20 */); + assert (_POSIX_PATH_MAX != 0 /* == 256 */); + assert (_POSIX_PIPE_BUF != 0 /* == 512 */); + assert (_POSIX_RE_DUP_MAX != 0 /* == 255 */); + assert (_POSIX_SSIZE_MAX != 0 /* == 32767 */); + assert (_POSIX_STREAM_MAX != 0 /* == 8 */); + assert (_POSIX_SYMLINK_MAX != 0 /* == 255 */); + assert (_POSIX_SYMLOOP_MAX != 0 /* == 8 */); + assert (_POSIX_TTY_NAME_MAX != 0 /* == 9 */); + assert (_POSIX_TZNAME_MAX != 0 /* == 6 */); # ifdef _POSIX2_VERSION - assert (_POSIX2_BC_BASE_MAX == 99); - assert (_POSIX2_BC_DIM_MAX == 2048); - assert (_POSIX2_BC_SCALE_MAX == 99); - assert (_POSIX2_BC_STRING_MAX == 1000); - assert (_POSIX2_CHARCLASS_NAME_MAX == 14); - assert (_POSIX2_COLL_WEIGHTS_MAX == 2); - assert (_POSIX2_EXPR_NEST_MAX == 32); - assert (_POSIX2_LINE_MAX == 2048); - assert (_POSIX2_RE_DUP_MAX == 255); + assert (_POSIX2_BC_BASE_MAX != 0 /* == 99 */); + assert (_POSIX2_BC_DIM_MAX != 0 /* == 2048 */); + assert (_POSIX2_BC_SCALE_MAX != 0 /* == 99 */); + assert (_POSIX2_BC_STRING_MAX != 0 /* == 1000 */); + assert (_POSIX2_CHARCLASS_NAME_MAX != 0 /* == 14 */); + assert (_POSIX2_COLL_WEIGHTS_MAX != 0 /* == 2 */); + assert (_POSIX2_EXPR_NEST_MAX != 0 /* == 32 */); + assert (_POSIX2_LINE_MAX != 0 /* == 2048 */); + assert (_POSIX2_RE_DUP_MAX != 0 /* == 255 */); # endif // _POSIX2_VERSION @@ -153,10 +158,17 @@ #ifndef _RWSTD_NO_LONG_LONG +# if !defined __HP_aCC || 199901L <= __STDC_VERSION__ + + // HP aCC defines LLONG_MAX and LLONG_MIN only in C99 mode + // i.e., with -AC99 + assert (LLONG_MIN != 0); assert (LLONG_MAX >= +9223372036854775807LL); assert (ULLONG_MAX >= 18446744073709551615ULL); +# endif + #endif // _RWSTD_NO_LONG_LONG return 0; Modified: stdcxx/branches/4.3.x/tests/src/printf.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/src/printf.cpp?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/src/printf.cpp (original) +++ stdcxx/branches/4.3.x/tests/src/printf.cpp Wed Jul 30 15:55:43 2008 @@ -1490,7 +1490,7 @@ RW_ASSERT (size_t (len) < sizeof buffer); -#ifdef _MSC_VER +#if defined (_MSC_VER) || defined (__MINGW32__) if (5 < len) { // remove redundant zeros from the exponent (if present) @@ -1502,7 +1502,7 @@ } } -#endif // _MSC_VER +#endif // _MSC_VER || __MINGW32__ if (-1 < len && 0 == _rw_bufcat (buf, buffer, size_t (len))) Modified: stdcxx/branches/4.3.x/tests/strings/21.string.erase.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/strings/21.string.erase.cpp?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/strings/21.string.erase.cpp (original) +++ stdcxx/branches/4.3.x/tests/strings/21.string.erase.cpp Wed Jul 30 15:55:43 2008 @@ -363,6 +363,8 @@ // pointer to the returned reference const String* ret_ptr = 0; + typedef typename String::size_type size_type; + try { switch (func.which_) { @@ -371,11 +373,12 @@ break; case Erase (size): - ret_ptr = &str.erase (tcase.off); + ret_ptr = &str.erase (size_type (tcase.off)); break; case Erase (size_size): - ret_ptr = &str.erase (tcase.off, tcase.size); + ret_ptr = &str.erase (size_type (tcase.off), + size_type (tcase.size)); break; case Erase (iter): Modified: stdcxx/branches/4.3.x/tests/utilities/20.meta.rel.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/utilities/20.meta.rel.cpp?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/utilities/20.meta.rel.cpp (original) +++ stdcxx/branches/4.3.x/tests/utilities/20.meta.rel.cpp Wed Jul 30 15:55:43 2008 @@ -392,7 +392,7 @@ TEST (std::is_convertible, int*, void*, true); -#ifdef _MSC_VER +#if defined (_MSC_VER) || defined (__IBMCPP__) // microsoft language extension allows this conversion, and that // extension is enabled by default. TEST (std::is_convertible, int (*)(), void*, true); Modified: stdcxx/branches/4.3.x/tests/utilities/20.operators.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/utilities/20.operators.cpp?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/tests/utilities/20.operators.cpp (original) +++ stdcxx/branches/4.3.x/tests/utilities/20.operators.cpp Wed Jul 30 15:55:43 2008 @@ -397,9 +397,11 @@ typedef RandomAccessIterator I; - typedef typename std::iterator_traits<I>::difference_type DiffT; - - RandomNumberGenerator<DiffT> rndgen; +#if !defined _RWSTD_NO_DEBUG_ITER + RandomNumberGenerator<typename I::difference_type> rndgen; +#else + RandomNumberGenerator<T> rndgen; +#endif std::random_shuffle (I (), I ()); std::random_shuffle (I (), I (), rndgen); Modified: stdcxx/branches/4.3.x/util/gencat.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/util/gencat.cpp?rev=681237&r1=681236&r2=681237&view=diff ============================================================================== --- stdcxx/branches/4.3.x/util/gencat.cpp (original) +++ stdcxx/branches/4.3.x/util/gencat.cpp Wed Jul 30 15:55:43 2008 @@ -151,7 +151,7 @@ cmd += rc_name; cmd += " -o "; cmd += res_name; - cmd += " && gcc -shared -o "; + cmd += " && gcc -shared -mno-cygwin -o "; cmd += dll_name; cmd += ' '; cmd += res_name;