Subversion Repositories Kolibri OS

Rev

Rev 4874 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (c) 1990 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that the above copyright notice and this paragraph are
  7.  * duplicated in all such forms and that any documentation,
  8.  * advertising materials, and other materials related to such
  9.  * distribution and use acknowledge that the software was developed
  10.  * by the University of California, Berkeley.  The name of the
  11.  * University may not be used to endorse or promote products derived
  12.  * from this software without specific prior written permission.
  13.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  14.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  15.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16.  */
  17.  
  18. /*
  19. FUNCTION
  20. <<fileno>>---return file descriptor associated with stream
  21.  
  22. INDEX
  23.         fileno
  24.  
  25. ANSI_SYNOPSIS
  26.         #include <stdio.h>
  27.         int fileno(FILE *<[fp]>);
  28.  
  29. TRAD_SYNOPSIS
  30.         #include <stdio.h>
  31.         int fileno(<[fp]>)
  32.         FILE *<[fp]>;
  33.  
  34. DESCRIPTION
  35. You can use <<fileno>> to return the file descriptor identified by <[fp]>.
  36.  
  37. RETURNS
  38. <<fileno>> returns a non-negative integer when successful.
  39. If <[fp]> is not an open stream, <<fileno>> returns -1.
  40.  
  41. PORTABILITY
  42. <<fileno>> is not part of ANSI C.
  43. POSIX requires <<fileno>>.
  44.  
  45. Supporting OS subroutines required: none.
  46. */
  47.  
  48. #include <_ansi.h>
  49. #include <stdio.h>
  50. #include <errno.h>
  51. #include "local.h"
  52.  
  53. int
  54. _DEFUN(fileno, (f),
  55.        FILE * f)
  56. {
  57.   int result;
  58.   CHECK_INIT (_REENT, f);
  59.   _newlib_flockfile_start (f);
  60.   if (f->_flags)
  61.   result = __sfileno (f);
  62.   else
  63.     {
  64.       result = -1;
  65.       _REENT->_errno = EBADF;
  66.     }
  67.   _newlib_flockfile_end (f);
  68.   return result;
  69. }
  70.