2001-07-20 Roland McGrath <roland@frob.com>

* libio/stdio_ext.h: Moved to ...
	* stdio-common/stdio_ext.h: ... here.
	* libio/Makefile (headers): Move stdio_ext.h from here ...
	* stdio-common/Makefile (headers): ... to here.
	* include/stdio_ext.h: New file.
	* stdio/Makefile (routines): Add the stdio_ext.h functions here.
	* stdio/Versions (GLIBC_2.2.4): Export the stdio_ext.h functions.
	* stdio/__flbf.c: New file.
	* stdio/__fbufsize.c: New file.
	* stdio/__fpending.c: New file.
	* stdio/__fpurge.c: New file.
	* stdio/__freadable.c: New file.
	* stdio/__freading.c: New file.
	* stdio/__fsetlocking.c: New file.
	* stdio/__fwritable.c: New file.
	* stdio/__fwriting.c: New file.
This commit is contained in:
Roland McGrath 2001-07-21 05:09:59 +00:00
parent 5cd915d7ba
commit 35c53530e9
15 changed files with 258 additions and 4 deletions

5
include/stdio_ext.h Normal file
View File

@ -0,0 +1,5 @@
#ifndef _STDIO_EXT_H
# include <stdio-common/stdio_ext.h>
#endif

View File

@ -21,8 +21,7 @@
#
subdir := libio
headers := stdio.h libio.h _G_config.h bits/stdio.h bits/stdio-lock.h \
stdio_ext.h
headers := stdio.h libio.h _G_config.h bits/stdio.h bits/stdio-lock.h
routines := \
filedoalloc iofclose iofdopen iofflush iofgetpos iofgets iofopen \

View File

@ -21,7 +21,7 @@
#
subdir := stdio-common
headers := printf.h
headers := printf.h stdio_ext.h
routines := \
ctermid cuserid \

View File

@ -1,4 +1,4 @@
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
# Copyright (C) 1991,92,93,94,95,96,2001 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
@ -37,6 +37,8 @@ routines := \
fclose fcloseall fflush \
vdprintf vsnprintf vsprintf vasprintf vsscanf vscanf \
memstream obstream linewrap \
__fbufsize __freading __fwriting __freadable __fwritable __flbf \
__fpurge __fpending __fsetlocking \
internals sysd-stdio pipestream stdio_init libc_fatal
aux := defs glue

View File

@ -62,4 +62,9 @@ libc {
# p*
putc_unlocked; putchar_unlocked;
}
GLIBC_2.2.4 {
# Functions to access FILE internals.
__fbufsize; __freading; __fwriting; __freadable; __fwritable; __flbf;
__fpurge; __fpending; __fsetlocking; _flushlbf;
}
}

25
stdio/__fbufsize.c Normal file
View File

@ -0,0 +1,25 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
size_t
__fbufsize (FILE *fp)
{
return fp->__bufsize;
}

25
stdio/__flbf.c Normal file
View File

@ -0,0 +1,25 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
int
__flbf (FILE *fp)
{
return fp->__linebuf;
}

25
stdio/__fpending.c Normal file
View File

@ -0,0 +1,25 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
size_t
__fpending (FILE *fp)
{
return (fp->__put_limit >= fp->__bufp ? fp->__bufp - fp->__buffer : 0);
}

25
stdio/__fpurge.c Normal file
View File

@ -0,0 +1,25 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
void
__fpurge (FILE *fp)
{
fp->__get_limit = fp->__put_limit = fp->__bufp = fp->__buffer;
}

25
stdio/__freadable.c Normal file
View File

@ -0,0 +1,25 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
int
__freadable (FILE *fp)
{
return !!fp->__mode.__read;
}

26
stdio/__freading.c Normal file
View File

@ -0,0 +1,26 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
int
__freading (FILE *fp)
{
/* This is not really right for unbuffered streams. */
return (!fp->__mode.__write || fp->__put_limit == fp->__buffer);
}

41
stdio/__fsetlocking.c Normal file
View File

@ -0,0 +1,41 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
#include <errno.h>
#include <stdlib.h>
int
__fsetlocking (FILE *fp, int type)
{
/* We don't really support locking. */
switch (type)
{
case FSETLOCKING_QUERY:
case FSETLOCKING_BYCALLER:
break;
case FSETLOCKING_INTERNAL:
abort ();
default:
__set_errno (EINVAL);
return -1;
}
return FSETLOCKING_BYCALLER;
}

25
stdio/__fwritable.c Normal file
View File

@ -0,0 +1,25 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
int
__fwritable (FILE *fp)
{
return !!fp->__mode.__write;
}

26
stdio/__fwriting.c Normal file
View File

@ -0,0 +1,26 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C 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 C 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 C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdio_ext.h>
int
__fwriting (FILE *fp)
{
/* This is not really right for unbuffered streams. */
return (!fp->__mode.__read || fp->__get_limit == fp->__buffer);
}