home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixlib36d / src / stdio / c / scanf < prev    next >
Text File  |  1994-03-08  |  1KB  |  68 lines

  1. static char sccs_id[] = "@(#) scanf.c 2.0 " __DATE__ " HJR";
  2.  
  3. /* scanf.c (c) Copyright 1990 H.Rogers */
  4.  
  5. #include <errno.h>
  6. #include <stdlib.h>
  7. #include <stdarg.h>
  8. #include <string.h>
  9. #include <stdio.h>
  10.  
  11. __STDIOLIB__
  12.  
  13. int
  14. sscanf (register const char *buf, const char *format,...)
  15. {
  16.   va_list ap;
  17.   int cnt;
  18.   static FILE f[1];
  19.  
  20.   f->i_ptr = f->i_base = (unsigned char *) buf;
  21.   f->i_cnt = f->bufsiz = strlen (buf);
  22.   f->flag = _IOREAD | _IOFBF | _IOEOF;
  23.   f->pos = 0;
  24.   f->fd = -1;
  25.  
  26.   va_start (ap, format);
  27.   if (__scanf (f, format, ap, &cnt) < 0)
  28.     {
  29.       va_end (ap);
  30.       return (-1);
  31.     }
  32.   va_end (ap);
  33.  
  34.   return (cnt);
  35. }
  36. int
  37. fscanf (register FILE * f, const char *format,...)
  38. {
  39.   va_list ap;
  40.   int cnt;
  41.  
  42.   va_start (ap, format);
  43.   if (__scanf (f, format, ap, &cnt) < 0)
  44.     {
  45.       va_end (ap);
  46.       return (-1);
  47.     }
  48.   va_end (ap);
  49.  
  50.   return (cnt);
  51. }
  52. int
  53. scanf (const char *format,...)
  54. {
  55.   va_list ap;
  56.   int cnt;
  57.  
  58.   va_start (ap, format);
  59.   if (__scanf (stdin, format, ap, &cnt) < 0)
  60.     {
  61.       va_end (ap);
  62.       return (-1);
  63.     }
  64.   va_end (ap);
  65.  
  66.   return (cnt);
  67. }
  68.