genericopenlibs/cstdlib/LSTDIO/SCANF.C
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericopenlibs/cstdlib/LSTDIO/SCANF.C	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,102 @@
+/* SCANF.C
+ * 
+ * Portions Copyright (c) 1990-2006 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ */
+
+/*
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#include <_ansi.h>
+#include <stdio_r.h>
+#include "LOCAL.H"
+#include <stdarg.h>
+
+/**
+Read formatted data from standard input.
+Reads data from the standard input and stores it into the locations given by argument(s). 
+
+@param fmt String that can contain one or more of these items:
+	   Whitespace characters: the function will read and ignore any whitespace characters
+	   (this includes blank, newline and tab characters) encountered before the next
+	   non-whitespace character. This includes any quantity of whitespace characters
+	   (including none). Non-whitespace characters (any character not including blank,
+	   newline, tab, or any format specifier begining with % character): this cause that
+	   the function read and discard any character that match the given non-whitespace
+	   character. 
+	   If this character is not found the function ends returning error.
+
+@return On Success, the number of items succesfully read. 
+		On Failure, EOF is returned and errno may be set.
+*/
+EXPORT_C int scanf (const char *fmt, ...)
+{
+  int ret;
+  va_list ap;
+  struct _reent *r = _REENT2;
+  if (!r)
+	return EOF; // Memory for library globals is not allocated (errno not set). 
+  va_start (ap, fmt);
+  ret = __svfscanf (_stdin_r (r), fmt, ap);
+  va_end (ap);
+  return ret;
+}
+
+/**
+A reentrant version of scanf().
+*/
+EXPORT_C  int _scanf_r (struct _reent *ptr, const char *fmt, ...)
+{
+  int ret;
+  va_list ap;
+
+  va_start (ap, fmt);
+  ret = __svfscanf (_stdin_r (ptr), fmt, ap);
+  va_end (ap);
+  return (ret);
+}
+
+/**
+Read formatted data from a stream.
+Reads data from the current position of stream and stores it 
+into the locations given by argument(s).
+Locations pointed by each argument are filled with their corresponding type of value 
+requested in the format string.
+There must be the same number of type specifiers in format string than arguments passed.
+@return   The number of items succesfully read.
+@param fp Pointer to an open file. 
+@param fmt String that can contain one or more of these item:
+Whitespace characters: the function will read and ignore any whitespace characters 
+(this includes blank, newline and tab characters)
+encountered before the next non-whitespace character.
+This includes any quantity of whitespace characters (including none).
+Non-whitespace characters (any character not including blank, newline, tab,
+or any format specifier begining with % character): 
+this cause that the function read and discard any character that match the given non-whitespace character.
+If this character is not found the function ends returning error.
+*/
+EXPORT_C int
+fscanf (FILE * fp, const char *fmt, ...)
+{
+  int ret;
+  va_list ap;
+
+  va_start (ap, fmt);
+  ret = __svfscanf (fp, fmt, ap);
+  va_end (ap);
+  return ret;
+}