1997-01-26 06:33:35 +01:00
|
|
|
/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
|
|
|
|
This file is part of the GNU C Library.
|
1995-02-18 02:27:10 +01:00
|
|
|
|
1997-01-26 06:33:35 +01:00
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public License as
|
|
|
|
published by the Free Software Foundation; either version 2 of the
|
|
|
|
License, or (at your option) any later version.
|
1995-02-18 02:27:10 +01:00
|
|
|
|
1997-01-26 06:33:35 +01:00
|
|
|
The GNU C 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
|
|
|
|
Library General Public License for more details.
|
1995-02-18 02:27:10 +01:00
|
|
|
|
1997-01-26 06:33:35 +01:00
|
|
|
You should have received a copy of the GNU Library General Public
|
|
|
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
|
|
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
Boston, MA 02111-1307, USA. */
|
1995-02-18 02:27:10 +01:00
|
|
|
|
|
|
|
#ifdef BSD
|
|
|
|
#include </usr/include/stdio.h>
|
|
|
|
#else
|
|
|
|
#include <stdio.h>
|
|
|
|
#endif
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
|
|
int
|
1997-01-26 06:33:35 +01:00
|
|
|
main (int argc, char **argv)
|
1995-02-18 02:27:10 +01:00
|
|
|
{
|
|
|
|
char buf[BUFSIZ];
|
|
|
|
FILE *in = stdin, *out = stdout;
|
1996-02-20 00:14:44 +01:00
|
|
|
int x;
|
|
|
|
|
|
|
|
if (sscanf ("0", "%d", &x) != 1)
|
|
|
|
exit (EXIT_FAILURE);
|
1995-02-18 02:27:10 +01:00
|
|
|
|
1996-03-12 10:50:46 +01:00
|
|
|
sscanf ("conversion] Zero flag Ze]ro#\n", "%*[^]] %[^#]\n", buf);
|
|
|
|
if (strcmp (buf, "] Zero flag Ze]ro") != 0)
|
|
|
|
{
|
1996-07-17 21:32:22 +02:00
|
|
|
fputs ("test failed!\n", stderr);
|
1996-03-12 10:50:46 +01:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
1995-02-18 02:27:10 +01:00
|
|
|
if (argc == 2 && !strcmp (argv[1], "-opipe"))
|
|
|
|
{
|
|
|
|
out = popen ("/bin/cat", "w");
|
|
|
|
if (out == NULL)
|
|
|
|
{
|
|
|
|
perror ("popen: /bin/cat");
|
|
|
|
exit (EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (argc == 3 && !strcmp (argv[1], "-ipipe"))
|
|
|
|
{
|
|
|
|
sprintf (buf, "/bin/cat %s", argv[2]);
|
|
|
|
in = popen (buf, "r");
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
char name[50];
|
|
|
|
fprintf (out,
|
|
|
|
"sscanf (\"thompson\", \"%%s\", name) == %d, name == \"%s\"\n",
|
|
|
|
sscanf ("thompson", "%s", name),
|
|
|
|
name);
|
1996-07-17 21:32:22 +02:00
|
|
|
if (strcmp (name, "thompson") != 0)
|
|
|
|
return 1;
|
1995-02-18 02:27:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
fputs ("Testing scanf (vfscanf)\n", out);
|
|
|
|
|
|
|
|
fputs ("Test 1:\n", out);
|
|
|
|
{
|
|
|
|
int n, i;
|
|
|
|
float x;
|
|
|
|
char name[50];
|
|
|
|
n = fscanf (in, "%d%f%s", &i, &x, name);
|
|
|
|
fprintf (out, "n = %d, i = %d, x = %f, name = \"%.50s\"\n",
|
|
|
|
n, i, x, name);
|
1996-07-17 21:32:22 +02:00
|
|
|
if (n != 3 || i != 25 || x != 5.432F || strcmp (name, "thompson"))
|
|
|
|
return 1;
|
1995-02-18 02:27:10 +01:00
|
|
|
}
|
|
|
|
fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
|
1996-07-17 21:32:22 +02:00
|
|
|
if (strcmp (buf, "\n"))
|
|
|
|
return 1;
|
1995-02-18 02:27:10 +01:00
|
|
|
fputs ("Test 2:\n", out);
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
float x;
|
|
|
|
char name[50];
|
|
|
|
(void) fscanf (in, "%2d%f%*d %[0123456789]", &i, &x, name);
|
|
|
|
fprintf (out, "i = %d, x = %f, name = \"%.50s\"\n", i, x, name);
|
1996-07-17 21:32:22 +02:00
|
|
|
if (i != 56 || x != 789.0F || strcmp(name, "56"))
|
|
|
|
return 1;
|
1995-02-18 02:27:10 +01:00
|
|
|
}
|
|
|
|
fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
|
1996-07-17 21:32:22 +02:00
|
|
|
if (strcmp (buf, "a72\n"))
|
|
|
|
return 1;
|
1995-02-18 02:27:10 +01:00
|
|
|
fputs ("Test 3:\n", out);
|
|
|
|
{
|
1996-07-17 21:32:22 +02:00
|
|
|
static struct {
|
|
|
|
int count;
|
|
|
|
float quant;
|
|
|
|
const char *units;
|
|
|
|
const char *item;
|
|
|
|
} ok[] = {
|
|
|
|
{ 3, 2.0F, "quarts", "oil" },
|
|
|
|
{ 2, -12.8F, "degrees", "" },
|
|
|
|
{ 0, 0.0F, "", "" },
|
|
|
|
{ 3, 10.0F, "LBS", "fertilizer" },
|
|
|
|
{ 3, 100.0F, "rgs", "energy" },
|
|
|
|
{ -1, 0.0F, "", "" }};
|
1997-01-26 06:33:35 +01:00
|
|
|
size_t rounds = 0;
|
1995-02-18 02:27:10 +01:00
|
|
|
float quant;
|
|
|
|
char units[21], item[21];
|
|
|
|
while (!feof (in) && !ferror (in))
|
|
|
|
{
|
|
|
|
int count;
|
1996-07-17 21:32:22 +02:00
|
|
|
|
|
|
|
if (rounds++ >= sizeof (ok) / sizeof (ok[0]))
|
|
|
|
return 1;
|
|
|
|
|
1995-02-18 02:27:10 +01:00
|
|
|
quant = 0.0;
|
|
|
|
units[0] = item[0] = '\0';
|
|
|
|
count = fscanf (in, "%f%20s of %20s", &quant, units, item);
|
|
|
|
(void) fscanf (in, "%*[^\n]");
|
|
|
|
fprintf (out, "count = %d, quant = %f, item = %.21s, units = %.21s\n",
|
|
|
|
count, quant, item, units);
|
1996-07-17 21:32:22 +02:00
|
|
|
if (count != ok[rounds-1].count || quant != ok[rounds-1].quant
|
|
|
|
|| strcmp (item, ok[rounds-1].item)
|
|
|
|
|| strcmp (units, ok[rounds-1].units))
|
|
|
|
return 1;
|
1995-02-18 02:27:10 +01:00
|
|
|
}
|
|
|
|
}
|
1996-07-17 21:32:22 +02:00
|
|
|
buf[0] = '\0';
|
1995-02-18 02:27:10 +01:00
|
|
|
fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
|
1996-07-17 21:32:22 +02:00
|
|
|
if (strcmp (buf, ""))
|
|
|
|
return 1;
|
1995-02-18 02:27:10 +01:00
|
|
|
|
|
|
|
if (out != stdout)
|
|
|
|
pclose (out);
|
|
|
|
|
update from main archive 970225
1997-02-24 23:05 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
* malloc/malloc.c (malloc_get_state): New function.
Saves global malloc state to an opaque data structure which
is dynamically allocated in the heap.
* malloc/malloc.c (malloc_set_state): New function.
Restore previously obtained state.
* malloc/malloc.h: Add declaration of malloc_get_state()
and malloc_set_state().
1997-02-24 23:27 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/s_cbrtl.c: Shift B1_EXP value to right
position.
1997-02-24 17:38 Ulrich Drepper <drepper@cygnus.com>
* misc/error.c: Make error and error_at_line weak aliases of
__error and __error_at_line respectively.
Suggested by David Mosberger-Tang <davidm@AZStarNet.COM>.
* sysdeps/unix/sysv/linux/i386/socket.S: Update copyright.
1997-02-22 11:30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/ldd.bash.in: Run the program directly, not as argument
to the dynamic linker, if it contains an interpreter segment.
* elf/ldd.sh.in: Likewise.
* elf/rtld.c (dl_main): In verify mode check whether the dynamic
object contains an interpreter segment and exit with 2 if not.
1997-02-23 01:23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makefile (distribute): Remove nsswitch.h, netgroup.h, mcheck.h
and xlocale.h. Make-dist adds them automagically.
1997-02-22 12:25 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locale/C-time.c (_nl_C_LC_TIME): Add missing entry for
time-era-num-entries.
1997-02-06 13:49 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* rellns-sh: No need to check for existance of first parameter.
1997-02-24 15:20 Jonathan T. Agnew <jtagnew@amherst.edu>
* glibcbug.in: Don't mention destination on MAIL_AGENT command line
to avoid duplicate mail.
1997-02-24 03:51 Ulrich Drepper <drepper@cygnus.com>
* Makefile (distribute): Add isomac.c.
(tests): Run isomac test.
* features.h (__USE_ISOC9X): New macro.
* catgets/catgets.c: Don't use global variable `optind'. Instead
use result computed by argp_parse.
* db/makedb: Likewise.
* locale/programs/locale.c: Likewise.
* locale/programs/localedef.c: Likewise.
* libio/stdio.h: Rewrite. Make it more readable and add comments.
* libio/clearerr.c: Remove clearerr_locked alias.
* libio/feof.c: Remove feof_locked alias.
* libio/ferror.c: Remove feof_locked alias.
* libio/fileno.c: Remove fileno_locked alias.
* libio/fputc.c: Remove fputc_locked alias.
* libio/getc.c: Remove getc_locked alias.
* libio/getchar.c: Remove getchar_locked alias.
* libio/iofflush.c: Remove fflush_locked alias.
* libio/putc.c: Remove putc_locked alias.
* libio/putc.c: Remove putchar_locked alias.
* stdio-common/printf_fp.c: When number is inifinity print INF
or inf depending on case of specifier. Same for NaN where NAN
or nan is printed. Specified in ISO C 9X.
* misc/sys/cdefs.h (__restrict): Define to empty string for now.
* stdio/stdio.h: Add __restrict to prototypes where necessary.
* libio/stdio.h: Likewise.
* stdlib/stdlib.h: Likewise.
* string/string.h: Likewise.
* time/time.h: Likewise.
* wcsmbs/wchar.h: Likewise.
* stdlib/strtod.c: Change to recognize INF, INFINITY, NAN, and
NAN(...).
* sysdeps/ieee754/huge_val.h: Define HUGE_VALF and HUGE_VALL instead
of HUGE_VALf and HUGE_VALL.
* stdlib/strtof.c (FLOAT_HUGE_VAL): Use standard name HUGE_VALF
instead of HUGE_VALf.
* wcsmbs/wcstof.c: Likewise.
* stdlib/strtold.c (FLOAT_HUGE_VAL): Use standard name HUGE_VALL
instead of HUGE_VALl.
* wcsmbs/wcstold.c: Likewise.
* sysdeps/posix/gai_strerror.c: Use size_t for counter variable to
avoid warning.
* wcsmbs/Makefile (routines): Add wcscasecmp and wcsncase.
* wcsmbs/wchar.h: Add prototypes for wcscasecmp and wcsncase.
* wcsmbs/wcscasecmp.c: New file.
* wcsmbs/wcsncase.c: New file.
* stdlib/strtol.c: Define wide character quad word functions as
wcstoll and wcstoull and normal versions as strtoll and strtoull.
* wcsmbs/wchar.h: Add prototypes for wcstoll and wcstoull.
* wcsmbs/wcstoq: Renamed to wcstoll.c.
* wcsmbs/wcstouq: Renamed to wcstoull.c.
* wcsmbs/wcstoll.c: Renamed from wcstoq.c. Make wcstoq a weak
alias of wcstoll.
* wcsmbs/wcstoull.c: Renamed from wcstouq.c. Make wcstouq a weak
alias of wcstoull.
* wcsmbs/Makefile (routines): Replace wcstoq and wcstouq by
wcstoll and wcstoull respectively.
* stdlib/strtoq.c: Rename to strtoll.c.
* stdlib/strtouq.c: Rename to strtoull.c.
* stdlib/strtoll.c: Renamed from strtoq.c. Make strtoq a weak
alias of strtoll.
* stdlib/strtoll.c: Renamed from strtouq.c. Make strtouq a weak
alias of strtoull.
* stdlib/Makefile (routines): Replace strtoq and strtouq by
strtoll and strtoull respectively.
* stdio-common/vfscanf.c: Don't use __strtoq_internal and
__strtouq_internal but instead __strtoll_internal and
__strtoull_internal respectively.
* stdlib/stdlib.h (strtoq): Use __internal_strtoll in inline version.
(strtouq): Similar with __internal_strtoull.
* wcsmbs/wchar.h (wcstoq): Use __internal_wcstoll in inline version.
(wcstouq): Similar with __internal_wcstoull.
1997-02-23 04:38 Ulrich Drepper <drepper@cygnus.com>
* stdlib/strtol.c (STRTOL): It is not illegal to parse a minus
sign in the strtouXX functions. The results gets simply negated.
* stdio-common/tstscanf.c: Add testcase for above case.
* stdlib/tst-strtol.c: Correct tests.
* manual/stdio-fp.c: New file. Generate output for example program
in stdio.texi.
* stdio-common/Makefile (routines): Add printf_fphex.
* stdio-common/vfprintf.c: Add handling of %a and %A specifier.
* stdio-common/printf_fphex.c: New file. Implement %a and %A
specifier.
1997-02-22 03:01 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/timebits.h (CLK_TCK): Don't defined if
__STRICT_ANSI__.
* math/math.h: Prevent definition of struct exception when using
C++.
1997-02-22 01:45 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/syscalls.list: Dup takes only one argument.
Reported by Greg McGary.
1997-02-21 00:22 Miles Bader <miles@gnu.ai.mit.edu>
1997-02-20 01:28 Miles Bader <miles@gnu.ai.mit.edu>
1997-02-19 13:56 Miles Bader <miles@gnu.ai.mit.edu>
1997-02-18 15:39 Miles Bader <miles@gnu.ai.mit.edu>
1997-02-17 10:58 Miles Bader <miles@gnu.ai.mit.edu>
1997-02-15 10:23 Miles Bader <miles@gnu.ai.mit.edu>
(mutex_lock, mutex_unlock, mutex_trylock): Defined in terms of
__mutex_*.
(mutex_t): Type removed & replaced by new macro.
(tsd_key_t): Typedef to int instead of pthread_key_t.
(tsd_key_create, tsd_setspecific, tsd_getspecific): New macros.
(__pthread_initialize): New macro, work around assumption of pthreads.
* sysdeps/mach/hurd/i386/init-first.c (__libc_argv, __libc_argc):
__hurd_sigthread_stack_end, __hurd_sigthread_stack_variables,
__hurd_threadvar_max, __hurd_threadvar_stack_offset,
__hurd_threadvar_stack_mask): Variables removed.
1997-02-14 14:07 Miles Bader <miles@gnu.ai.mit.edu>
* hurd/hurd.h (_hurd_pids_changed_stamp, _hurd_pids_changed_sync):
1997-02-24 17:06 Geoffrey Keating <geoffk@discus.anu.edu.au>
* sysdeps/unix/sysv/linux/accept.S (NARGS): Describe number of
arguments taken, for sysdeps/unix/sysv/linux/powerpc/socket.S.
* sysdeps/unix/sysv/linux/bind.S: Likewise.
* sysdeps/unix/sysv/linux/connect.S: Likewise.
* sysdeps/unix/sysv/linux/getpeername.S: Likewise.
* sysdeps/unix/sysv/linux/getsockname.S: Likewise.
* sysdeps/unix/sysv/linux/getsockopt.S: Likewise.
* sysdeps/unix/sysv/linux/listen.S: Likewise.
* sysdeps/unix/sysv/linux/recv.S: Likewise.
* sysdeps/unix/sysv/linux/recvfrom.S: Likewise.
* sysdeps/unix/sysv/linux/recvmsg.S: Likewise.
* sysdeps/unix/sysv/linux/send.S: Likewise.
* sysdeps/unix/sysv/linux/sendmsg.S: Likewise.
* sysdeps/unix/sysv/linux/sendto.S: Likewise.
* sysdeps/unix/sysv/linux/setsockopt.S: Likewise.
* sysdeps/unix/sysv/linux/shutdown.S: Likewise.
* sysdeps/unix/sysv/linux/socketpair.S: Likewise.
1997-02-15 04:51 Ulrich Drepper <drepper@cygnus.com>
1997-02-25 06:18:05 +01:00
|
|
|
fputs ("Test 3:\n", out);
|
|
|
|
{
|
|
|
|
int res, val, n;
|
|
|
|
|
|
|
|
res = sscanf ("-242", "%3o%n", &val, &n);
|
|
|
|
printf ("res = %d, val = %d, n = %d\n", res, val, n);
|
|
|
|
if (res != 1 || val != -20 || n != 3)
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
1995-02-18 02:27:10 +01:00
|
|
|
exit(EXIT_SUCCESS);
|
|
|
|
}
|