vfwscanf.c (125283) | vfwscanf.c (128002) |
---|---|
1/*- 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Chris Torek. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 27 unchanged lines hidden (view full) --- 36 37#include <sys/cdefs.h> 38#if 0 39#if defined(LIBC_SCCS) && !defined(lint) 40static char sccsid[] = "@(#)vfscanf.c 8.1 (Berkeley) 6/4/93"; 41#endif /* LIBC_SCCS and not lint */ 42__FBSDID("FreeBSD: src/lib/libc/stdio/vfscanf.c,v 1.35 2004/01/31 23:16:09 das Exp "); 43#endif | 1/*- 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Chris Torek. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 27 unchanged lines hidden (view full) --- 36 37#include <sys/cdefs.h> 38#if 0 39#if defined(LIBC_SCCS) && !defined(lint) 40static char sccsid[] = "@(#)vfscanf.c 8.1 (Berkeley) 6/4/93"; 41#endif /* LIBC_SCCS and not lint */ 42__FBSDID("FreeBSD: src/lib/libc/stdio/vfscanf.c,v 1.35 2004/01/31 23:16:09 das Exp "); 43#endif |
44__FBSDID("$FreeBSD: head/lib/libc/stdio/vfwscanf.c 125283 2004-01-31 23:18:53Z das $"); | 44__FBSDID("$FreeBSD: head/lib/libc/stdio/vfwscanf.c 128002 2004-04-07 09:55:05Z tjr $"); |
45 46#include "namespace.h" 47#include <ctype.h> 48#include <inttypes.h> 49#include <stdio.h> 50#include <stdlib.h> 51#include <stddef.h> 52#include <stdarg.h> --- 90 unchanged lines hidden (view full) --- 143 wchar_t buf[BUF]; /* buffer for numeric conversions */ 144 const wchar_t *ccls; /* character class start */ 145 const wchar_t *ccle; /* character class end */ 146 int cclcompl; /* ccl is complemented? */ 147 wint_t wi; /* handy wint_t */ 148 char *mbp; /* multibyte string pointer for %c %s %[ */ 149 size_t nconv; /* number of bytes in mb. conversion */ 150 char mbbuf[MB_LEN_MAX]; /* temporary mb. character buffer */ | 45 46#include "namespace.h" 47#include <ctype.h> 48#include <inttypes.h> 49#include <stdio.h> 50#include <stdlib.h> 51#include <stddef.h> 52#include <stdarg.h> --- 90 unchanged lines hidden (view full) --- 143 wchar_t buf[BUF]; /* buffer for numeric conversions */ 144 const wchar_t *ccls; /* character class start */ 145 const wchar_t *ccle; /* character class end */ 146 int cclcompl; /* ccl is complemented? */ 147 wint_t wi; /* handy wint_t */ 148 char *mbp; /* multibyte string pointer for %c %s %[ */ 149 size_t nconv; /* number of bytes in mb. conversion */ 150 char mbbuf[MB_LEN_MAX]; /* temporary mb. character buffer */ |
151 static const mbstate_t initial; 152 mbstate_t mbs; |
|
151 152 /* `basefix' is used to avoid `if' tests in the integer scanner */ 153 static short basefix[17] = 154 { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; 155 156 nassigned = 0; 157 nconversions = 0; 158 nread = 0; --- 215 unchanged lines hidden (view full) --- 374 goto input_failure; 375 nread += n; 376 if (!(flags & SUPPRESS)) 377 nassigned++; 378 } else { 379 if (!(flags & SUPPRESS)) 380 mbp = va_arg(ap, char *); 381 n = 0; | 153 154 /* `basefix' is used to avoid `if' tests in the integer scanner */ 155 static short basefix[17] = 156 { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; 157 158 nassigned = 0; 159 nconversions = 0; 160 nread = 0; --- 215 unchanged lines hidden (view full) --- 376 goto input_failure; 377 nread += n; 378 if (!(flags & SUPPRESS)) 379 nassigned++; 380 } else { 381 if (!(flags & SUPPRESS)) 382 mbp = va_arg(ap, char *); 383 n = 0; |
384 mbs = initial; |
|
382 while (width != 0 && 383 (wi = __fgetwc(fp)) != WEOF) { 384 if (width >= MB_CUR_MAX && 385 !(flags & SUPPRESS)) { | 385 while (width != 0 && 386 (wi = __fgetwc(fp)) != WEOF) { 387 if (width >= MB_CUR_MAX && 388 !(flags & SUPPRESS)) { |
386 nconv = wcrtomb(mbp, wi, NULL); | 389 nconv = wcrtomb(mbp, wi, &mbs); |
387 if (nconv == (size_t)-1) 388 goto input_failure; 389 } else { 390 nconv = wcrtomb(mbbuf, wi, | 390 if (nconv == (size_t)-1) 391 goto input_failure; 392 } else { 393 nconv = wcrtomb(mbbuf, wi, |
391 NULL); | 394 &mbs); |
392 if (nconv == (size_t)-1) 393 goto input_failure; 394 if (nconv > width) { 395 __ungetwc(wi, fp); 396 break; 397 } 398 if (!(flags & SUPPRESS)) 399 memcpy(mbp, mbbuf, --- 38 unchanged lines hidden (view full) --- 438 if (n == 0) 439 goto match_failure; 440 *p = 0; 441 nassigned++; 442 } else { 443 if (!(flags & SUPPRESS)) 444 mbp = va_arg(ap, char *); 445 n = 0; | 395 if (nconv == (size_t)-1) 396 goto input_failure; 397 if (nconv > width) { 398 __ungetwc(wi, fp); 399 break; 400 } 401 if (!(flags & SUPPRESS)) 402 memcpy(mbp, mbbuf, --- 38 unchanged lines hidden (view full) --- 441 if (n == 0) 442 goto match_failure; 443 *p = 0; 444 nassigned++; 445 } else { 446 if (!(flags & SUPPRESS)) 447 mbp = va_arg(ap, char *); 448 n = 0; |
449 mbs = initial; |
|
446 while ((wi = __fgetwc(fp)) != WEOF && 447 width != 0 && INCCL(wi)) { 448 if (width >= MB_CUR_MAX && 449 !(flags & SUPPRESS)) { | 450 while ((wi = __fgetwc(fp)) != WEOF && 451 width != 0 && INCCL(wi)) { 452 if (width >= MB_CUR_MAX && 453 !(flags & SUPPRESS)) { |
450 nconv = wcrtomb(mbp, wi, NULL); | 454 nconv = wcrtomb(mbp, wi, &mbs); |
451 if (nconv == (size_t)-1) 452 goto input_failure; 453 } else { 454 nconv = wcrtomb(mbbuf, wi, | 455 if (nconv == (size_t)-1) 456 goto input_failure; 457 } else { 458 nconv = wcrtomb(mbbuf, wi, |
455 NULL); | 459 &mbs); |
456 if (nconv == (size_t)-1) 457 goto input_failure; 458 if (nconv > width) 459 break; 460 if (!(flags & SUPPRESS)) 461 memcpy(mbp, mbbuf, 462 nconv); 463 } --- 34 unchanged lines hidden (view full) --- 498 } 499 if (wi != WEOF) 500 __ungetwc(wi, fp); 501 *p = '\0'; 502 nassigned++; 503 } else { 504 if (!(flags & SUPPRESS)) 505 mbp = va_arg(ap, char *); | 460 if (nconv == (size_t)-1) 461 goto input_failure; 462 if (nconv > width) 463 break; 464 if (!(flags & SUPPRESS)) 465 memcpy(mbp, mbbuf, 466 nconv); 467 } --- 34 unchanged lines hidden (view full) --- 502 } 503 if (wi != WEOF) 504 __ungetwc(wi, fp); 505 *p = '\0'; 506 nassigned++; 507 } else { 508 if (!(flags & SUPPRESS)) 509 mbp = va_arg(ap, char *); |
510 mbs = initial; |
|
506 while ((wi = __fgetwc(fp)) != WEOF && 507 width != 0 && 508 !iswspace(wi)) { 509 if (width >= MB_CUR_MAX && 510 !(flags & SUPPRESS)) { | 511 while ((wi = __fgetwc(fp)) != WEOF && 512 width != 0 && 513 !iswspace(wi)) { 514 if (width >= MB_CUR_MAX && 515 !(flags & SUPPRESS)) { |
511 nconv = wcrtomb(mbp, wi, NULL); | 516 nconv = wcrtomb(mbp, wi, &mbs); |
512 if (nconv == (size_t)-1) 513 goto input_failure; 514 } else { 515 nconv = wcrtomb(mbbuf, wi, | 517 if (nconv == (size_t)-1) 518 goto input_failure; 519 } else { 520 nconv = wcrtomb(mbbuf, wi, |
516 NULL); | 521 &mbs); |
517 if (nconv == (size_t)-1) 518 goto input_failure; 519 if (nconv > width) 520 break; 521 if (!(flags & SUPPRESS)) 522 memcpy(mbp, mbbuf, 523 nconv); 524 } --- 351 unchanged lines hidden --- | 522 if (nconv == (size_t)-1) 523 goto input_failure; 524 if (nconv > width) 525 break; 526 if (!(flags & SUPPRESS)) 527 memcpy(mbp, mbbuf, 528 nconv); 529 } --- 351 unchanged lines hidden --- |