glibc/localedata/tests-mbwc/tst_swscanf.c

138 lines
3.1 KiB
C
Raw Normal View History

/*
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)
{
fprintf (stdout, " val_S[ 0 ] = 0x%lx\n",
(unsigned long int) val_S[0]);
}
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))
{
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;
}