~ubuntu-branches/ubuntu/precise/parted/precise

« back to all changes in this revision

Viewing changes to gnulib/lib/fbufmode.c

  • Committer: Bazaar Package Importer
  • Author(s): Otavio Salvador
  • Date: 2010-02-06 16:39:19 UTC
  • mfrom: (1.1.5 upstream)
  • mto: (7.3.2 experimental)
  • mto: This revision was merged to the branch mainline in revision 48.
  • Revision ID: james.westby@ubuntu.com-20100206163919-nsxr2vtchk0ecabf
Tags: upstream-2.1
ImportĀ upstreamĀ versionĀ 2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Retrieve information about a FILE stream.
2
 
   Copyright (C) 2007 Free Software Foundation, Inc.
3
 
 
4
 
   This program is free software; you can redistribute it and/or modify
5
 
   it under the terms of the GNU General Public License as published by
6
 
   the Free Software Foundation; either version 2, or (at your option)
7
 
   any later version.
8
 
 
9
 
   This program is distributed in the hope that it will be useful,
10
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
   GNU General Public License for more details.
13
 
 
14
 
   You should have received a copy of the GNU General Public License along
15
 
   with this program; if not, write to the Free Software Foundation,
16
 
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
17
 
 
18
 
#include <config.h>
19
 
 
20
 
/* Specification.  */
21
 
#include "fbufmode.h"
22
 
 
23
 
#if HAVE___FLBF
24
 
# include <stdio_ext.h>
25
 
#endif
26
 
 
27
 
int
28
 
fbufmode (FILE *fp)
29
 
{
30
 
  /* Most systems provide FILE as a struct and the necessary bitmask in
31
 
     <stdio.h>, because they need it for implementing getc() and putc() as
32
 
     fast macros.  */
33
 
#if defined _IO_ferror_unlocked     /* GNU libc, BeOS */
34
 
# if HAVE___FLBF                    /* glibc >= 2.2 */
35
 
  if (__flbf (fp))
36
 
    return _IOLBF;
37
 
# else
38
 
  if (fp->_flags & _IO_LINE_BUF)
39
 
    return _IOLBF;
40
 
# endif
41
 
  if (fp->_flags & _IO_UNBUFFERED)
42
 
    return _IONBF;
43
 
  return _IOFBF;
44
 
#elif defined __sferror             /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */
45
 
  if (fp->_flags & __SLBF)
46
 
    return _IOLBF;
47
 
  if (fp->_flags & __SNBF)
48
 
    return _IONBF;
49
 
  return _IOFBF;
50
 
#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, mingw */
51
 
# if HAVE___FLBF                    /* Solaris >= 7 */
52
 
  if (__flbf (fp))
53
 
    return _IOLBF;
54
 
# else
55
 
  if (fp->_flag & _IOLBF)
56
 
    return _IOLBF;
57
 
# endif
58
 
# if defined __sun && defined __sparc && defined _LP64 /* Solaris/SPARC 64-bit */
59
 
  return ((unsigned int *) fp) [9] & (_IONBF | _IOFBF);
60
 
# else
61
 
  if (fp->_flag & _IONBF)
62
 
    return _IONBF;
63
 
  return _IOFBF;
64
 
# endif
65
 
#elif defined __UCLIBC__            /* uClibc */
66
 
  if (fp->__modeflags & __FLAG_LBF)
67
 
    return _IOLBF;
68
 
  if (fp->__modeflags & __FLAG_NBF)
69
 
    return _IONBF;
70
 
  return _IOFBF;
71
 
#else
72
 
 #error "Please port gnulib fbufmode.c to your platform! Look at the setvbuf implementation."
73
 
#endif
74
 
}