diff options
author | Kevin Ryde <user42@zip.com.au> | 2001-11-15 22:24:50 +0100 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2001-11-15 22:24:50 +0100 |
commit | cc9aa932213e08202b0cc306f739a21d5d5ea613 (patch) | |
tree | 6f31d721fec56218071391c09d986f7315bc80fe /scanf | |
parent | 74990db073a093a85774be2e6a4e44eaaf5e812d (diff) | |
download | gmp-cc9aa932213e08202b0cc306f739a21d5d5ea613.tar.gz |
* scanf/doscan.c, scanf/fscanf.c, scanf/fscanffuns.c, scanf/scanf.c,
scanf/sscanf.c, scanf/sscanffuns.c, scanf/vfscanf.c, scanf/vscanf.c,
scanf/vsscanf.c, scanf/Makefile.am, tests/misc/t-scanf.c: New files.
Diffstat (limited to 'scanf')
-rw-r--r-- | scanf/Makefile.am | 31 | ||||
-rw-r--r-- | scanf/fscanf.c | 59 | ||||
-rw-r--r-- | scanf/fscanffuns.c | 41 | ||||
-rw-r--r-- | scanf/scanf.c | 57 | ||||
-rw-r--r-- | scanf/sscanf.c | 59 | ||||
-rw-r--r-- | scanf/sscanffuns.c | 87 | ||||
-rw-r--r-- | scanf/vfscanf.c | 40 | ||||
-rw-r--r-- | scanf/vscanf.c | 40 | ||||
-rw-r--r-- | scanf/vsscanf.c | 38 |
9 files changed, 452 insertions, 0 deletions
diff --git a/scanf/Makefile.am b/scanf/Makefile.am new file mode 100644 index 000000000..a0adba3a2 --- /dev/null +++ b/scanf/Makefile.am @@ -0,0 +1,31 @@ +## Process this file with automake to generate Makefile.in + +# Copyright 2001 Free Software Foundation, Inc. +# +# This file is part of the GNU MP Library. +# +# The GNU MP Library is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or (at your +# option) any later version. +# +# The GNU MP 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 Lesser General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with the GNU MP 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. + + +AUTOMAKE_OPTIONS = gnu no-dependencies $(top_builddir)/ansi2knr + +INCLUDES = -D__GMP_WITHIN_GMP -I$(top_srcdir) + +noinst_LTLIBRARIES = libscanf.la + +libscanf_la_SOURCES = \ + doscan.c fscanf.c fscanffuns.c scanf.c sscanf.c sscanffuns.c \ + vfscanf.c vscanf.c vsscanf.c diff --git a/scanf/fscanf.c b/scanf/fscanf.c new file mode 100644 index 000000000..d61137ec5 --- /dev/null +++ b/scanf/fscanf.c @@ -0,0 +1,59 @@ +/* gmp_fscanf -- formatted input from a FILE. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include "config.h" + +#if HAVE_STDARG +#include <stdarg.h> +#else +#include <varargs.h> +#endif + +#include <stdio.h> + +#include "gmp.h" +#include "gmp-impl.h" + + +int +#if HAVE_STDARG +gmp_fscanf (FILE *fp, const char *fmt, ...) +#else +gmp_fscanf (va_alist) + va_dcl +#endif +{ + va_list ap; + int ret; +#if HAVE_STDARG + va_start (ap, fmt); +#else + FILE *fp; + const char *fmt; + va_start (ap); + fp = va_arg (ap, FILE *); + fmt = va_arg (ap, const char *); +#endif + + ret = __gmp_doscan (&__gmp_fscanf_funs, fp, fmt, ap); + va_end (ap); + return ret; +} diff --git a/scanf/fscanffuns.c b/scanf/fscanffuns.c new file mode 100644 index 000000000..5c9afeae0 --- /dev/null +++ b/scanf/fscanffuns.c @@ -0,0 +1,41 @@ +/* __gmp_fscanf_funs -- support for formatted input from a FILE. + + THE FUNCTIONS IN THIS FILE ARE FOR INTERNAL USE ONLY. THEY'RE ALMOST + CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES OR DISAPPEAR COMPLETELY IN + FUTURE GNU MP RELEASES. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include <stdio.h> +#include "gmp.h" +#include "gmp-impl.h" + + +static void +step (FILE *fp, int n) +{ +} + +const struct gmp_doscan_funs_t __gmp_fscanf_funs = { + (gmp_doscan_scan_t) fscanf, + (gmp_doscan_step_t) step, + (gmp_doscan_get_t) fgetc, + (gmp_doscan_unget_t) ungetc, +}; diff --git a/scanf/scanf.c b/scanf/scanf.c new file mode 100644 index 000000000..10024d930 --- /dev/null +++ b/scanf/scanf.c @@ -0,0 +1,57 @@ +/* gmp_scanf -- formatted input from stdin. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include "config.h" + +#if HAVE_STDARG +#include <stdarg.h> +#else +#include <varargs.h> +#endif + +#include <stdio.h> + +#include "gmp.h" +#include "gmp-impl.h" + + +int +#if HAVE_STDARG +gmp_scanf (const char *fmt, ...) +#else +gmp_scanf (va_alist) + va_dcl +#endif +{ + va_list ap; + int ret; +#if HAVE_STDARG + va_start (ap, fmt); +#else + const char *fmt; + va_start (ap); + fmt = va_arg (ap, const char *); +#endif + + ret = __gmp_doscan (&__gmp_fscanf_funs, stdin, fmt, ap); + va_end (ap); + return ret; +} diff --git a/scanf/sscanf.c b/scanf/sscanf.c new file mode 100644 index 000000000..90824f9a0 --- /dev/null +++ b/scanf/sscanf.c @@ -0,0 +1,59 @@ +/* gmp_sscanf -- formatted input from a string. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include "config.h" + +#if HAVE_STDARG +#include <stdarg.h> +#else +#include <varargs.h> +#endif + +#include <stdio.h> + +#include "gmp.h" +#include "gmp-impl.h" + + +int +#if HAVE_STDARG +gmp_sscanf (const char *s, const char *fmt, ...) +#else +gmp_sscanf (va_alist) + va_dcl +#endif +{ + va_list ap; + int ret; +#if HAVE_STDARG + va_start (ap, fmt); +#else + const char *s; + const char *fmt; + va_start (ap); + s = va_arg (ap, const char *); + fmt = va_arg (ap, const char *); +#endif + + ret = __gmp_doscan (&__gmp_sscanf_funs, (void *) &s, fmt, ap); + va_end (ap); + return ret; +} diff --git a/scanf/sscanffuns.c b/scanf/sscanffuns.c new file mode 100644 index 000000000..54af51436 --- /dev/null +++ b/scanf/sscanffuns.c @@ -0,0 +1,87 @@ +/* __gmp_sscanf_funs -- support for formatted input from a string. + + THE FUNCTIONS IN THIS FILE ARE FOR INTERNAL USE ONLY. THEY'RE ALMOST + CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES OR DISAPPEAR COMPLETELY IN + FUTURE GNU MP RELEASES. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include <stdio.h> +#include "gmp.h" +#include "gmp-impl.h" + + +static int +scan (const char **sp, const char *fmt, void *p1, void *p2) +{ + return sscanf (*sp, fmt, p1, p2); +} + +static void +step (const char **sp, int n) +{ + ASSERT (n >= 0); + + /* shouldn't push us past the the end of the string */ +#if WANT_ASSERT + { + int i; + for (i = 0; i < n; i++) + ASSERT ((*sp)[i] != '\0'); + } +#endif + + (*sp) += n; +} + +static int +get (const char **sp) +{ + const char *s; + int c; + s = *sp; + c = *s++; + if (c == '\0') + return EOF; + *sp = s; + return c; +} + +static void +unget (int c, const char **sp) +{ + const char *s; + s = *sp; + if (c == EOF) + { + ASSERT (*s == '\0'); + return; + } + s--; + ASSERT (*s == c); + *sp = s; +} + +const struct gmp_doscan_funs_t __gmp_sscanf_funs = { + (gmp_doscan_scan_t) scan, + (gmp_doscan_step_t) step, + (gmp_doscan_get_t) get, + (gmp_doscan_unget_t) unget, +}; diff --git a/scanf/vfscanf.c b/scanf/vfscanf.c new file mode 100644 index 000000000..cc8840c86 --- /dev/null +++ b/scanf/vfscanf.c @@ -0,0 +1,40 @@ +/* gmp_vfscanf -- formatted input from a FILE. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include "config.h" + +#if HAVE_STDARG +#include <stdarg.h> +#else +#include <varargs.h> +#endif + +#include <stdio.h> + +#include "gmp.h" +#include "gmp-impl.h" + + +int +gmp_vfscanf (FILE *fp, const char *fmt, va_list ap) +{ + return __gmp_doscan (&__gmp_fscanf_funs, fp, fmt, ap); +} diff --git a/scanf/vscanf.c b/scanf/vscanf.c new file mode 100644 index 000000000..ae14a53a0 --- /dev/null +++ b/scanf/vscanf.c @@ -0,0 +1,40 @@ +/* gmp_vscanf -- formatted input from stdin. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include "config.h" + +#if HAVE_STDARG +#include <stdarg.h> +#else +#include <varargs.h> +#endif + +#include <stdio.h> + +#include "gmp.h" +#include "gmp-impl.h" + + +int +gmp_vscanf (const char *fmt, va_list ap) +{ + return __gmp_doscan (&__gmp_fscanf_funs, stdin, fmt, ap); +} diff --git a/scanf/vsscanf.c b/scanf/vsscanf.c new file mode 100644 index 000000000..d9d2a9c16 --- /dev/null +++ b/scanf/vsscanf.c @@ -0,0 +1,38 @@ +/* gmp_vsscanf -- formatted input from a string. + +Copyright 2001 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP 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 Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP 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. */ + +#include "config.h" + +#if HAVE_STDARG +#include <stdarg.h> +#else +#include <varargs.h> +#endif + +#include "gmp.h" +#include "gmp-impl.h" + + +int +gmp_vsscanf (const char *s, const char *fmt, va_list ap) +{ + return __gmp_doscan (&__gmp_sscanf_funs, (void *) &s, fmt, ap); +} |