2000-06-27 12:14:09 +00:00
|
|
|
/*
|
|
|
|
SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...);
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define TST_FUNCTION swscanf
|
|
|
|
|
|
|
|
#include "tsp_common.c"
|
|
|
|
#include "dat_swscanf.c"
|
|
|
|
|
|
|
|
int
|
|
|
|
tst_swscanf (FILE * fp, int debug_flg)
|
|
|
|
{
|
|
|
|
TST_DECL_VARS (int);
|
|
|
|
wchar_t *ws;
|
|
|
|
wchar_t *fmt;
|
|
|
|
int val_int1;
|
|
|
|
unsigned val_int2;
|
|
|
|
float val_flt;
|
|
|
|
char val_c;
|
|
|
|
char val_s[MBSSIZE * 3];
|
|
|
|
wchar_t val_S[WCSSIZE * 3], *exp_S;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
TST_DO_TEST (swscanf)
|
|
|
|
{
|
|
|
|
TST_HEAD_LOCALE (swscanf, S_SWSCANF);
|
|
|
|
TST_DO_REC (swscanf)
|
|
|
|
{
|
|
|
|
TST_GET_ERRET (swscanf);
|
|
|
|
ws = TST_INPUT (swscanf).ws;
|
|
|
|
fmt = TST_INPUT (swscanf).fmt;
|
|
|
|
val_int1 = val_int2 = val_flt = val_c = 0;
|
|
|
|
memset (val_s, 0, sizeof (val_s));
|
|
|
|
memset (val_S, 0, sizeof (val_S));
|
|
|
|
|
|
|
|
TST_CLEAR_ERRNO;
|
|
|
|
|
|
|
|
if (TST_INPUT (swscanf).wch)
|
|
|
|
{
|
|
|
|
ret = swscanf (ws, fmt, val_S);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ret =
|
|
|
|
swscanf (ws, fmt, &val_int1, &val_int2, &val_flt, &val_c, val_s);
|
|
|
|
}
|
|
|
|
|
|
|
|
TST_SAVE_ERRNO;
|
|
|
|
|
|
|
|
if (debug_flg)
|
|
|
|
{ /* seems fprintf doesn't update errno */
|
|
|
|
fprintf (stdout, "swscanf() [ %s : %d ] ret = %d\n", locale,
|
|
|
|
rec + 1, ret);
|
|
|
|
fprintf (stdout, " errno = %d\n",
|
|
|
|
errno_save);
|
|
|
|
fprintf (stdout, " collate = %s\n",
|
|
|
|
(setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE,
|
|
|
|
NULL) : "");
|
|
|
|
|
|
|
|
if (TST_INPUT (swscanf).wch)
|
|
|
|
{
|
2000-06-28 04:27:24 +00:00
|
|
|
fprintf (stdout, " val_S[ 0 ] = 0x%lx\n",
|
2002-08-25 08:44:43 +00:00
|
|
|
(unsigned long int) val_S[0]);
|
2000-06-27 12:14:09 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
fprintf (stdout, " val_int1 = %d\n",
|
|
|
|
val_int1);
|
|
|
|
fprintf (stdout, " val_int2 = %d\n",
|
|
|
|
val_int2);
|
|
|
|
fprintf (stdout, " val_flt = %f\n",
|
|
|
|
val_flt);
|
|
|
|
fprintf (stdout, " val_c = %c\n",
|
|
|
|
val_c);
|
|
|
|
fprintf (stdout, " val_s = %s\n",
|
|
|
|
val_s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
TST_IF_RETURN (S_SWSCANF)
|
|
|
|
{
|
|
|
|
};
|
|
|
|
|
|
|
|
if (errno == 0 && TST_INPUT (swscanf).wch)
|
|
|
|
{
|
|
|
|
for (exp_S = TST_EXPECT (swscanf).val_S, i = 0; i < WCSSIZE * 3;
|
|
|
|
i++)
|
|
|
|
{
|
|
|
|
if (val_S[i] == L'\0' || exp_S[i] == L'\0')
|
|
|
|
{
|
|
|
|
if (val_S[i] != exp_S[i] && TST_INPUT (swscanf).wch == 'C')
|
|
|
|
{
|
|
|
|
err_count++;
|
|
|
|
Result (C_FAILURE, S_SWSCANF, CASE_4,
|
|
|
|
"the converted wide-char string is different"
|
|
|
|
" from an expected value.");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (val_S[i] != exp_S[i])
|
|
|
|
{
|
|
|
|
err_count++;
|
|
|
|
Result (C_FAILURE, S_SWSCANF, CASE_4,
|
|
|
|
"the converted wide-char string is different from"
|
|
|
|
" an expected value.");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Result (C_SUCCESS, S_SWSCANF, CASE_4, MS_PASSED);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (errno == 0 && !TST_INPUT (swscanf).wch)
|
|
|
|
{
|
Break some lines before not after operators.
The GNU Coding Standards specify that line breaks in expressions
should go before an operator, not after one. This patch fixes various
code to do this. It only changes code that appears to be mostly
following GNU style anyway, not files and directories with
substantially different formatting. It is not exhaustive even for
files using GNU style (for example, changes to sysdeps files are
deferred for subsequent cleanups). Some files changed are shared with
gnulib, but most are specific to glibc. Changes were made manually,
with places to change found by grep (so some cases, e.g. where the
operator was followed by a comment at end of line, are particularly
liable to have been missed by grep, but I did include cases where the
operator was followed by backslash-newline).
This patch generally does not attempt to address other coding style
issues in the expressions changed (for example, missing spaces before
'(', or lack of parentheses to ensure indentation of continuation
lines properly reflects operator precedence).
Tested for x86_64, and with build-many-glibcs.py.
* benchtests/bench-memmem.c (simple_memmem): Break lines before
rather than after operators.
* benchtests/bench-skeleton.c (TIMESPEC_AFTER): Likewise.
* crypt/md5.c (md5_finish_ctx): Likewise.
* crypt/sha256.c (__sha256_finish_ctx): Likewise.
* crypt/sha512.c (__sha512_finish_ctx): Likewise.
* elf/cache.c (load_aux_cache): Likewise.
* elf/dl-load.c (open_verify): Likewise.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* elf/readelflib.c (process_elf_file): Likewise.
* elf/rtld.c (dl_main): Likewise.
* elf/sprof.c (generate_call_graph): Likewise.
* hurd/ctty-input.c (_hurd_ctty_input): Likewise.
* hurd/ctty-output.c (_hurd_ctty_output): Likewise.
* hurd/dtable.c (reauth_dtable): Likewise.
* hurd/getdport.c (__getdport): Likewise.
* hurd/hurd/signal.h (_hurd_interrupted_rpc_timeout): Likewise.
* hurd/hurd/sigpreempt.h (HURD_PREEMPT_SIGNAL_P): Likewise.
* hurd/hurdfault.c (_hurdsig_fault_catch_exception_raise):
Likewise.
* hurd/hurdioctl.c (fioctl): Likewise.
* hurd/hurdselect.c (_hurd_select): Likewise.
* hurd/hurdsig.c (_hurdsig_abort_rpcs): Likewise.
(STOPSIGS): Likewise.
* hurd/hurdstartup.c (_hurd_startup): Likewise.
* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Likewise.
* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Likewise.
* hurd/msgportdemux.c (msgport_server): Likewise.
* hurd/setauth.c (_hurd_setauth): Likewise.
* include/features.h (__GLIBC_USE_DEPRECATED_SCANF): Likewise.
* libio/libioP.h [IO_DEBUG] (CHECK_FILE): Likewise.
* locale/programs/ld-ctype.c (set_class_defaults): Likewise.
* localedata/tests-mbwc/tst_swscanf.c (tst_swscanf): Likewise.
* login/tst-utmp.c (do_check): Likewise.
(simulate_login): Likewise.
* mach/lowlevellock.h (lll_lock): Likewise.
(lll_trylock): Likewise.
* math/test-fenv.c (ALL_EXC): Likewise.
* math/test-fenvinline.c (ALL_EXC): Likewise.
* misc/sys/cdefs.h (__attribute_deprecated_msg__): Likewise.
* nis/nis_call.c (__do_niscall3): Likewise.
* nis/nis_callback.c (cb_prog_1): Likewise.
* nis/nis_defaults.c (searchaccess): Likewise.
* nis/nis_findserv.c (__nis_findfastest_with_timeout): Likewise.
* nis/nis_ismember.c (internal_ismember): Likewise.
* nis/nis_local_names.c (nis_local_principal): Likewise.
* nis/nss_nis/nis-rpc.c (_nss_nis_getrpcbyname_r): Likewise.
* nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_getnetgrent_r):
Likewise.
* nis/ypclnt.c (yp_match): Likewise.
(yp_first): Likewise.
(yp_next): Likewise.
(yp_master): Likewise.
(yp_order): Likewise.
* nscd/hstcache.c (cache_addhst): Likewise.
* nscd/initgrcache.c (addinitgroupsX): Likewise.
* nss/nss_compat/compat-pwd.c (copy_pwd_changes): Likewise.
(internal_getpwuid_r): Likewise.
* nss/nss_compat/compat-spwd.c (copy_spwd_changes): Likewise.
* posix/glob.h (__GLOB_FLAGS): Likewise.
* posix/regcomp.c (peek_token): Likewise.
(peek_token_bracket): Likewise.
(parse_expression): Likewise.
* posix/regexec.c (sift_states_iter_mb): Likewise.
(check_node_accept_bytes): Likewise.
* posix/tst-spawn3.c (do_test): Likewise.
* posix/wordexp-test.c (testit): Likewise.
* posix/wordexp.c (parse_tilde): Likewise.
(exec_comm): Likewise.
* posix/wordexp.h (__WRDE_FLAGS): Likewise.
* resource/vtimes.c (TIMEVAL_TO_VTIMES): Likewise.
* setjmp/sigjmp.c (__sigjmp_save): Likewise.
* stdio-common/printf_fp.c (__printf_fp_l): Likewise.
* stdio-common/tst-fileno.c (do_test): Likewise.
* stdio-common/vfprintf-internal.c (vfprintf): Likewise.
* stdlib/strfmon_l.c (__vstrfmon_l_internal): Likewise.
* stdlib/strtod_l.c (round_and_return): Likewise.
(____STRTOF_INTERNAL): Likewise.
* stdlib/tst-strfrom.h (TEST_STRFROM): Likewise.
* string/strcspn.c (STRCSPN): Likewise.
* string/test-memmem.c (simple_memmem): Likewise.
* termios/tcsetattr.c (tcsetattr): Likewise.
* time/alt_digit.c (_nl_parse_alt_digit): Likewise.
* time/asctime.c (asctime_internal): Likewise.
* time/strptime_l.c (__strptime_internal): Likewise.
* time/sys/time.h (timercmp): Likewise.
* time/tzfile.c (__tzfile_compute): Likewise.
2019-02-22 01:32:36 +00:00
|
|
|
if (val_int1 != TST_EXPECT (swscanf).val_int
|
|
|
|
|| val_int2 != TST_EXPECT (swscanf).val_uns
|
|
|
|
|| val_flt != TST_EXPECT (swscanf).val_flt
|
|
|
|
|| val_c != TST_EXPECT (swscanf).val_c
|
|
|
|
|| strcmp (val_s, TST_EXPECT (swscanf).val_s))
|
2000-06-27 12:14:09 +00:00
|
|
|
{
|
|
|
|
err_count++;
|
|
|
|
Result (C_FAILURE, S_SWSCANF, CASE_3,
|
|
|
|
"the converted values are different from expected values.");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Result (C_SUCCESS, S_SWSCANF, CASE_3, MS_PASSED);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return err_count;
|
|
|
|
}
|