Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=termios] (headers):
	Append termio.h.

	* Makefile ($(includedir)/stubs.h): Print a msg if we do nothing.

	* misc/sgtty.h: Add forward decl of struct sgttyb in case it is never
	defined.

	* sysdeps/unix/sysv/linux/termio.h: New file.
	* sysdeps/unix/sysv/linux/Dist: Add it.

	* sysdeps/unix/sysv/linux/ioctl-types.h: New file, wrapper around
	kernel header <asm/termios.h>.

	* misc/Makefile (headers): Add ioctl-types.h.
	* sysdeps/generic/ioctl-types.h: New file.
	* misc/sys/ioctl.h: Include <ioctl-types.h>.
	(struct tchars, struct ltchars, struct sgttyb, struct winsize,
	struct ttysize): Types moved there.
  • Loading branch information
Roland McGrath committed May 27, 1996
1 parent d36e769 commit 8079129
Show file tree
Hide file tree
Showing 10 changed files with 180 additions and 88 deletions.
20 changes: 20 additions & 0 deletions ChangeLog
@@ -1,5 +1,25 @@
Mon May 27 10:10:00 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>

* sysdeps/unix/sysv/linux/Makefile [$(subdir)=termios] (headers):
Append termio.h.

* Makefile ($(includedir)/stubs.h): Print a msg if we do nothing.

* misc/sgtty.h: Add forward decl of struct sgttyb in case it is never
defined.

* sysdeps/unix/sysv/linux/termio.h: New file.
* sysdeps/unix/sysv/linux/Dist: Add it.

* sysdeps/unix/sysv/linux/ioctl-types.h: New file, wrapper around
kernel header <asm/termios.h>.

* misc/Makefile (headers): Add ioctl-types.h.
* sysdeps/generic/ioctl-types.h: New file.
* misc/sys/ioctl.h: Include <ioctl-types.h>.
(struct tchars, struct ltchars, struct sgttyb, struct winsize,
struct ttysize): Types moved there.

* Makefile ($(includedir)/stubs.h): Don't touch target if new one is
identical.

Expand Down
3 changes: 2 additions & 1 deletion Makefile
Expand Up @@ -144,7 +144,8 @@ $(includedir)/stubs.h: subdir_install
echo ' in the C library which is a stub, meaning it will fail';\
echo ' every time called, usually setting errno to ENOSYS. */';\
sort $(subdir-stubs)) > $(objpfx)stubs.h
if test -r $@ && cmp -s $(objpfx)stubs.h $@; then : ; \
if test -r $@ && cmp -s $(objpfx)stubs.h $@;
then echo stubs.h unchanged ; \
else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi
rm -f $(objpfx)stubs.h

Expand Down
3 changes: 2 additions & 1 deletion misc/Makefile
Expand Up @@ -22,7 +22,8 @@

subdir := misc

headers := sys/uio.h iovec.h sys/ioctl.h sys/ptrace.h ioctls.h sys/file.h\
headers := sys/uio.h iovec.h sys/ioctl.h ioctls.h ioctl-types.h \
sys/ptrace.h sys/file.h \
a.out.h nlist.h stab.h stab.def sgtty.h sys/dir.h sys/cdefs.h \
ttyent.h syscall.h syslog.h sys/syslog.h paths.h sys/reboot.h \
sys/mman.h sys/param.h fstab.h mntent.h search.h err.h error.h\
Expand Down
4 changes: 4 additions & 0 deletions misc/sgtty.h
Expand Up @@ -22,6 +22,10 @@ Cambridge, MA 02139, USA. */

#include <sys/ioctl.h>

/* On some systems this type is not defined by <ioctl-types.h>;
in that case, the functions are just stubs that return ENOSYS. */
struct sgttyb;

__BEGIN_DECLS

/* Fill in *PARAMS with terminal parameters associated with FD. */
Expand Down
89 changes: 3 additions & 86 deletions misc/sys/ioctl.h
Expand Up @@ -26,99 +26,16 @@ __BEGIN_DECLS
/* Get the list of `ioctl' requests and related constants. */
#include <ioctls.h>

/* Define some types used by `ioctl' requests. */
#include <ioctl-types.h>

/* On a Unix system, the system <sys/ioctl.h> probably defines some of the
symbols we define in <sys/ttydefaults.h> (usually with the same values).
The code to generate <ioctls.h> has omitted these symbols to avoid the
conflict, but a Unix program expects <sys/ioctl.h> to define them, so we
must include <sys/ttydefaults.h> here. */
#include <sys/ttydefaults.h>

#if defined(TIOCGETC) || defined(TIOCSETC)
/* Type of ARG for TIOCGETC and TIOCSETC requests. */
struct tchars
{
char t_intrc; /* Interrupt character. */
char t_quitc; /* Quit character. */
char t_startc; /* Start-output character. */
char t_stopc; /* Stop-output character. */
char t_eofc; /* End-of-file character. */
char t_brkc; /* Input delimiter character. */
};

#define _IOT_tchars /* Hurd ioctl type field. */ \
_IOT (_IOTS (char), 6, 0, 0, 0, 0)
#endif

#if defined(TIOCGLTC) || defined(TIOCSLTC)
/* Type of ARG for TIOCGLTC and TIOCSLTC requests. */
struct ltchars
{
char t_suspc; /* Suspend character. */
char t_dsuspc; /* Delayed suspend character. */
char t_rprntc; /* Reprint-line character. */
char t_flushc; /* Flush-output character. */
char t_werasc; /* Word-erase character. */
char t_lnextc; /* Literal-next character. */
};

#define _IOT_ltchars /* Hurd ioctl type field. */ \
_IOT (_IOTS (char), 6, 0, 0, 0, 0)
#endif

/* Type of ARG for TIOCGETP and TIOCSETP requests (and gtty and stty). */
struct sgttyb
{
char sg_ispeed; /* Input speed. */
char sg_ospeed; /* Output speed. */
char sg_erase; /* Erase character. */
char sg_kill; /* Kill character. */
short int sg_flags; /* Mode flags. */
};

#define _IOT_sgttyb /* Hurd ioctl type field. */ \
_IOT (_IOTS (char), 6, _IOTS (short int), 1, 0, 0)

#if defined(TIOCGWINSZ) || defined(TIOCSWINSZ)
/* Type of ARG for TIOCGWINSZ and TIOCSWINSZ requests. */
struct winsize
{
unsigned short int ws_row; /* Rows, in characters. */
unsigned short int ws_col; /* Columns, in characters. */

/* These are not actually used. */
unsigned short int ws_xpixel; /* Horizontal pixels. */
unsigned short int ws_ypixel; /* Vertical pixels. */
};

#define _IOT_winsize /* Hurd ioctl type field. */ \
_IOT (_IOTS (unsigned short int), 4, 0, 0, 0, 0)
#endif

#if defined (TIOCGSIZE) || defined (TIOCSSIZE)
# if defined (TIOCGWINSZ) && TIOCGSIZE == TIOCGWINSZ
/* Many systems that have TIOCGWINSZ define TIOCGSIZE for source
compatibility with Sun; they define `struct ttysize' to have identical
layout as `struct winsize' and #define TIOCGSIZE to be TIOCGWINSZ
(likewise TIOCSSIZE and TIOCSWINSZ). */
struct ttysize
{
unsigned short int ts_lines;
unsigned short int ts_cols;
unsigned short int ts_xxx;
unsigned short int ts_yyy;
};
#define _IOT_ttysize _IOT_winsize
# else
/* Suns use a different layout for `struct ttysize', and TIOCGSIZE and
TIOCGWINSZ are separate commands that do the same thing with different
structures (likewise TIOCSSIZE and TIOCSWINSZ). */
struct ttysize
{
int ts_lines, ts_cols; /* Lines and columns, in characters. */
};
# endif
#endif

/* Perform the I/O control operation specified by REQUEST on FD.
One argument may follow; its presence and type depend on REQUEST.
Return value depends on REQUEST. Usually -1 indicates error. */
Expand Down
111 changes: 111 additions & 0 deletions sysdeps/generic/ioctl-types.h
@@ -0,0 +1,111 @@
/* Structure types for pre-termios terminal ioctls. Generic Unix version.
Copyright (C) 1996 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 Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */

#ifndef _IOCTL_TYPES_H
#define _IOCTL_TYPES_H 1


#if defined(TIOCGETC) || defined(TIOCSETC)
/* Type of ARG for TIOCGETC and TIOCSETC requests. */
struct tchars
{
char t_intrc; /* Interrupt character. */
char t_quitc; /* Quit character. */
char t_startc; /* Start-output character. */
char t_stopc; /* Stop-output character. */
char t_eofc; /* End-of-file character. */
char t_brkc; /* Input delimiter character. */
};

#define _IOT_tchars /* Hurd ioctl type field. */ \
_IOT (_IOTS (char), 6, 0, 0, 0, 0)
#endif

#if defined(TIOCGLTC) || defined(TIOCSLTC)
/* Type of ARG for TIOCGLTC and TIOCSLTC requests. */
struct ltchars
{
char t_suspc; /* Suspend character. */
char t_dsuspc; /* Delayed suspend character. */
char t_rprntc; /* Reprint-line character. */
char t_flushc; /* Flush-output character. */
char t_werasc; /* Word-erase character. */
char t_lnextc; /* Literal-next character. */
};

#define _IOT_ltchars /* Hurd ioctl type field. */ \
_IOT (_IOTS (char), 6, 0, 0, 0, 0)
#endif

/* Type of ARG for TIOCGETP and TIOCSETP requests (and gtty and stty). */
struct sgttyb
{
char sg_ispeed; /* Input speed. */
char sg_ospeed; /* Output speed. */
char sg_erase; /* Erase character. */
char sg_kill; /* Kill character. */
short int sg_flags; /* Mode flags. */
};

#define _IOT_sgttyb /* Hurd ioctl type field. */ \
_IOT (_IOTS (char), 6, _IOTS (short int), 1, 0, 0)

#if defined(TIOCGWINSZ) || defined(TIOCSWINSZ)
/* Type of ARG for TIOCGWINSZ and TIOCSWINSZ requests. */
struct winsize
{
unsigned short int ws_row; /* Rows, in characters. */
unsigned short int ws_col; /* Columns, in characters. */

/* These are not actually used. */
unsigned short int ws_xpixel; /* Horizontal pixels. */
unsigned short int ws_ypixel; /* Vertical pixels. */
};

#define _IOT_winsize /* Hurd ioctl type field. */ \
_IOT (_IOTS (unsigned short int), 4, 0, 0, 0, 0)
#endif

#if defined (TIOCGSIZE) || defined (TIOCSSIZE)
# if defined (TIOCGWINSZ) && TIOCGSIZE == TIOCGWINSZ
/* Many systems that have TIOCGWINSZ define TIOCGSIZE for source
compatibility with Sun; they define `struct ttysize' to have identical
layout as `struct winsize' and #define TIOCGSIZE to be TIOCGWINSZ
(likewise TIOCSSIZE and TIOCSWINSZ). */
struct ttysize
{
unsigned short int ts_lines;
unsigned short int ts_cols;
unsigned short int ts_xxx;
unsigned short int ts_yyy;
};
#define _IOT_ttysize _IOT_winsize
# else
/* Suns use a different layout for `struct ttysize', and TIOCGSIZE and
TIOCGWINSZ are separate commands that do the same thing with different
structures (likewise TIOCSSIZE and TIOCSWINSZ). */
struct ttysize
{
int ts_lines, ts_cols; /* Lines and columns, in characters. */
};
# endif
#endif


#endif /* ioctl-types.h */
1 change: 1 addition & 0 deletions sysdeps/unix/sysv/linux/Dist
Expand Up @@ -5,3 +5,4 @@ sys/socketcall.h
sys/sysctl.h
sys/timex.h
nfs/nfs.h
termio.h
4 changes: 4 additions & 0 deletions sysdeps/unix/sysv/linux/Makefile
Expand Up @@ -54,6 +54,10 @@ ifeq ($(subdir), sunrpc)
headers += nfs/nfs.h
endif

ifeq ($(subdir), termios)
headers += termio.h
endif

rtld-installed-name = ld-gnu.so.1

# Don't compile the ctype glue code, since there is no old non-GNU C library.
Expand Down
27 changes: 27 additions & 0 deletions sysdeps/unix/sysv/linux/ioctl-types.h
@@ -0,0 +1,27 @@
/* Structure types for pre-termios terminal ioctls. Linux version.
Copyright (C) 1996 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 Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */

#ifndef _IOCTL_TYPES_H
#define _IOCTL_TYPES_H 1

/* The Linux kernel header defines the types associated with old ioctls. */

#include <asm/termios.h>

#endif /* ioctl-types.h */
6 changes: 6 additions & 0 deletions sysdeps/unix/sysv/linux/termio.h
@@ -0,0 +1,6 @@
/* Compatible <termio.h> for old `struct termio' ioctl interface.
This is obsolete; use the POSIX.1 `struct termios' interface
defined in <termios.h> instead. */

#include <termios.h>
#include <sys/ioctl.h>

0 comments on commit 8079129

Please sign in to comment.