Remove aix specific files.

This commit is contained in:
Ondřej Bílka 2013-08-29 18:10:58 +02:00
parent 8833598053
commit d4e16af1ae
10 changed files with 13 additions and 869 deletions

View File

@ -1,3 +1,16 @@
2013-08-29 Ondřej Bílka <neleai@seznam.cz>
* sysdeps/unix/sysv/linux/powerpc/aix/aix-dirent.h: Remove
aix specific files.
* sysdeps/unix/sysv/linux/powerpc/aix/aix-errno.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/aix/aix-stat.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/aix/aix-termios.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/aix/direntconv.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/aix/errnoconv.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/aix/statconv.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/aix/tcgetattr.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/aix/tcsetattr.c: Likewise.
2013-08-29 Thomas Schwinge <thomas@codesourcery.com>
Roland McGrath <roland@hack.frob.com>

View File

@ -1,19 +0,0 @@
#include "aix-types.h"
struct aixdirent
{
aixino_t d_ino;
aixoff_t d_off;
unsigned short int d_reclen;
unsigned short int d_namlen;
char d_name[256]; /* We must not include limits.h! */
};
struct aixdirent64
{
aixino64_t d_ino;
aixoff64_t d_off;
unsigned short int d_reclen;
unsigned short int d_namlen;
char d_name[256]; /* We must not include limits.h! */
};

View File

@ -1,124 +0,0 @@
/* Copyright (C) 1999-2013 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, see
<http://www.gnu.org/licenses/>. */
#define AIX_EPERM 1
#define AIX_ENOENT 2
#define AIX_ESRCH 3
#define AIX_EINTR 4
#define AIX_EIO 5
#define AIX_ENXIO 6
#define AIX_E2BIG 7
#define AIX_ENOEXEC 8
#define AIX_EBADF 9
#define AIX_ECHILD 10
#define AIX_EAGAIN 11
#define AIX_ENOMEM 12
#define AIX_EACCES 13
#define AIX_EFAULT 14
#define AIX_ENOTBLK 15
#define AIX_EBUSY 16
#define AIX_EEXIST 17
#define AIX_EXDEV 18
#define AIX_ENODEV 19
#define AIX_ENOTDIR 20
#define AIX_EISDIR 21
#define AIX_EINVAL 22
#define AIX_ENFILE 23
#define AIX_EMFILE 24
#define AIX_ENOTTY 25
#define AIX_ETXTBSY 26
#define AIX_EFBIG 27
#define AIX_ENOSPC 28
#define AIX_ESPIPE 29
#define AIX_EROFS 30
#define AIX_EMLINK 31
#define AIX_EPIPE 32
#define AIX_EDOM 33
#define AIX_ERANGE 34
#define AIX_ENOMSG 35
#define AIX_EIDRM 36
#define AIX_ECHRNG 37
#define AIX_EL2NSYNC 38
#define AIX_EL3HLT 39
#define AIX_EL3RST 40
#define AIX_ELNRNG 41
#define AIX_EUNATCH 42
#define AIX_ENOCSI 43
#define AIX_EL2HLT 44
#define AIX_EDEADLK 45
#define AIX_ENOTREADY 46
#define AIX_EWRPROTECT 47
#define AIX_EFORMAT 48
#define AIX_ENOLCK 49
#define AIX_ENOCONNECT 50
#define AIX_ESTALE 52
#define AIX_EDIST 53
#define AIX_EWOULDBLOCK 54
#define AIX_EINPROGRESS 55
#define AIX_EALREADY 56
#define AIX_ENOTSOCK 57
#define AIX_EDESTADDRREQ 58
#define AIX_EMSGSIZE 59
#define AIX_EPROTOTYPE 60
#define AIX_ENOPROTOOPT 61
#define AIX_EPROTONOSUPPORT 62
#define AIX_ESOCKTNOSUPPORT 63
#define AIX_EOPNOTSUPP 64
#define AIX_EPFNOSUPPORT 65
#define AIX_EAFNOSUPPORT 66
#define AIX_EADDRINUSE 67
#define AIX_EADDRNOTAVAIL 68
#define AIX_ENETDOWN 69
#define AIX_ENETUNREACH 70
#define AIX_ENETRESET 71
#define AIX_ECONNABORTED 72
#define AIX_ECONNRESET 73
#define AIX_ENOBUFS 74
#define AIX_EISCONN 75
#define AIX_ENOTCONN 76
#define AIX_ESHUTDOWN 77
#define AIX_ETIMEDOUT 78
#define AIX_ECONNREFUSED 79
#define AIX_EHOSTDOWN 80
#define AIX_EHOSTUNREACH 81
#define AIX_ERESTART 82
#define AIX_EPROCLIM 83
#define AIX_EUSERS 84
#define AIX_ELOOP 85
#define AIX_ENAMETOOLONG 86
#define AIX_EDQUOT 88
#define AIX_ECORRUPT 89
#define AIX_EREMOTE 93
#define AIX_ENOSYS 109
#define AIX_EMEDIA 110
#define AIX_ESOFT 111
#define AIX_ENOATTR 112
#define AIX_ESAD 113
#define AIX_ENOTRUST 114
#define AIX_ETOOMANYREFS 115
#define AIX_EILSEQ 116
#define AIX_ECANCELED 117
#define AIX_ENOSR 118
#define AIX_ETIME 119
#define AIX_EBADMSG 120
#define AIX_EPROTO 121
#define AIX_ENODATA 122
#define AIX_ENOSTR 123
#define AIX_ENOTSUP 124
#define AIX_EMULTIHOP 125
#define AIX_ENOLINK 126
#define AIX_EOVERFLOW 127

View File

@ -1,75 +0,0 @@
/* Copyright (C) 1999-2013 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, see
<http://www.gnu.org/licenses/>. */
struct aixstat
{
aixdev_t st_dev;
aixino_t st_ino;
aixmode_t st_mode;
aixnlink_t st_nlink;
unsigned short int st_flag;
aixuid_t st_uid;
aixgid_t st_gid;
aixdev_t st_rdev;
aixoff_t st_size;
aixtime_t st_atime;
unsigned long int __unused1;
aixtime_t st_mtime;
unsigned long int __unused2;
aixtime_t st_ctime;
unsigned long int __unused3;
aixblksize_t st_blksize;
aixblkcnt_t st_blocks;
int st_vfstype;
unsigned int st_vfs;
unsigned int st_type;
unsigned int st_gen;
#define _STATBUF_RESERVED_SPACE 9
unsigned int st_reserved[_STATBUF_RESERVED_SPACE];
};
struct aixstat64
{
aixdev_t st_dev;
aixino64_t st_ino;
aixmode_t st_mode;
aixnlink_t st_nlink;
unsigned short int st_flag;
aixuid_t st_uid;
aixgid_t st_gid;
aixdev_t st_rdev;
int st_ssize;
aixtime_t st_atime;
unsigned long int __unused1;
aixtime_t st_mtime;
unsigned long int __unused2;
aixtime_t st_ctime;
unsigned long int __unused3;
aixblksize_t st_blksize;
aixblkcnt64_t st_blocks;
int st_vfstype;
unsigned int st_vfs;
unsigned int st_type;
unsigned int st_gen;
unsigned int st_reserved[_STATBUF_RESERVED_SPACE];
unsigned int st_padto_ll;
aixoff64_t st_size;
};
#define aix_major(x) (int) ((unsigned int) (x) >> 16)
#define aix_minor(x) (int) ((x) & 0xFFFF)

View File

@ -1,84 +0,0 @@
/* Copyright (C) 2000-2013 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, see
<http://www.gnu.org/licenses/>. */
#include "aix-types.h"
#define AIX_NCCS 16
struct aixtermios
{
aixtcflag_t c_iflag;
aixtcflag_t c_oflag;
aixtcflag_t c_cflag;
aixtcflag_t c_lflag;
aixcc_t c_line;
aixcc_t c_cc[AIX_NCCS];
aixspeed_t c_ispeed;
aixspeed_t c_ospeed;
};
#define AIX_VINTR 0
#define AIX_VQUIT 1
#define AIX_VERASE 2
#define AIX_VKILL 3
#define AIX_VEOF 4
#define AIX_VEOL 5
#define AIX_VEOL2 6
#define AIX_VSTART 7
#define AIX_VSTOP 8
#define AIX_VSUSP 9
#define AIX_VDSUSP 10
#define AIX_VREPRINT 11
#define AIX_VDISCRD 12
#define AIX_VWERSE 13
#define AIX_VLNEXT 14
#define AIX_IUCLC 0x00000800
#define AIX_IXANY 0x00001000
#define AIX_IMAXBE 0x00010000
#define AIX_OLCUC 0x00000002
#define AIX_ONLCR 0x00000004
#define AIX_TABDLY 0x00000c00
#define AIX_TAB0 0x00000000
#define AIX_TAB1 0x00000400
#define AIX_TAB2 0x00000800
#define AIX_TAB3 0x00000c00
#define AIX_BSDLY 0x00001000
#define AIX_BS0 0x00000000
#define AIX_BS1 0x00001000
#define AIX_FFDLY 0x00002000
#define AIX_FF0 0x00000000
#define AIX_FF1 0x00002000
#define AIX_NLDLY 0x00004000
#define AIX_NL0 0x00000000
#define AIX_NL1 0x00004000
#define AIX_VTDLY 0x00008000
#define AIX_VT0 0x00000000
#define AIX_VT1 0x00008000
#define AIX_CBAUD 0x0000000f
#define AIX_CSIZE 0x00000030
#define AIX_CS5 0x00000000
#define AIX_CS6 0x00000010
#define AIX_CS7 0x00000020
#define AIX_CS8 0x00000030
#define AIX_CSTOPB 0x00000040
#define AIX_CREAD 0x00000080
#define AIX_PARENB 0x00000100
#define AIX_PARODD 0x00000200
#define AIX_HUPCL 0x00000400
#define AIX_CLOCAL 0x00000800

View File

@ -1,48 +0,0 @@
/* Copyright (C) 2000-2013 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, see
<http://www.gnu.org/licenses/>. */
#include <dirent.h>
#include <string.h>
#include "linux-dirent.h"
#ifndef DT_UNKNOWN
# define DT_UNKNOWN 0
#endif
void
__dirent_aix_to_linux (const struct aixdirent *aixdir,
struct dirent *linuxdir)
{
linuxdir->d_ino = aixdir->d_ino;
linuxdir->d_off = aixdir->d_off;
linuxdir->d_reclen = aixdir->d_reclen;
linuxdir->d_type = DT_UNKNOWN;
memcpy (linuxdir->d_name, aixdir->d_name, aixdir->d_namlen + 1);
}
void
__dirent64_aix_to_linux (const struct aixdirent64 *aixdir,
struct dirent64 *linuxdir)
{
linuxdir->d_ino = aixdir->d_ino;
linuxdir->d_off = aixdir->d_off;
linuxdir->d_reclen = aixdir->d_reclen;
linuxdir->d_type = DT_UNKNOWN;
memcpy (linuxdir->d_name, aixdir->d_name, aixdir->d_namlen + 1);
}

View File

@ -1,142 +0,0 @@
/* Convert the error number the AIX kernel returns to what the Linux
application expects.
Copyright (C) 2000-2013 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, see
<http://www.gnu.org/licenses/>. */
#include <errno.h>
#include "linux-errno.h"
static int mapping[] =
{
[AIX_EPERM] = EPERM,
[AIX_ENOENT] = ENOENT,
[AIX_ESRCH] = ESRCH,
[AIX_EINTR] = EINTR,
[AIX_EIO] = EIO,
[AIX_ENXIO] = ENXIO,
[AIX_E2BIG] = E2BIG,
[AIX_ENOEXEC] = ENOEXEC,
[AIX_EBADF] = EBADF,
[AIX_ECHILD] = ECHILD,
[AIX_EAGAIN] = EAGAIN,
[AIX_ENOMEM] = ENOMEM,
[AIX_EACCES] = EACCES,
[AIX_EFAULT] = EFAULT,
[AIX_ENOTBLK] = ENOTBLK,
[AIX_EBUSY] = EBUSY,
[AIX_EEXIST] = EEXIST,
[AIX_EXDEV] = EXDEV,
[AIX_ENODEV] = ENODEV,
[AIX_ENOTDIR] = ENOTDIR,
[AIX_EISDIR] = EISDIR,
[AIX_EINVAL] = EINVAL,
[AIX_ENFILE] = ENFILE,
[AIX_EMFILE] = EMFILE,
[AIX_ENOTTY] = ENOTTY,
[AIX_ETXTBSY] = ETXTBSY,
[AIX_EFBIG] = EFBIG,
[AIX_ENOSPC] = ENOSPC,
[AIX_EIDRM] = EIDRM,
[AIX_ECHRNG] = ECHRNG,
[AIX_EL2NSYNC] = EL2NSYNC,
[AIX_EL3HLT] = EL3HLT,
[AIX_EL3RST] = EL3RST,
[AIX_ELNRNG] = ELNRNG,
[AIX_EUNATCH] = EUNATCH,
[AIX_ENOCSI] = ENOCSI,
[AIX_EL2HLT] = EL2HLT,
[AIX_EDEADLK] = EDEADLK,
[AIX_ENOTREADY] = ENOTREADY,
// EWPROTECT: no Linux equivalent
// EFORMAT: no Linux equivalent
[AIX_ENOLCK] = ENOLCK,
// ENOCONNECT: No Linux equivalent
[AIX_ESTALE] = ESTALE,
// EDIST: no Linux equivalent
[54] = EAGAIN, // EWOULDBLOCK
[AIX_EINPROGRESS] = EINPROGRESS,
[AIX_EALREADY] = EALREADY,
[AIX_ENOTSOCK] = ENOTSOCK,
[AIX_EDESTADDRREQ] = EDESTADDRREQ,
[AIX_EMSGSIZE] = EMSGSIZE,
[AIX_EPROTOTYPE] = EPROTOTYPE,
[AIX_ENOPROTOOPT] = ENOPROTOOPT,
[AIX_EPROTONOSUPPORT] = EPROTONOSUPPORT,
[AIX_ESOCKTNOSUPPORT] = ESOCKTNOSUPPORT,
[AIX_EOPNOTSUPP] = EOPNOTSUPP,
[AIX_EPFNOSUPPORT] = EPFNOSUPPORT,
[AIX_EAFNOSUPPORT] = EAFNOSUPPORT,
[AIX_EADDRINUSE] = EADDRINUSE,
[AIX_EADDRNOTAVAIL] = EADDRNOTAVAIL,
[AIX_ENETDOWN] = ENETDOWN,
[AIX_ENETUNREACH] = ENETUNREACH,
[AIX_ENETRESET] = ENETRESET,
[AIX_ECONNABORTED] = ECONNABORTED,
[AIX_ECONNRESET] = ECONNRESET,
[AIX_ENOBUFS] = ENOBUFS,
[AIX_EISCONN] = EISCONN,
[AIX_ENOTCONN] = ENOTCONN,
[AIX_ESHUTDOWN] = ESHUTDOWN,
[AIX_ETIMEDOUT] = ETIMEDOUT,
[AIX_ECONNREFUSED] = ECONNREFUSED,
[AIX_EHOSTDOWN] = EHOSTDOWN,
[AIX_EHOSTUNREACH] = EHOSTUNREACH,
[AIX_ERESTART] = ERESTART,
[AIX_EPROCLIM] = EPROCLIM,
[AIX_EUSERS] = EUSERS,
[AIX_ELOOP] = ELOOP,
[AIX_ENAMETOOLONG] = ENAMETOOLONG,
[87] = ENOTEMPTY, // ENOTEMPTY
[AIX_EDQUOT] = EDQUOT,
[AIX_ECORRUPT] = ECORRUPT,
[AIX_EREMOTE] = EREMOTE,
[AIX_ENOSYS] = ENOSYS,
[AIX_EMEDIA] = EMEDIA,
[AIX_ESOFT] = ESOFT,
[AIX_ENOATTR] = ENOATTR,
[AIX_ESAD] = ESAD,
// ENOTRUST: no Linux equivalent
[AIX_ETOOMANYREFS] = ETOOMANYREFS,
[AIX_EILSEQ] = EILSEQ,
[AIX_ECANCELED] = ECANCELED,
[AIX_ENOSR] = ENOSR,
[AIX_ETIME] = ETIME,
[AIX_EBADMSG] = EBADMSG,
[AIX_EPROTO] = EPROTO,
[AIX_ENODATA] = ENODATA,
[AIX_ENOSTR] = ENOSTR,
[AIX_ENOTSUP] = ENOTSUP,
[AIX_EMULTIHOP] = EMULTIHOP,
[AIX_ENOLINK] = ENOLINK,
[AIX_EOVERFLOW] = EOVERFLOW
};
int
__errno_aix_to_linux (int err)
{
int conv;
if (err >= 0 && err < (sizeof (mapping) / sizeof (mapping[0]))
&& ((conv = mapping[err]) != 0 || err == 0))
return conv;
/* The error value is not known. Create a special value which can
be easily recognized as an invalid result. */
return 512 + err;
}

View File

@ -1,52 +0,0 @@
/* Copyright (C) 2000-2013 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, see
<http://www.gnu.org/licenses/>. */
void
__stat_aix_to_linux (const struct aixstat *aixstat, struct stat *linuxstat)
{
linuxstat->st_dev = makedev (aix_major (aixstat->st_dev),
aix_minor (aixstat->st_dev));
linuxstat->st_ino = aixstat->st_ino;
/* The following assumes that the mode values are the same on AIX
and Linux which is true in the moment. */
linuxstat->st_mode = aixstat->st_mode;
linuxstat->st_nlink = aixstat->st_nlink;
/* There is no st_flag field in Linux. */
linuxstat->st_uid = aixstat->st_uid;
linuxstat->st_gid = aixstat->st_gid;
linuxstat->st_rdev = makedev (aix_major (aixstat->st_rdev),
aix_minor (aixstat->st_rdev));
linuxstat->st_size = aixstat->st_size;
linuxstat->st_atime = aixstat->st_atime;
linuxstat->st_mtime = aixstat->st_mtime;
linuxstat->st_ctime = aixstat->st_ctime;
linuxstat->st_blksize = aixstat->st_blksize;
linuxstat->st_blocks = aixstat->st_blocks;
/* There is no st_vfstype in Linux. */
/* There is no st_vfs in Linux. */
/* There is no st_type in Linux. */
/* There is no st_gen in Linux. */
/* File in the padding values with repeatable values. */
linuxstat->__pad1 = 0;
linuxstat->__pad2 = 0;
linuxstat->__unused1 = 0;
linuxstat->__unused2 = 0;
linuxstat->__unused3 = 0;
linuxstat->__unused4 = 0;
linuxstat->__unused5 = 0;
}

View File

@ -1,155 +0,0 @@
/* Copyright (C) 2000-2013 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, see
<http://www.gnu.org/licenses/>. */
#include <errno.h>
#include <termios.h>
#include "aix-termios.h"
int
tcgetattr (fd, linuxtermios_p)
int fd;
struct termios *linuxtermios_p;
{
struct aixtermios aixtermios;
int result;
result = /* make syscall */;
if (result != -1)
{
/* Convert the result. */
linuxtermios_p->c_cc[VINTR] = aixtermios.c_cc[AIX_VINTR];
linuxtermios_p->c_cc[VQUIT] = aixtermios.c_cc[AIX_VQUIT];
linuxtermios_p->c_cc[VERASE] = aixtermios.c_cc[AIX_VERASE];
linuxtermios_p->c_cc[VKILL] = aixtermios.c_cc[AIX_VKILL];
linuxtermios_p->c_cc[VEOF] = aixtermios.c_cc[AIX_VEOF];
// XXX VMIN has the same value as VEOF !?
linuxtermios_p->c_cc[VEOL] = aixtermios.c_cc[AIX_VEOL];
// XXX VTIME has the same value as VEOL !?
linuxtermios_p->c_cc[VEOL2] = aixtermios.c_cc[AIX_VEOL2];
linuxtermios_p->c_cc[VSTART] = aixtermios.c_cc[AIX_VSTART];
linuxtermios_p->c_cc[VSTOP] = aixtermios.c_cc[AIX_VSTOP];
linuxtermios_p->c_cc[VSUSP] = aixtermios.c_cc[AIX_VSUSP];
// XXX No Linux equivalent for VDSUSP !?
linuxtermios_p->c_cc[VREPRINT] = aixtermios.c_cc[AIX_VREPRINT];
linuxtermios_p->c_cc[VDISCARD] = aixtermios.c_cc[AIX_VDISCARD];
linuxtermios_p->c_cc[VWERASE] = aixtermios.c_cc[AIX_VWERASE];
linuxtermios_p->c_cc[VLNEXT] = aixtermios.c_cc[AIX_VLNEXT];
linuxtermios_p->c_cflag = aixtermios.c_c_flag & AIX_CBAUD;
/* Only the IUCLC, IXANY, and IMAXBEL values are different in the
c_iflag member. */
linuxtermios_p->c_iflag = aixtermios.c_iflag & 0x7ff;
if (aixtermios.c_iflag & AIX_IXANY)
linuxtermios_p->c_iflag |= IXANY;
if (aixtermios.c_iflag & AIX_IUCLC)
linuxtermios_p->c_iflag |= IUCLC;
if (aixtermios.c_iflag & AIX_IMAXBEL)
linuxtermios_p->c_iflag |= IMAXBEL;
/* Many of the c_oflag files differ. Bummer. */
linuxtermios_p->c_oflag = (aixtermios.c_oflag
& (OPOST | OCRNL | ONOCR | ONLRET | OFILL
| OFDEL | TABDLY));
if (aixtermios.c_oflag & AIX_OLCUC)
linuxtermios_p->c_oflag |= OLCUC;
if (aixtermios.c_oflag & AIX_ONLCR)
linuxtermios_p->c_oflag |= ONLCR;
if (aixtermiosc_oflag & AIX_NLDLY)
linuxtermios_p->c_oflag |= NL1;
if (aixtermiosc_oflag.c_oflag & AIX_TABDLY)
{
#define offset 2
#if AIX_TAB1 << offset != TAB1 || AIX_TAB3 << offset != TAB3
# error "Check the offset"
#endif
linuxtermios_p->c_oflag |= (aixtermios.c_oflag >> offset) & TABDLY;
#undef offset
}
if (aixtermios.c_oflag & AIX_FFDLY)
linuxtermios_p->c_oflag |= FF1;
if (aixtermios.c_oflag & AIX_BSDLY)
linuxtermios_p->c_oflag |= BS1;
if (aixtermios.c_oflag & AIX_VTDLY)
linuxtermios_p->c_oflag |= VT1;
/* A lot of the c_cflag member is also different. */
if (aixtermios.c_cflag & AIX_CSIZE)
{
#define offset 4
#if CSIZE >> offset != AIX_CSIZE
# error "Check the offset"
#endif
linuxtermios_p->c_cflag |= (aixtermios.c_cflag >> offset) & CSIZE;
#undef offset
}
if (aixtermios.c_cflag & AIX_STOPB)
linuxtermios_p->c_cflag |= STOPB;
if (aixtermios.c_cflag & AIX_CREAD)
linuxtermios_p->c_cflag |= CREAD;
if (aixtermios.cflag & AIX_PARENB)
linuxtermios_p->c_cflag |= PARENB;
if (aixtermios.cflag & AIX_PARODD)
linuxtermios_p->c_cflag |= PARODD;
if (aixtermios.c_cflag & AIX_HUPCL)
linuxtermios_p->c_cflag |= HUPCL;
if (aixtermios.c_cflag & AIX_CLOCAL)
linuxtermios_p->c_cflag |= CLOCAL;
/* The c_lflag is information is also different. */
aixtermios.c_lflag = 0;
if (aixtermios.c_lflag & AIX_ISIG)
linuxtermios_p->c_lflag |= ISIG;
if (aixtermios.c_lflag & AIX_ICANON)
linuxtermios_p->c_lflag |= ICANON;
if (aixtermios.c_lflag & AIX_XCASE)
linuxtermios_p->c_lflag |= XCASE;
if (aixtermios.c_lflag & AIX_ECHO)
linuxtermios_p->c_lflag |= ECHO;
if (aixtermios.c_lflag & AIX_ECHOE)
linuxtermios_p->c_lflag |= ECHOE;
if (aixtermios.c_lflag & AIX_ECHOK)
linuxtermios_p->c_lflag |= ECHOK;
if (aixtermios.c_lflag & AIX_ECHONL)
linuxtermios_p->c_lflag |= ECHONL;
if (aixtermios.c_lflag & AIX_NOFLSH)
linuxtermios_p->c_lflag |= NOFLSH;
if (aixtermios.c_lflag & AIX_TOSTOP)
linuxtermios_p->c_lflag |= TOSTOP;
if (aixtermios.c_lflag & AIX_ECHOCTL)
linuxtermios_p->c_lflag |= ECHOCTL;
if (aixtermios.c_lflag & AIX_ECHOPRT)
linuxtermios_p->c_lflag |= ECHOPRT;
if (aixtermios.c_lflag & AIX_ECHOKE)
linuxtermios_p->c_lflag |= ECHOKE;
if (aixtermios.c_lflag & AIX_FLUSHO)
linuxtermios_p->c_lflag |= FLUSHO;
if (aixtermios.c_lflag & AIX_PENDIN)
linuxtermios_p->c_lflag |= PENDIN;
if (aixtermios->c_lflag & AIX_IEXTEN)
linuxtermios_p->c_lflag |= IEXTEN;
}
else
// Convert error here or in syscall.
;
return result;
}

View File

@ -1,170 +0,0 @@
/* Copyright (C) 2000-2013 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, see
<http://www.gnu.org/licenses/>. */
#include <errno.h>
#include <termios.h>
#include "aix-termios.h"
int
tcsetattr (fd, optional_actions, linuxtermios_p)
int fd;
int optional_actions;
const struct termios *linuxtermios_p;
{
struct aixtermios aixtermios;
int result;
/* `optional_actions' does not have to be changed, AIX uses the
same values as Linux. */
aixtermios.c_cc[AIX_VINTR] = linuxtermios_p->c_cc[VINTR];
aixtermios.c_cc[AIX_VQUIT] = linuxtermios_p->c_cc[VQUIT];
aixtermios.c_cc[AIX_VERASE] = linuxtermios_p->c_cc[VERASE];
aixtermios.c_cc[AIX_VKILL] = linuxtermios_p->c_cc[VKILL];
aixtermios.c_cc[AIX_VEOF] = linuxtermios_p->c_cc[VEOF];
// XXX VMIN has the same value as VEOF !?
aixtermios.c_cc[AIX_VEOL] = linuxtermios_p->c_cc[VEOL];
// XXX VTIME has the same value as VEOL !?
aixtermios.c_cc[AIX_VEOL2] = linuxtermios_p->c_cc[VEOL2];
aixtermios.c_cc[AIX_VSTART] = linuxtermios_p->c_cc[VSTART];
aixtermios.c_cc[AIX_VSTOP] = linuxtermios_p->c_cc[VSTOP];
aixtermios.c_cc[AIX_VSUSP] = linuxtermios_p->c_cc[VSUSP];
aixtermios.c_cc[AIX_VDSUSP] = 0; // XXX No Linux equivalent !?
aixtermios.c_cc[AIX_VREPRINT] = linuxtermios_p->c_cc[VREPRINT];
aixtermios.c_cc[AIX_VDISCARD] = linuxtermios_p->c_cc[VDISCARD];
aixtermios.c_cc[AIX_VWERASE] = linuxtermios_p->c_cc[VWERASE];
aixtermios.c_cc[AIX_VLNEXT] = linuxtermios_p->c_cc[VLNEXT];
/* AIX has not all the speeds (the high one) Linux supports. The
symbol names and values used for the speeds are fortunately the
same. */
if ((linuxtermios_p->c_cflag & CBAUD) > B38400)
{
__set_errno (EINVAL);
return -1;
}
aixtermios.c_c_flag = linuxtermios_p->c_cflag & CBAUD;
/* Only the IUCLC, IXANY, and IMAXBEL values are different in the
c_iflag member. */
aixtermios.c_iflag = linuxtermios_p->c_iflag & 0x7ff;
if (linuxtermios_p->c_iflag & IXANY)
aixtermios.c_iflag |= AIX_IXANY;
if (linuxtermios_p->c_iflag & IUCLC)
aixtermios.c_iflag |= AIX_IUCLC;
if (linuxtermios_p->c_iflag & IMAXBEL)
aixtermios.c_iflag |= AIX_IMAXBEL;
/* Many of the c_oflag files differ. Bummer. */
aixtermios.c_oflag = (linuxtermios_p->c_oflag
& (OPOST | OCRNL | ONOCR | ONLRET | OFILL
| OFDEL | TABDLY));
if (linuxtermios_p->c_oflag & OLCUC)
aixtermios.c_oflag |= AIX_OLCUC;
if (linuxtermios_p->c_oflag & ONLCR)
aixtermios.c_oflag |= AIX_ONLCR;
if (linuxtermios_p->c_oflag & NLDLY)
{
if ((linuxtermios_p->c_oflag & NLDLY) >= NL2)
{
__set_errno (EINVAL);
return -1;
}
if (linuxtermios_p->c_oflag & NLDLY)
aixtermios.c_oflag |= AIX_NL1;
}
if (linuxtermios_p->c_oflag & TABDLY)
{
#define offset 2
#if TAB1 >> offset != AIX_TAB1 || TAB3 >> offset != AIX_TAB3
# error "Check the offset"
#endif
aixtermios.c_oflag |= (linuxtermios_p->c_oflag >> offset) & AIX_TABDLY;
#undef offset
}
if (linuxtermios_p->c_oflag & FFDLY)
aixtermios.c_oflag |= AIX_FF1;
if (linuxtermios_p->c_oflag & BSDLY)
aixtermios.c_oflag |= AIX_BS1;
if (linuxtermios_p->c_oflag & VTDLY)
aixtermios.c_oflag |= AIX_VT1;
/* A lot of the c_cflag member is also different. */
if (linuxtermios_p->c_cflag & CSIZE)
{
#define offset 4
#if CSIZE >> offset != AIX_CSIZE
# error "Check the offset"
#endif
aixtermios.c_cflag |= (linuxtermios_p->c_cflag >> offset) & AIX_CSIZE;
#undef offset
}
if (linuxtermios_p->c_cflag & STOPB)
aixtermios.c_cflag |= AIX_STOPB;
if (linuxtermios_p->c_cflag & CREAD)
aixtermios.c_cflag |= AIX_CREAD;
if (linuxtermios_p->c_cflag & PARENB)
aixtermios.c_cflag |= AIX_PARENB;
if (linuxtermios_p->c_cflag & PARODD)
aixtermios.c_cflag |= AIX_PARODD;
if (linuxtermios_p->c_cflag & HUPCL)
aixtermios.c_cflag |= AIX_HUPCL;
if (linuxtermios_p->c_cflag & CLOCAL)
aixtermios.c_cflag |= AIX_CLOCAL;
/* The c_lflag is information is also different. */
aixtermios.c_lflag = 0;
if (linuxtermios_p->c_lflag & ISIG)
aixtermios.c_lflag |= AIX_ISIG;
if (linuxtermios_p->c_lflag & ICANON)
aixtermios.c_lflag |= AIX_ICANON;
if (linuxtermios_p->c_lflag & XCASE)
aixtermios.c_lflag |= AIX_XCASE;
if (linuxtermios_p->c_lflag & ECHO)
aixtermios.c_lflag |= AIX_ECHO;
if (linuxtermios_p->c_lflag & ECHOE)
aixtermios.c_lflag |= AIX_ECHOE;
if (linuxtermios_p->c_lflag & ECHOK)
aixtermios.c_lflag |= AIX_ECHOK;
if (linuxtermios_p->c_lflag & ECHONL)
aixtermios.c_lflag |= AIX_ECHONL;
if (linuxtermios_p->c_lflag & NOFLSH)
aixtermios.c_lflag |= AIX_NOFLSH;
if (linuxtermios_p->c_lflag & TOSTOP)
aixtermios.c_lflag |= AIX_TOSTOP;
if (linuxtermios_p->c_lflag & ECHOCTL)
aixtermios.c_lflag |= AIX_ECHOCTL;
if (linuxtermios_p->c_lflag & ECHOPRT)
aixtermios.c_lflag |= AIX_ECHOPRT;
if (linuxtermios_p->c_lflag & ECHOKE)
aixtermios.c_lflag |= AIX_ECHOKE;
if (linuxtermios_p->c_lflag & FLUSHO)
aixtermios.c_lflag |= AIX_FLUSHO;
if (linuxtermios_p->c_lflag & PENDIN)
aixtermios.c_lflag |= AIX_PENDIN;
if (linuxtermios_p->c_lflag & IEXTEN)
aixtermios.c_lflag |= AIX_IEXTEN;
result = /* XXX syscall */;
// Convert error here or in syscall.
return result;
}