Index: libcio/close.c
===================================================================
--- libcio/close.c	(revision 2340de67b3c56bd94cf80e9427ab1a5dd59717cf)
+++ libcio/close.c	(revision 4a17aeb071c8dfe3aaa4c73be9382677986d0ef8)
@@ -74,5 +74,5 @@
 	chp->c_ioctl = 0;
 	chp->c_seek  = 0;
-	chp->c_close = _badfd;
+	chp->c_close = _badfc;
 
 	if (_fatmod)
@@ -115,5 +115,5 @@
 
 	for (fd = 0; fd < MAXCHAN; ++fd)
-		if (chantab[fd].c_close NE _badfd)
+		if (chantab[fd].c_close NE _badfc)
 			close(fd);
 
Index: libcio/clusmap.c
===================================================================
--- libcio/clusmap.c	(revision 2340de67b3c56bd94cf80e9427ab1a5dd59717cf)
+++ libcio/clusmap.c	(revision 4a17aeb071c8dfe3aaa4c73be9382677986d0ef8)
@@ -289,5 +289,6 @@
 void FILEpr(FILE *fp)
 {
-	int16_t	(*arg)(), ft;
+	chclo arg;
+	int16_t ft;
 	int8_t	*ds, *fsn, *fse;
 	struct	fcb	*fcp;
@@ -305,5 +306,5 @@
 	ft = 0;
 
-	if (arg EQ _noper) {
+	if (arg EQ _nopc) {
 
 		ds = ((struct devtabl *)chantab[fp->_unit].c_arg)->d_name;
Index: libcio/fsinit.c
===================================================================
--- libcio/fsinit.c	(revision 2340de67b3c56bd94cf80e9427ab1a5dd59717cf)
+++ libcio/fsinit.c	(revision 4a17aeb071c8dfe3aaa4c73be9382677986d0ef8)
@@ -39,9 +39,9 @@
 /*
    ============================================================================
-	_badfd() -- set "bad fd" error
+	_badfio() -- set "bad fd" error on I/O
    ============================================================================
 */
 
-int16_t _badfd(void)
+int16_t _badfio(io_arg arg, int8_t *buff, int16_t len)
 {
 	errno = EBADF;		/* set bad fd code */
@@ -51,9 +51,32 @@
 /*
    ============================================================================
-	_noper() -- null return with no error condition
+	_badfc() -- set "bad fd" error on close
    ============================================================================
 */
 
-int16_t _noper(void)
+int16_t _badfc(io_arg arg)
+{
+	errno = EBADF;		/* set bad fd code */
+	return(FAILURE);	/* return with an error indication */
+}
+
+/*
+   ============================================================================
+	_nopo() -- null open with no error condition
+   ============================================================================
+*/
+
+int16_t _nopo(int8_t *name, int16_t flag, int16_t mode, struct channel *chp, struct devtabl *dp)
+{
+	return(SUCCESS);	/* return with a non-error indication */
+}
+
+/*
+   ============================================================================
+	_nopc() -- null close with no error condition
+   ============================================================================
+*/
+
+int16_t _nopc(io_arg arg)
 {
 	return(SUCCESS);	/* return with a non-error indication */
@@ -70,5 +93,5 @@
 */
 
-void InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, int16_t (*cfp)(), io_arg charg)
+void InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, chclo cfp, io_arg charg)
 {
 	cp->c_read  = rdi;
@@ -128,10 +151,10 @@
 	Stdbufs = Stdbuf[MAXDFILE-1];
 
-	InitCH(&chantab[0], 2, 0, 1, 0, _noper, (io_arg)CON_DEV );	/*  0 - stdin  */
-	InitCH(&chantab[1], 0, 2, 1, 0, _noper, (io_arg)CON_DEV );	/*  1 - stdout */
-	InitCH(&chantab[2], 0, 2, 1, 0, _noper, (io_arg)CON_DEV );	/*  2 - stderr */
+	InitCH(&chantab[0], 2, 0, 1, 0, _nopc, (io_arg)CON_DEV );	/*  0 - stdin  */
+	InitCH(&chantab[1], 0, 2, 1, 0, _nopc, (io_arg)CON_DEV );	/*  1 - stdout */
+	InitCH(&chantab[2], 0, 2, 1, 0, _nopc, (io_arg)CON_DEV );	/*  2 - stderr */
 
 	for (i = 3; i < MAXCHAN; i++)	/*  3..MAXCHAN-1 - not preassigned */
-		InitCH(&chantab[i], 0, 0, 0, 0, _badfd, (io_arg)0L );
+		InitCH(&chantab[i], 0, 0, 0, 0, _badfc, (io_arg)0L );
 
 	_bpbin  = FALSE;	/* BPB isn't in memory */
Index: libcio/fsinit.x
===================================================================
--- libcio/fsinit.x	(revision 2340de67b3c56bd94cf80e9427ab1a5dd59717cf)
+++ libcio/fsinit.x	(revision 4a17aeb071c8dfe3aaa4c73be9382677986d0ef8)
@@ -37,7 +37,12 @@
 */
 
-extern	void		InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, int16_t (*cfp)(), io_arg charg);
+extern	void		InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, chclo cfp, io_arg charg);
 extern	void		InitFS(void);
 extern	void		Init_CB(FILE *fp, int8_t unit, int8_t flags, int32_t *bufad, int16_t bufsize);
 extern	int16_t		_badfd(void);
 extern	int16_t		_noper(void);
+
+extern	int16_t		_badfc(io_arg arg);
+extern	int16_t		_badfio(io_arg arg, int8_t *buff, int16_t len);
+extern	int16_t		_nopc(io_arg arg);
+extern	int16_t		_nopo(int8_t *name, int16_t flag, int16_t mode, struct channel *chp, struct devtabl *dp);
Index: libcio/open.c
===================================================================
--- libcio/open.c	(revision 2340de67b3c56bd94cf80e9427ab1a5dd59717cf)
+++ libcio/open.c	(revision 4a17aeb071c8dfe3aaa4c73be9382677986d0ef8)
@@ -8,5 +8,5 @@
 #include "ram.h"
 
-static struct device condev  = { 2, 2, 1, 0, _noper  };
+static struct device condev  = { 2, 2, 1, 0, _nopo  };
 static struct device filedev = { 1, 1, 0, 1, _fileop };
 
@@ -48,5 +48,5 @@
 
 	for (chp = chantab, fd = 0 ; fd < MAXCHAN ; ++chp, ++fd)
-		if (chp->c_close EQ _badfd)
+		if (chp->c_close EQ _badfc)
 			goto fndchan;
 
@@ -90,9 +90,9 @@
 	chp->c_ioctl = dev->d_ioctl;
 	chp->c_seek  = dev->d_seek;
-	chp->c_close = _noper;
+	chp->c_close = _nopc;
 
 	if ((*dev->d_open)(name, flag, mode, chp, dp) < 0) {	/* open */
 
-		chp->c_close = _badfd;	/* couldn't open for some reason */
+		chp->c_close = _badfc;	/* couldn't open for some reason */
 		return(FAILURE);
 	}
Index: libcio/read.c
===================================================================
--- libcio/read.c	(revision 2340de67b3c56bd94cf80e9427ab1a5dd59717cf)
+++ libcio/read.c	(revision 4a17aeb071c8dfe3aaa4c73be9382677986d0ef8)
@@ -38,7 +38,7 @@
 #include "ram.h"
 
-static int16_t (*t_read[])() = {
+static int16_t (*t_read[])(io_arg arg, int8_t *buff, int16_t len) = {
 
-	_badfd,		/* 0 - invalid type */
+	_badfio,	/* 0 - invalid type */
 	_filerd,	/* 1 - disk file read */
 	_conin		/* 2 - console read */
Index: libcio/write.c
===================================================================
--- libcio/write.c	(revision 2340de67b3c56bd94cf80e9427ab1a5dd59717cf)
+++ libcio/write.c	(revision 4a17aeb071c8dfe3aaa4c73be9382677986d0ef8)
@@ -10,7 +10,9 @@
 #include "ram.h"
 
-static	int16_t	(*wr_tab[])() = {	/* write routine dispatch table */
-
-	_badfd,		/* 0 - invalid entry */
+/* write routine dispatch table */
+
+static	int16_t	(*wr_tab[])(io_arg arg, int8_t *buff, int16_t len) = {
+
+	_badfio,	/* 0 - invalid entry */
 	_filewr,	/* 1 - disk file */
 	_conwr		/* 2 - console device */
