diff --git a/Lib/irix5/FCNTL.py b/Lib/irix5/FCNTL.py
index 12c60fa..96d8451 100755
--- a/Lib/irix5/FCNTL.py
+++ b/Lib/irix5/FCNTL.py
@@ -1,4 +1,40 @@
 # Generated by h2py from /usr/include/sys/fcntl.h
+
+# Included from sys/types.h
+
+# Included from sgidefs.h
+_MIPS_ISA_MIPS1 = 1
+_MIPS_ISA_MIPS2 = 2
+_MIPS_ISA_MIPS3 = 3
+_MIPS_ISA_MIPS4 = 4
+_MIPS_SIM_ABI32 = 1
+_MIPS_SIM_NABI32 = 2
+_MIPS_SIM_ABI64 = 3
+P_MYID = (-1)
+P_MYHOSTID = (-1)
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
 FNDELAY = 0x04
 FAPPEND = 0x08
 FSYNC = 0x10
@@ -28,8 +64,6 @@
 F_GETFL = 3
 F_SETFL = 4
 F_GETLK = 14
-F_O_GETLK = 5
-F_GETLK = 14
 F_SETLK = 6
 F_SETLKW = 7
 F_CHKFL = 8
@@ -38,11 +72,21 @@
 F_SETBSDLK = 12
 F_SETBSDLKW = 13
 F_DIOINFO = 30
+F_FSGETXATTR = 31
+F_FSSETXATTR = 32
+F_GETLK64 = 33
+F_SETLK64 = 34
+F_SETLKW64 = 35
+F_ALLOCSP64 = 36
+F_FREESP64 = 37
+F_GETBMAP = 38
+F_FSSETDM = 39
 F_RSETLK = 20
 F_RGETLK = 21
 F_RSETLKW = 22
 F_GETOWN = 23
 F_SETOWN = 24
+F_O_GETLK = 5
 F_O_GETOWN = 10
 F_O_SETOWN = 11
 F_RDLCK = 01
diff --git a/Lib/irix5/FILE.py b/Lib/irix5/FILE.py
new file mode 100755
index 0000000..05697c1
--- /dev/null
+++ b/Lib/irix5/FILE.py
@@ -0,0 +1,239 @@
+# Generated by h2py from /usr/include/sys/file.h
+
+# Included from sys/types.h
+
+# Included from sgidefs.h
+_MIPS_ISA_MIPS1 = 1
+_MIPS_ISA_MIPS2 = 2
+_MIPS_ISA_MIPS3 = 3
+_MIPS_ISA_MIPS4 = 4
+_MIPS_SIM_ABI32 = 1
+_MIPS_SIM_NABI32 = 2
+_MIPS_SIM_ABI64 = 3
+P_MYID = (-1)
+P_MYHOSTID = (-1)
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
+
+# Included from sys/sema.h
+HP_NOPOLICY = 0
+HP_ADDOFF = 1
+HP_MULOFF = 2
+SEMA_NAMSZ = 8
+SEMA_NOHIST = 0x1
+SEMA_LIFO = 0x2
+SEMA_MUTEX = 0x4
+SEMA_METER = 0x8
+SEMAOP_PSEMA = 1
+SEMAOP_VSEMA = 2
+SEMAOP_CPSEMA = 3
+SEMAOP_CVSEMA = 4
+SEMAOP_WSEMA = 5
+SEMAOP_UNSEMA = 6
+SEMAOP_INIT = 7
+SEMAOP_FREE = 8
+SSOP_PHIT = 1
+SSOP_PSLP = 2
+SSOP_PWAKE = 6
+SSOP_PRESIG = 7
+SSOP_POSTSIG = 8
+SSOP_VNOWAKE = 3
+SSOP_VWAKE = 4
+SSOP_CPHIT = 1
+SSOP_CPMISS = 5
+SSOP_CVNOWAKE = 3
+SSOP_CVWAKE = 4
+SSOP_WMISS = 5
+SSOP_WWAKE = 4
+SSOP_RMV = 9
+TZERO = 10
+SEMA_NOP = 0
+SEMA_WAKE = 1
+SEMA_VSEMA = 2
+SEMA_SPINOP = 3
+MR_ACCESS = 0x1
+MR_UPDATE = 0x2
+def cv_signal(cv): return cvsema(cv);
+
+def cv_destroy(cv): return freesema(cv)
+
+def mutex_enter(m): return psema(m, PZERO | PNOSTOP)
+
+def mutex_exit(m): return vsema(m)
+
+def mutex_destroy(m): return freesema(m)
+
+def MUTEX_HELD(m): return (ownsema(m))
+
+def MUTEX_HELD(m): return (1)
+
+RW_READER = MR_ACCESS
+RW_WRITER = MR_UPDATE
+def rw_exit(r): return mrunlock(r)
+
+def rw_tryupgrade(r): return cmrpromote(r)
+
+def rw_downgrade(r): return mrdemote(r)
+
+def rw_destroy(r): return mrfree(r)
+
+def RW_WRITE_HELD(r): return ismrlocked(r, MR_UPDATE)
+
+def RW_READ_HELD(r): return ismrlocked(r, MR_ACCESS)
+
+
+# Included from sys/splock.h
+SPLOCKNAMSIZ = 8
+SPLOCK_NONE = 0
+SPLOCK_SOFT = 1
+SPLOCK_HARD = 2
+OWNER_NONE = -1
+MAP_LOCKID = 0
+SPLOCK_MAX = (96*1024)
+SPLOCK_MAX = 32768
+MIN_POOL_SIZE = 256
+MAX_POOL_SIZE = 16384
+DEF_SEMA_POOL = 8192
+DEF_VNODE_POOL = 1024
+DEF_FILE_POOL = 1024
+def ownlock(x): return 1
+
+def splock(x): return 1
+
+def io_splock(x): return 1
+
+def apvsema(x): return vsema(x)
+
+def apcpsema(x): return cpsema(x)
+
+def apcvsema(x): return cvsema(x)
+
+def mp_mrunlock(a): return mrunlock(a)
+
+def apvsema(x): return 0
+
+def apcpsema(x): return 1
+
+def apcvsema(x): return 0
+
+def mp_mrunlock(a): return 0
+
+
+# Included from sys/fcntl.h
+FNDELAY = 0x04
+FAPPEND = 0x08
+FSYNC = 0x10
+FNONBLOCK = 0x80
+FASYNC = 0x1000
+FNONBLK = FNONBLOCK
+FDIRECT = 0x8000
+FCREAT = 0x0100
+FTRUNC = 0x0200
+FEXCL = 0x0400
+FNOCTTY = 0x0800
+O_RDONLY = 0
+O_WRONLY = 1
+O_RDWR = 2
+O_NDELAY = 0x04
+O_APPEND = 0x08
+O_SYNC = 0x10
+O_NONBLOCK = 0x80
+O_DIRECT = 0x8000
+O_CREAT = 0x100
+O_TRUNC = 0x200
+O_EXCL = 0x400
+O_NOCTTY = 0x800
+F_DUPFD = 0
+F_GETFD = 1
+F_SETFD = 2
+F_GETFL = 3
+F_SETFL = 4
+F_GETLK = 14
+F_SETLK = 6
+F_SETLKW = 7
+F_CHKFL = 8
+F_ALLOCSP = 10
+F_FREESP = 11
+F_SETBSDLK = 12
+F_SETBSDLKW = 13
+F_DIOINFO = 30
+F_FSGETXATTR = 31
+F_FSSETXATTR = 32
+F_GETLK64 = 33
+F_SETLK64 = 34
+F_SETLKW64 = 35
+F_ALLOCSP64 = 36
+F_FREESP64 = 37
+F_GETBMAP = 38
+F_FSSETDM = 39
+F_RSETLK = 20
+F_RGETLK = 21
+F_RSETLKW = 22
+F_GETOWN = 23
+F_SETOWN = 24
+F_O_GETLK = 5
+F_O_GETOWN = 10
+F_O_SETOWN = 11
+F_RDLCK = 01
+F_WRLCK = 02
+F_UNLCK = 03
+O_ACCMODE = 3
+FD_CLOEXEC = 1
+FD_NODUP_FORK = 4
+FMASK = 0x90FF
+FOPEN = 0xFFFFFFFF
+FREAD = 0x01
+FWRITE = 0x02
+FNDELAY = 0x04
+FAPPEND = 0x08
+FSYNC = 0x10
+FNONBLOCK = 0x80
+FASYNC = 0x1000
+FNONBLK = FNONBLOCK
+FDIRECT = 0x8000
+FCREAT = 0x0100
+FTRUNC = 0x0200
+FEXCL = 0x0400
+FNOCTTY = 0x0800
+IRIX4_FASYNC = 0x40
+FMARK = 0x4000
+FDEFER = 0x2000
+FINPROGRESS = 0x0400
+FINVIS = 0x0100
+FNMFS = 0x2000
+FCLOSEXEC = 001
+FDSHD = 0x0001
+FDNOMARK = 0x0002
+FDIGNPROGRESS = 0x0004
+LOCK_SH = 1
+LOCK_EX = 2
+LOCK_NB = 4
+LOCK_UN = 8
+F_OK = 0
+X_OK = 1
+W_OK = 2
+R_OK = 4
+L_SET = 0
+L_INCR = 1
+L_XTND = 2
diff --git a/Lib/irix5/IN.py b/Lib/irix5/IN.py
index 325a021..2d67892 100755
--- a/Lib/irix5/IN.py
+++ b/Lib/irix5/IN.py
@@ -1,8 +1,51 @@
 # Generated by h2py from /usr/include/netinet/in.h
+
+# Included from sys/endian.h
+LITTLE_ENDIAN = 1234
+BIG_ENDIAN = 4321
+PDP_ENDIAN = 3412
+BYTE_ORDER = BIG_ENDIAN
+BYTE_ORDER = LITTLE_ENDIAN
+def ntohl(x): return (x)
+
+def ntohs(x): return (x)
+
+def htonl(x): return (x)
+
+def htons(x): return (x)
+
+def htonl(x): return ntohl(x)
+
+def htons(x): return ntohs(x)
+
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
 IPPROTO_IP = 0
 IPPROTO_ICMP = 1
 IPPROTO_IGMP = 2
 IPPROTO_GGP = 3
+IPPROTO_ENCAP = 4
 IPPROTO_TCP = 6
 IPPROTO_EGP = 8
 IPPROTO_PUP = 12
@@ -17,20 +60,35 @@
 IPPROTO_MAX = 256
 IPPORT_RESERVED = 1024
 IPPORT_USERRESERVED = 5000
+IPPORT_MAXPORT = 65535
+def IN_CLASSA(i): return (((long)(i) & 0x80000000) == 0)
+
 IN_CLASSA_NET = 0xff000000
 IN_CLASSA_NSHIFT = 24
 IN_CLASSA_HOST = 0x00ffffff
 IN_CLASSA_MAX = 128
+def IN_CLASSB(i): return (((long)(i) & 0xc0000000) == 0x80000000)
+
 IN_CLASSB_NET = 0xffff0000
 IN_CLASSB_NSHIFT = 16
 IN_CLASSB_HOST = 0x0000ffff
 IN_CLASSB_MAX = 65536
+def IN_CLASSC(i): return (((long)(i) & 0xe0000000) == 0xc0000000)
+
 IN_CLASSC_NET = 0xffffff00
 IN_CLASSC_NSHIFT = 8
 IN_CLASSC_HOST = 0x000000ff
+def IN_CLASSD(i): return (((long)(i) & 0xf0000000) == 0xe0000000)
+
 IN_CLASSD_NET = 0xf0000000
 IN_CLASSD_NSHIFT = 28
 IN_CLASSD_HOST = 0x0fffffff
+def IN_MULTICAST(i): return IN_CLASSD(i)
+
+def IN_EXPERIMENTAL(i): return (((long)(i) & 0xf0000000) == 0xf0000000)
+
+def IN_BADCLASS(i): return (((long)(i) & 0xf0000000) == 0xf0000000)
+
 INADDR_ANY = 0x00000000
 INADDR_BROADCAST = 0xffffffff
 INADDR_LOOPBACK = 0x7F000001
diff --git a/Lib/irix5/SOCKET.py b/Lib/irix5/SOCKET.py
index 0ba0742..401de2b 100755
--- a/Lib/irix5/SOCKET.py
+++ b/Lib/irix5/SOCKET.py
@@ -1,4 +1,27 @@
 # Generated by h2py from /usr/include/sys/socket.h
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
 SOCK_STREAM = 1
 SOCK_DGRAM = 2
 SOCK_RAW = 3
@@ -70,6 +93,8 @@
 AF_GOSIP = 22
 AF_SDL = 23
 AF_MAX = (AF_SDL+1)
+def OPTLEN(x): return ((((x) + sizeof(long) - 1) / sizeof(long)) * sizeof(long))
+
 PF_UNSPEC = AF_UNSPEC
 PF_UNIX = AF_UNIX
 PF_INET = AF_INET
diff --git a/Lib/irix5/TERMIOS.py b/Lib/irix5/TERMIOS.py
index a360786..2ac7487 100755
--- a/Lib/irix5/TERMIOS.py
+++ b/Lib/irix5/TERMIOS.py
@@ -1,6 +1,4 @@
-# Generated by h2py from /usr/include/termios.h
-
-# Included from sys/termios.h
+# Generated by h2py from /usr/include/sys/termios.h
 
 # Included from sys/ttydev.h
 B0 = 0
@@ -30,7 +28,8 @@
 _MIPS_ISA_MIPS3 = 3
 _MIPS_ISA_MIPS4 = 4
 _MIPS_SIM_ABI32 = 1
-_MIPS_SIM_ABI64 = 2
+_MIPS_SIM_NABI32 = 2
+_MIPS_SIM_ABI64 = 3
 P_MYID = (-1)
 P_MYHOSTID = (-1)
 
@@ -43,7 +42,7 @@
 OMAXMIN = 0xff
 NBITSMAJOR = 14
 NBITSMINOR = 18
-MAXMAJ = 0xff
+MAXMAJ = 0x1ff
 MAXMIN = 0x3ffff
 OLDDEV = 0
 NEWDEV = 1
@@ -222,6 +221,244 @@
 # Included from net/soioctl.h
 
 # Included from sys/termio.h
+
+# Included from sys/termios.h
+_POSIX_VDISABLE = 0
+def CTRL(c): return ((c)&037)
+
+IBSHIFT = 16
+NCC = 8
+NCCS = 23
+VINTR = 0
+VQUIT = 1
+VERASE = 2
+VKILL = 3
+VEOF = 4
+VEOL = 5
+VEOL2 = 6
+VMIN = 4
+VTIME = 5
+VSWTCH = 7
+VSTART = 8
+VSTOP = 9
+VSUSP = 10
+VDSUSP = 11
+VREPRINT = 12
+VDISCARD = 13
+VWERASE = 14
+VLNEXT = 15
+VRPRNT = VREPRINT
+VFLUSHO = VDISCARD
+VCEOF = NCC
+VCEOL = (NCC + 1)
+CNUL = 0
+CDEL = 0377
+CESC = ord('\\')
+CINTR = 0177
+CQUIT = 034
+CERASE = CTRL(ord('H'))
+CKILL = CTRL(ord('U'))
+CEOL = 0
+CEOL2 = 0
+CEOF = CTRL(ord('d'))
+CEOT = CEOF
+CSTART = CTRL(ord('q'))
+CSTOP = CTRL(ord('s'))
+CSWTCH = CTRL(ord('z'))
+CNSWTCH = 0
+CSUSP = CSWTCH
+CLNEXT = CTRL(ord('v'))
+CWERASE = CTRL(ord('w'))
+CFLUSHO = CTRL(ord('o'))
+CFLUSH = CFLUSHO
+CRPRNT = CTRL(ord('r'))
+CDSUSP = CTRL(ord('y'))
+CBRK = 0377
+IGNBRK = 0000001
+BRKINT = 0000002
+IGNPAR = 0000004
+PARMRK = 0000010
+INPCK = 0000020
+ISTRIP = 0000040
+INLCR = 0000100
+IGNCR = 0000200
+ICRNL = 0000400
+IUCLC = 0001000
+IXON = 0002000
+IXANY = 0004000
+IXOFF = 0010000
+IMAXBEL = 0020000
+IBLKMD = 0040000
+OPOST = 0000001
+OLCUC = 0000002
+ONLCR = 0000004
+OCRNL = 0000010
+ONOCR = 0000020
+ONLRET = 0000040
+OFILL = 0000100
+OFDEL = 0000200
+NLDLY = 0000400
+NL0 = 0
+NL1 = 0000400
+CRDLY = 0003000
+CR0 = 0
+CR1 = 0001000
+CR2 = 0002000
+CR3 = 0003000
+TABDLY = 0014000
+TAB0 = 0
+TAB1 = 0004000
+TAB2 = 0010000
+TAB3 = 0014000
+XTABS = 0014000
+BSDLY = 0020000
+BS0 = 0
+BS1 = 0020000
+VTDLY = 0040000
+VT0 = 0
+VT1 = 0040000
+FFDLY = 0100000
+FF0 = 0
+FF1 = 0100000
+PAGEOUT = 0200000
+WRAP = 0400000
+CBAUD = 000000017
+CSIZE = 000000060
+CS5 = 0
+CS6 = 000000020
+CS7 = 000000040
+CS8 = 000000060
+CSTOPB = 000000100
+CREAD = 000000200
+PARENB = 000000400
+PARODD = 000001000
+HUPCL = 000002000
+CLOCAL = 000004000
+RCV1EN = 000010000
+XMT1EN = 000020000
+LOBLK = 000040000
+XCLUDE = 000100000
+CIBAUD = 003600000
+PAREXT = 004000000
+CNEW_RTSCTS = 010000000
+ISIG = 0000001
+ICANON = 0000002
+XCASE = 0000004
+ECHO = 0000010
+ECHOE = 0000020
+ECHOK = 0000040
+ECHONL = 0000100
+NOFLSH = 0000200
+IEXTEN = 0000400
+ITOSTOP = 0100000
+TOSTOP = ITOSTOP
+ECHOCTL = 0001000
+ECHOPRT = 0002000
+ECHOKE = 0004000
+DEFECHO = 0010000
+FLUSHO = 0020000
+PENDIN = 0040000
+TIOC = (ord('T')<<8)
+TCGETA = (TIOC|1)
+TCSETA = (TIOC|2)
+TCSETAW = (TIOC|3)
+TCSETAF = (TIOC|4)
+TCSBRK = (TIOC|5)
+TCXONC = (TIOC|6)
+TCFLSH = (TIOC|7)
+LDISC0 = 0
+LDISC1 = 1
+NTTYDISC = LDISC1
+TIOCFLUSH = (TIOC|12)
+TCSETLABEL = (TIOC|31)
+TCDSET = (TIOC|32)
+TCBLKMD = (TIOC|33)
+TIOCPKT = (TIOC|112)
+TIOCPKT_DATA = 0x00
+TIOCPKT_FLUSHREAD = 0x01
+TIOCPKT_FLUSHWRITE = 0x02
+TIOCPKT_NOSTOP = 0x10
+TIOCPKT_DOSTOP = 0x20
+TIOCPKT_IOCTL = 0x40
+TIOCNOTTY = (TIOC|113)
+TIOCSTI = (TIOC|114)
+TFIOC = (ord('F')<<8)
+oFIONREAD = (TFIOC|127)
+TO_STOP = LOBLK
+IOCTYPE = 0xff00
+TCGETS = (TIOC|13)
+TCSETS = (TIOC|14)
+TCSETSW = (TIOC|15)
+TCSETSF = (TIOC|16)
+TCSANOW = ((ord('T')<<8)|14)
+TCSADRAIN = ((ord('T')<<8)|15)
+TCSAFLUSH = ((ord('T')<<8)|16)
+TCIFLUSH = 0
+TCOFLUSH = 1
+TCIOFLUSH = 2
+TCOOFF = 0
+TCOON = 1
+TCIOFF = 2
+TCION = 3
+tIOC = (ord('t')<<8)
+TIOCGETD = (tIOC|0)
+TIOCSETD = (tIOC|1)
+TIOCHPCL = (tIOC|2)
+TIOCGETP = (tIOC|8)
+TIOCSETP = (tIOC|9)
+TIOCSETN = (tIOC|10)
+TIOCEXCL = (tIOC|13)
+TIOCNXCL = (tIOC|14)
+TIOCSETC = (tIOC|17)
+TIOCGETC = (tIOC|18)
+TIOCLBIS = (tIOC|127)
+TIOCLBIC = (tIOC|126)
+TIOCLSET = (tIOC|125)
+TIOCLGET = (tIOC|124)
+TIOCSBRK = (tIOC|123)
+TIOCCBRK = (tIOC|122)
+TIOCSDTR = (tIOC|121)
+TIOCCDTR = (tIOC|120)
+TIOCSLTC = (tIOC|117)
+TIOCGLTC = (tIOC|116)
+TIOCOUTQ = (tIOC|115)
+TIOCSTOP = (tIOC|111)
+TIOCSTART = (tIOC|110)
+TIOCGSID = (tIOC|22)
+TIOCSSID = (tIOC|24)
+TIOCMSET = (tIOC|26)
+TIOCMBIS = (tIOC|27)
+TIOCMBIC = (tIOC|28)
+TIOCMGET = (tIOC|29)
+TIOCM_LE = 0001
+TIOCM_DTR = 0002
+TIOCM_RTS = 0004
+TIOCM_ST = 0010
+TIOCM_SR = 0020
+TIOCM_CTS = 0040
+TIOCM_CAR = 0100
+TIOCM_CD = TIOCM_CAR
+TIOCM_RNG = 0200
+TIOCM_RI = TIOCM_RNG
+TIOCM_DSR = 0400
+TIOCREMOTE = (tIOC|30)
+TIOCSIGNAL = (tIOC|31)
+ISPTM = ((ord('P')<<8)|1)
+UNLKPT = ((ord('P')<<8)|2)
+SVR4SOPEN = ((ord('P')<<8)|100)
+LDIOC = (ord('D')<<8)
+LDOPEN = (LDIOC|0)
+LDCLOSE = (LDIOC|1)
+LDCHG = (LDIOC|2)
+LDGETT = (LDIOC|8)
+LDSETT = (LDIOC|9)
+LDSMAP = (LDIOC|10)
+LDGMAP = (LDIOC|11)
+LDNMAP = (LDIOC|12)
+DIOC = (ord('d')<<8)
+DIOCGETP = (DIOC|8)
+DIOCSETP = (DIOC|9)
+FIORDCHK = ((ord('f')<<8)|3)
 CLNEXT = CTRL(ord('v'))
 CWERASE = CTRL(ord('w'))
 CFLUSHO = CTRL(ord('o'))
@@ -248,7 +485,7 @@
 LDISC1 = 1
 NTTYDISC = LDISC1
 TIOCFLUSH = (TIOC|12)
-TCSETLABEL = (TIOC|13)
+TCSETLABEL = (TIOC|31)
 TCDSET = (TIOC|32)
 TCBLKMD = (TIOC|33)
 TIOCPKT = (TIOC|112)
diff --git a/Lib/irix5/auds.py b/Lib/irix5/auds.py
deleted file mode 100755
index fb992a9..0000000
--- a/Lib/irix5/auds.py
+++ /dev/null
@@ -1,106 +0,0 @@
-import audio
-
-RATE = 8192
-
-# Initialize the audio stuff
-audio.setrate(3)
-audio.setoutgain(100)	# for speaker
-
-play = audio.write
-
-def samp(n):
-	savegain = audio.getoutgain()
-	try:
-		audio.setoutgain(0)
-		x = raw_input('Hit Enter to sample ' + `n` + ' seconds: ')
-		return audio.read(n*RATE)
-	finally:
-		audio.setoutgain(savegain)
-
-def echo(s, delay, gain):
-	return s[:delay] + audio.add(s[delay:], audio.amplify(s, gain, gain))
-
-def save(s, file):
-	f = open(file, 'w')
-	f.write(s)
-
-def load(file):
-	return loadfp(open(file, 'r'))
-
-def loadfp(fp):
-	s = ''
-	while 1:
-		buf = fp.read(16*1024)
-		if not buf: break
-		s = s + buf
-	return s
-
-def unbias(s):
-	if not s: return s
-	a = audio.chr2num(s)
-	sum = 0
-	for i in a: sum = sum + i
-	bias = (sum + len(a)/2) / len(a)
-	print 'Bias value:', bias
-	if bias:
-		for i in range(len(a)):
-			a[i] = a[i] - bias
-		s = audio.num2chr(a)
-	return s
-
-# Stretch by a/b.
-# Think of this as converting the sampling rate from a samples/sec
-# to b samples/sec.  Or, if the input is a bytes long, the output
-# will be b bytes long.
-#
-def stretch(s, a, b):
-	y = audio.chr2num(s)
-	m = len(y)
-	out = []
-	n = m * b / a
-	# i, j will walk through y and out (step 1)
-	# ib, ja are i*b, j*a and are kept as close together as possible
-	i, ib = 0, 0
-	j, ja = 0, 0
-	for j in range(n):
-		ja = ja+a
-		while ib < ja:
-			i = i+1
-			ib = ib+b
-		if i >= m:
-			break
-		if ib == ja:
-			out.append(y[i])
-		else:
-			out.append((y[i]*(ja-(ib-b)) + y[i-1]*(ib-ja)) / b)
-	return audio.num2chr(out)
-
-def sinus(freq): # return a 1-second sine wave
-	from math import sin, pi
-	factor = 2.0*pi*float(freq)/float(RATE)
-	list = range(RATE)
-	for i in list:
-		list[i] = int(sin(float(i) * factor) * 127.0)
-	return audio.num2chr(list)
-
-def softclip(s):
-	if '\177' not in s and '\200' not in s:
-		return s
-	num = audio.chr2num(s)
-	extremes = (-128, 127)
-	for i in range(1, len(num)-1):
-		if num[i] in extremes:
-			num[i] = (num[i-1] + num[i+1]) / 2
-	return audio.num2chr(num)
-
-def demo():
-	gday = load('gday')[1000:6000]
-	save(gday, 'gday0')
-	gg = [gday]
-	for i in range(1, 10):
-		for g in gg: play(g)
-		g = stretch(gday, 10, 10-i)
-		save(g, 'gday' + `i`)
-		gg.append(g)
-	while 1:
-		for g in gg: play(g)
diff --git a/Lib/irix5/regen b/Lib/irix5/regen
index 13f9d74..4c4ea5c 100755
--- a/Lib/irix5/regen
+++ b/Lib/irix5/regen
@@ -6,6 +6,7 @@
 esac
 set -v
 h2py /usr/include/sys/fcntl.h
+h2py /usr/include/sys/file.h
 h2py /usr/include/sys/socket.h
 h2py -i '(u_long)' /usr/include/netinet/in.h
 h2py /usr/include/sys/termios.h
diff --git a/Lib/plat-irix5/FCNTL.py b/Lib/plat-irix5/FCNTL.py
index 12c60fa..96d8451 100755
--- a/Lib/plat-irix5/FCNTL.py
+++ b/Lib/plat-irix5/FCNTL.py
@@ -1,4 +1,40 @@
 # Generated by h2py from /usr/include/sys/fcntl.h
+
+# Included from sys/types.h
+
+# Included from sgidefs.h
+_MIPS_ISA_MIPS1 = 1
+_MIPS_ISA_MIPS2 = 2
+_MIPS_ISA_MIPS3 = 3
+_MIPS_ISA_MIPS4 = 4
+_MIPS_SIM_ABI32 = 1
+_MIPS_SIM_NABI32 = 2
+_MIPS_SIM_ABI64 = 3
+P_MYID = (-1)
+P_MYHOSTID = (-1)
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
 FNDELAY = 0x04
 FAPPEND = 0x08
 FSYNC = 0x10
@@ -28,8 +64,6 @@
 F_GETFL = 3
 F_SETFL = 4
 F_GETLK = 14
-F_O_GETLK = 5
-F_GETLK = 14
 F_SETLK = 6
 F_SETLKW = 7
 F_CHKFL = 8
@@ -38,11 +72,21 @@
 F_SETBSDLK = 12
 F_SETBSDLKW = 13
 F_DIOINFO = 30
+F_FSGETXATTR = 31
+F_FSSETXATTR = 32
+F_GETLK64 = 33
+F_SETLK64 = 34
+F_SETLKW64 = 35
+F_ALLOCSP64 = 36
+F_FREESP64 = 37
+F_GETBMAP = 38
+F_FSSETDM = 39
 F_RSETLK = 20
 F_RGETLK = 21
 F_RSETLKW = 22
 F_GETOWN = 23
 F_SETOWN = 24
+F_O_GETLK = 5
 F_O_GETOWN = 10
 F_O_SETOWN = 11
 F_RDLCK = 01
diff --git a/Lib/plat-irix5/FILE.py b/Lib/plat-irix5/FILE.py
new file mode 100755
index 0000000..05697c1
--- /dev/null
+++ b/Lib/plat-irix5/FILE.py
@@ -0,0 +1,239 @@
+# Generated by h2py from /usr/include/sys/file.h
+
+# Included from sys/types.h
+
+# Included from sgidefs.h
+_MIPS_ISA_MIPS1 = 1
+_MIPS_ISA_MIPS2 = 2
+_MIPS_ISA_MIPS3 = 3
+_MIPS_ISA_MIPS4 = 4
+_MIPS_SIM_ABI32 = 1
+_MIPS_SIM_NABI32 = 2
+_MIPS_SIM_ABI64 = 3
+P_MYID = (-1)
+P_MYHOSTID = (-1)
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
+
+# Included from sys/sema.h
+HP_NOPOLICY = 0
+HP_ADDOFF = 1
+HP_MULOFF = 2
+SEMA_NAMSZ = 8
+SEMA_NOHIST = 0x1
+SEMA_LIFO = 0x2
+SEMA_MUTEX = 0x4
+SEMA_METER = 0x8
+SEMAOP_PSEMA = 1
+SEMAOP_VSEMA = 2
+SEMAOP_CPSEMA = 3
+SEMAOP_CVSEMA = 4
+SEMAOP_WSEMA = 5
+SEMAOP_UNSEMA = 6
+SEMAOP_INIT = 7
+SEMAOP_FREE = 8
+SSOP_PHIT = 1
+SSOP_PSLP = 2
+SSOP_PWAKE = 6
+SSOP_PRESIG = 7
+SSOP_POSTSIG = 8
+SSOP_VNOWAKE = 3
+SSOP_VWAKE = 4
+SSOP_CPHIT = 1
+SSOP_CPMISS = 5
+SSOP_CVNOWAKE = 3
+SSOP_CVWAKE = 4
+SSOP_WMISS = 5
+SSOP_WWAKE = 4
+SSOP_RMV = 9
+TZERO = 10
+SEMA_NOP = 0
+SEMA_WAKE = 1
+SEMA_VSEMA = 2
+SEMA_SPINOP = 3
+MR_ACCESS = 0x1
+MR_UPDATE = 0x2
+def cv_signal(cv): return cvsema(cv);
+
+def cv_destroy(cv): return freesema(cv)
+
+def mutex_enter(m): return psema(m, PZERO | PNOSTOP)
+
+def mutex_exit(m): return vsema(m)
+
+def mutex_destroy(m): return freesema(m)
+
+def MUTEX_HELD(m): return (ownsema(m))
+
+def MUTEX_HELD(m): return (1)
+
+RW_READER = MR_ACCESS
+RW_WRITER = MR_UPDATE
+def rw_exit(r): return mrunlock(r)
+
+def rw_tryupgrade(r): return cmrpromote(r)
+
+def rw_downgrade(r): return mrdemote(r)
+
+def rw_destroy(r): return mrfree(r)
+
+def RW_WRITE_HELD(r): return ismrlocked(r, MR_UPDATE)
+
+def RW_READ_HELD(r): return ismrlocked(r, MR_ACCESS)
+
+
+# Included from sys/splock.h
+SPLOCKNAMSIZ = 8
+SPLOCK_NONE = 0
+SPLOCK_SOFT = 1
+SPLOCK_HARD = 2
+OWNER_NONE = -1
+MAP_LOCKID = 0
+SPLOCK_MAX = (96*1024)
+SPLOCK_MAX = 32768
+MIN_POOL_SIZE = 256
+MAX_POOL_SIZE = 16384
+DEF_SEMA_POOL = 8192
+DEF_VNODE_POOL = 1024
+DEF_FILE_POOL = 1024
+def ownlock(x): return 1
+
+def splock(x): return 1
+
+def io_splock(x): return 1
+
+def apvsema(x): return vsema(x)
+
+def apcpsema(x): return cpsema(x)
+
+def apcvsema(x): return cvsema(x)
+
+def mp_mrunlock(a): return mrunlock(a)
+
+def apvsema(x): return 0
+
+def apcpsema(x): return 1
+
+def apcvsema(x): return 0
+
+def mp_mrunlock(a): return 0
+
+
+# Included from sys/fcntl.h
+FNDELAY = 0x04
+FAPPEND = 0x08
+FSYNC = 0x10
+FNONBLOCK = 0x80
+FASYNC = 0x1000
+FNONBLK = FNONBLOCK
+FDIRECT = 0x8000
+FCREAT = 0x0100
+FTRUNC = 0x0200
+FEXCL = 0x0400
+FNOCTTY = 0x0800
+O_RDONLY = 0
+O_WRONLY = 1
+O_RDWR = 2
+O_NDELAY = 0x04
+O_APPEND = 0x08
+O_SYNC = 0x10
+O_NONBLOCK = 0x80
+O_DIRECT = 0x8000
+O_CREAT = 0x100
+O_TRUNC = 0x200
+O_EXCL = 0x400
+O_NOCTTY = 0x800
+F_DUPFD = 0
+F_GETFD = 1
+F_SETFD = 2
+F_GETFL = 3
+F_SETFL = 4
+F_GETLK = 14
+F_SETLK = 6
+F_SETLKW = 7
+F_CHKFL = 8
+F_ALLOCSP = 10
+F_FREESP = 11
+F_SETBSDLK = 12
+F_SETBSDLKW = 13
+F_DIOINFO = 30
+F_FSGETXATTR = 31
+F_FSSETXATTR = 32
+F_GETLK64 = 33
+F_SETLK64 = 34
+F_SETLKW64 = 35
+F_ALLOCSP64 = 36
+F_FREESP64 = 37
+F_GETBMAP = 38
+F_FSSETDM = 39
+F_RSETLK = 20
+F_RGETLK = 21
+F_RSETLKW = 22
+F_GETOWN = 23
+F_SETOWN = 24
+F_O_GETLK = 5
+F_O_GETOWN = 10
+F_O_SETOWN = 11
+F_RDLCK = 01
+F_WRLCK = 02
+F_UNLCK = 03
+O_ACCMODE = 3
+FD_CLOEXEC = 1
+FD_NODUP_FORK = 4
+FMASK = 0x90FF
+FOPEN = 0xFFFFFFFF
+FREAD = 0x01
+FWRITE = 0x02
+FNDELAY = 0x04
+FAPPEND = 0x08
+FSYNC = 0x10
+FNONBLOCK = 0x80
+FASYNC = 0x1000
+FNONBLK = FNONBLOCK
+FDIRECT = 0x8000
+FCREAT = 0x0100
+FTRUNC = 0x0200
+FEXCL = 0x0400
+FNOCTTY = 0x0800
+IRIX4_FASYNC = 0x40
+FMARK = 0x4000
+FDEFER = 0x2000
+FINPROGRESS = 0x0400
+FINVIS = 0x0100
+FNMFS = 0x2000
+FCLOSEXEC = 001
+FDSHD = 0x0001
+FDNOMARK = 0x0002
+FDIGNPROGRESS = 0x0004
+LOCK_SH = 1
+LOCK_EX = 2
+LOCK_NB = 4
+LOCK_UN = 8
+F_OK = 0
+X_OK = 1
+W_OK = 2
+R_OK = 4
+L_SET = 0
+L_INCR = 1
+L_XTND = 2
diff --git a/Lib/plat-irix5/IN.py b/Lib/plat-irix5/IN.py
index 325a021..2d67892 100755
--- a/Lib/plat-irix5/IN.py
+++ b/Lib/plat-irix5/IN.py
@@ -1,8 +1,51 @@
 # Generated by h2py from /usr/include/netinet/in.h
+
+# Included from sys/endian.h
+LITTLE_ENDIAN = 1234
+BIG_ENDIAN = 4321
+PDP_ENDIAN = 3412
+BYTE_ORDER = BIG_ENDIAN
+BYTE_ORDER = LITTLE_ENDIAN
+def ntohl(x): return (x)
+
+def ntohs(x): return (x)
+
+def htonl(x): return (x)
+
+def htons(x): return (x)
+
+def htonl(x): return ntohl(x)
+
+def htons(x): return ntohs(x)
+
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
 IPPROTO_IP = 0
 IPPROTO_ICMP = 1
 IPPROTO_IGMP = 2
 IPPROTO_GGP = 3
+IPPROTO_ENCAP = 4
 IPPROTO_TCP = 6
 IPPROTO_EGP = 8
 IPPROTO_PUP = 12
@@ -17,20 +60,35 @@
 IPPROTO_MAX = 256
 IPPORT_RESERVED = 1024
 IPPORT_USERRESERVED = 5000
+IPPORT_MAXPORT = 65535
+def IN_CLASSA(i): return (((long)(i) & 0x80000000) == 0)
+
 IN_CLASSA_NET = 0xff000000
 IN_CLASSA_NSHIFT = 24
 IN_CLASSA_HOST = 0x00ffffff
 IN_CLASSA_MAX = 128
+def IN_CLASSB(i): return (((long)(i) & 0xc0000000) == 0x80000000)
+
 IN_CLASSB_NET = 0xffff0000
 IN_CLASSB_NSHIFT = 16
 IN_CLASSB_HOST = 0x0000ffff
 IN_CLASSB_MAX = 65536
+def IN_CLASSC(i): return (((long)(i) & 0xe0000000) == 0xc0000000)
+
 IN_CLASSC_NET = 0xffffff00
 IN_CLASSC_NSHIFT = 8
 IN_CLASSC_HOST = 0x000000ff
+def IN_CLASSD(i): return (((long)(i) & 0xf0000000) == 0xe0000000)
+
 IN_CLASSD_NET = 0xf0000000
 IN_CLASSD_NSHIFT = 28
 IN_CLASSD_HOST = 0x0fffffff
+def IN_MULTICAST(i): return IN_CLASSD(i)
+
+def IN_EXPERIMENTAL(i): return (((long)(i) & 0xf0000000) == 0xf0000000)
+
+def IN_BADCLASS(i): return (((long)(i) & 0xf0000000) == 0xf0000000)
+
 INADDR_ANY = 0x00000000
 INADDR_BROADCAST = 0xffffffff
 INADDR_LOOPBACK = 0x7F000001
diff --git a/Lib/plat-irix5/SOCKET.py b/Lib/plat-irix5/SOCKET.py
index 0ba0742..401de2b 100755
--- a/Lib/plat-irix5/SOCKET.py
+++ b/Lib/plat-irix5/SOCKET.py
@@ -1,4 +1,27 @@
 # Generated by h2py from /usr/include/sys/socket.h
+
+# Included from sys/bsd_types.h
+
+# Included from sys/mkdev.h
+ONBITSMAJOR = 7
+ONBITSMINOR = 8
+OMAXMAJ = 0x7f
+OMAXMIN = 0xff
+NBITSMAJOR = 14
+NBITSMINOR = 18
+MAXMAJ = 0x1ff
+MAXMIN = 0x3ffff
+OLDDEV = 0
+NEWDEV = 1
+MKDEV_VER = NEWDEV
+def major(dev): return __major(MKDEV_VER, dev)
+
+def minor(dev): return __minor(MKDEV_VER, dev)
+
+
+# Included from sys/select.h
+FD_SETSIZE = 1024
+NBBY = 8
 SOCK_STREAM = 1
 SOCK_DGRAM = 2
 SOCK_RAW = 3
@@ -70,6 +93,8 @@
 AF_GOSIP = 22
 AF_SDL = 23
 AF_MAX = (AF_SDL+1)
+def OPTLEN(x): return ((((x) + sizeof(long) - 1) / sizeof(long)) * sizeof(long))
+
 PF_UNSPEC = AF_UNSPEC
 PF_UNIX = AF_UNIX
 PF_INET = AF_INET
diff --git a/Lib/plat-irix5/TERMIOS.py b/Lib/plat-irix5/TERMIOS.py
index a360786..2ac7487 100755
--- a/Lib/plat-irix5/TERMIOS.py
+++ b/Lib/plat-irix5/TERMIOS.py
@@ -1,6 +1,4 @@
-# Generated by h2py from /usr/include/termios.h
-
-# Included from sys/termios.h
+# Generated by h2py from /usr/include/sys/termios.h
 
 # Included from sys/ttydev.h
 B0 = 0
@@ -30,7 +28,8 @@
 _MIPS_ISA_MIPS3 = 3
 _MIPS_ISA_MIPS4 = 4
 _MIPS_SIM_ABI32 = 1
-_MIPS_SIM_ABI64 = 2
+_MIPS_SIM_NABI32 = 2
+_MIPS_SIM_ABI64 = 3
 P_MYID = (-1)
 P_MYHOSTID = (-1)
 
@@ -43,7 +42,7 @@
 OMAXMIN = 0xff
 NBITSMAJOR = 14
 NBITSMINOR = 18
-MAXMAJ = 0xff
+MAXMAJ = 0x1ff
 MAXMIN = 0x3ffff
 OLDDEV = 0
 NEWDEV = 1
@@ -222,6 +221,244 @@
 # Included from net/soioctl.h
 
 # Included from sys/termio.h
+
+# Included from sys/termios.h
+_POSIX_VDISABLE = 0
+def CTRL(c): return ((c)&037)
+
+IBSHIFT = 16
+NCC = 8
+NCCS = 23
+VINTR = 0
+VQUIT = 1
+VERASE = 2
+VKILL = 3
+VEOF = 4
+VEOL = 5
+VEOL2 = 6
+VMIN = 4
+VTIME = 5
+VSWTCH = 7
+VSTART = 8
+VSTOP = 9
+VSUSP = 10
+VDSUSP = 11
+VREPRINT = 12
+VDISCARD = 13
+VWERASE = 14
+VLNEXT = 15
+VRPRNT = VREPRINT
+VFLUSHO = VDISCARD
+VCEOF = NCC
+VCEOL = (NCC + 1)
+CNUL = 0
+CDEL = 0377
+CESC = ord('\\')
+CINTR = 0177
+CQUIT = 034
+CERASE = CTRL(ord('H'))
+CKILL = CTRL(ord('U'))
+CEOL = 0
+CEOL2 = 0
+CEOF = CTRL(ord('d'))
+CEOT = CEOF
+CSTART = CTRL(ord('q'))
+CSTOP = CTRL(ord('s'))
+CSWTCH = CTRL(ord('z'))
+CNSWTCH = 0
+CSUSP = CSWTCH
+CLNEXT = CTRL(ord('v'))
+CWERASE = CTRL(ord('w'))
+CFLUSHO = CTRL(ord('o'))
+CFLUSH = CFLUSHO
+CRPRNT = CTRL(ord('r'))
+CDSUSP = CTRL(ord('y'))
+CBRK = 0377
+IGNBRK = 0000001
+BRKINT = 0000002
+IGNPAR = 0000004
+PARMRK = 0000010
+INPCK = 0000020
+ISTRIP = 0000040
+INLCR = 0000100
+IGNCR = 0000200
+ICRNL = 0000400
+IUCLC = 0001000
+IXON = 0002000
+IXANY = 0004000
+IXOFF = 0010000
+IMAXBEL = 0020000
+IBLKMD = 0040000
+OPOST = 0000001
+OLCUC = 0000002
+ONLCR = 0000004
+OCRNL = 0000010
+ONOCR = 0000020
+ONLRET = 0000040
+OFILL = 0000100
+OFDEL = 0000200
+NLDLY = 0000400
+NL0 = 0
+NL1 = 0000400
+CRDLY = 0003000
+CR0 = 0
+CR1 = 0001000
+CR2 = 0002000
+CR3 = 0003000
+TABDLY = 0014000
+TAB0 = 0
+TAB1 = 0004000
+TAB2 = 0010000
+TAB3 = 0014000
+XTABS = 0014000
+BSDLY = 0020000
+BS0 = 0
+BS1 = 0020000
+VTDLY = 0040000
+VT0 = 0
+VT1 = 0040000
+FFDLY = 0100000
+FF0 = 0
+FF1 = 0100000
+PAGEOUT = 0200000
+WRAP = 0400000
+CBAUD = 000000017
+CSIZE = 000000060
+CS5 = 0
+CS6 = 000000020
+CS7 = 000000040
+CS8 = 000000060
+CSTOPB = 000000100
+CREAD = 000000200
+PARENB = 000000400
+PARODD = 000001000
+HUPCL = 000002000
+CLOCAL = 000004000
+RCV1EN = 000010000
+XMT1EN = 000020000
+LOBLK = 000040000
+XCLUDE = 000100000
+CIBAUD = 003600000
+PAREXT = 004000000
+CNEW_RTSCTS = 010000000
+ISIG = 0000001
+ICANON = 0000002
+XCASE = 0000004
+ECHO = 0000010
+ECHOE = 0000020
+ECHOK = 0000040
+ECHONL = 0000100
+NOFLSH = 0000200
+IEXTEN = 0000400
+ITOSTOP = 0100000
+TOSTOP = ITOSTOP
+ECHOCTL = 0001000
+ECHOPRT = 0002000
+ECHOKE = 0004000
+DEFECHO = 0010000
+FLUSHO = 0020000
+PENDIN = 0040000
+TIOC = (ord('T')<<8)
+TCGETA = (TIOC|1)
+TCSETA = (TIOC|2)
+TCSETAW = (TIOC|3)
+TCSETAF = (TIOC|4)
+TCSBRK = (TIOC|5)
+TCXONC = (TIOC|6)
+TCFLSH = (TIOC|7)
+LDISC0 = 0
+LDISC1 = 1
+NTTYDISC = LDISC1
+TIOCFLUSH = (TIOC|12)
+TCSETLABEL = (TIOC|31)
+TCDSET = (TIOC|32)
+TCBLKMD = (TIOC|33)
+TIOCPKT = (TIOC|112)
+TIOCPKT_DATA = 0x00
+TIOCPKT_FLUSHREAD = 0x01
+TIOCPKT_FLUSHWRITE = 0x02
+TIOCPKT_NOSTOP = 0x10
+TIOCPKT_DOSTOP = 0x20
+TIOCPKT_IOCTL = 0x40
+TIOCNOTTY = (TIOC|113)
+TIOCSTI = (TIOC|114)
+TFIOC = (ord('F')<<8)
+oFIONREAD = (TFIOC|127)
+TO_STOP = LOBLK
+IOCTYPE = 0xff00
+TCGETS = (TIOC|13)
+TCSETS = (TIOC|14)
+TCSETSW = (TIOC|15)
+TCSETSF = (TIOC|16)
+TCSANOW = ((ord('T')<<8)|14)
+TCSADRAIN = ((ord('T')<<8)|15)
+TCSAFLUSH = ((ord('T')<<8)|16)
+TCIFLUSH = 0
+TCOFLUSH = 1
+TCIOFLUSH = 2
+TCOOFF = 0
+TCOON = 1
+TCIOFF = 2
+TCION = 3
+tIOC = (ord('t')<<8)
+TIOCGETD = (tIOC|0)
+TIOCSETD = (tIOC|1)
+TIOCHPCL = (tIOC|2)
+TIOCGETP = (tIOC|8)
+TIOCSETP = (tIOC|9)
+TIOCSETN = (tIOC|10)
+TIOCEXCL = (tIOC|13)
+TIOCNXCL = (tIOC|14)
+TIOCSETC = (tIOC|17)
+TIOCGETC = (tIOC|18)
+TIOCLBIS = (tIOC|127)
+TIOCLBIC = (tIOC|126)
+TIOCLSET = (tIOC|125)
+TIOCLGET = (tIOC|124)
+TIOCSBRK = (tIOC|123)
+TIOCCBRK = (tIOC|122)
+TIOCSDTR = (tIOC|121)
+TIOCCDTR = (tIOC|120)
+TIOCSLTC = (tIOC|117)
+TIOCGLTC = (tIOC|116)
+TIOCOUTQ = (tIOC|115)
+TIOCSTOP = (tIOC|111)
+TIOCSTART = (tIOC|110)
+TIOCGSID = (tIOC|22)
+TIOCSSID = (tIOC|24)
+TIOCMSET = (tIOC|26)
+TIOCMBIS = (tIOC|27)
+TIOCMBIC = (tIOC|28)
+TIOCMGET = (tIOC|29)
+TIOCM_LE = 0001
+TIOCM_DTR = 0002
+TIOCM_RTS = 0004
+TIOCM_ST = 0010
+TIOCM_SR = 0020
+TIOCM_CTS = 0040
+TIOCM_CAR = 0100
+TIOCM_CD = TIOCM_CAR
+TIOCM_RNG = 0200
+TIOCM_RI = TIOCM_RNG
+TIOCM_DSR = 0400
+TIOCREMOTE = (tIOC|30)
+TIOCSIGNAL = (tIOC|31)
+ISPTM = ((ord('P')<<8)|1)
+UNLKPT = ((ord('P')<<8)|2)
+SVR4SOPEN = ((ord('P')<<8)|100)
+LDIOC = (ord('D')<<8)
+LDOPEN = (LDIOC|0)
+LDCLOSE = (LDIOC|1)
+LDCHG = (LDIOC|2)
+LDGETT = (LDIOC|8)
+LDSETT = (LDIOC|9)
+LDSMAP = (LDIOC|10)
+LDGMAP = (LDIOC|11)
+LDNMAP = (LDIOC|12)
+DIOC = (ord('d')<<8)
+DIOCGETP = (DIOC|8)
+DIOCSETP = (DIOC|9)
+FIORDCHK = ((ord('f')<<8)|3)
 CLNEXT = CTRL(ord('v'))
 CWERASE = CTRL(ord('w'))
 CFLUSHO = CTRL(ord('o'))
@@ -248,7 +485,7 @@
 LDISC1 = 1
 NTTYDISC = LDISC1
 TIOCFLUSH = (TIOC|12)
-TCSETLABEL = (TIOC|13)
+TCSETLABEL = (TIOC|31)
 TCDSET = (TIOC|32)
 TCBLKMD = (TIOC|33)
 TIOCPKT = (TIOC|112)
diff --git a/Lib/plat-irix5/regen b/Lib/plat-irix5/regen
index 13f9d74..4c4ea5c 100755
--- a/Lib/plat-irix5/regen
+++ b/Lib/plat-irix5/regen
@@ -6,6 +6,7 @@
 esac
 set -v
 h2py /usr/include/sys/fcntl.h
+h2py /usr/include/sys/file.h
 h2py /usr/include/sys/socket.h
 h2py -i '(u_long)' /usr/include/netinet/in.h
 h2py /usr/include/sys/termios.h
