home *** CD-ROM | disk | FTP | other *** search
- /*
- * Allows MSDOS program to open more than 20 files
- *
- * Use as:
- * mfile (size, array)
- * int size; - sizeof(array) is new maximum number of open files
- * char far* array; - array for the new table of file handlers
- *
- * Modified for Turbo C version of the MFILE.ASM from LISTSERV@VM1.NODAK.EDU
- *
- * Author: A.Galtchenko (alex@mars.ibioc.serpukhov.su)
- * Date: 8 jul 1991
- */
- #include <dos.h>
-
- typedef char far* FARPTR;
-
- void mfile (int size, char far* array)
-
- {
- unsigned psp;
- int far* pl;
- FARPTR far* pt;
- int i;
-
- psp = getpsp(); /* get PSP */
- pl = (int far*)MK_FP(psp,0x32); /* pointer to size of the filetable header */
- pt = (FARPTR far*)MK_FP(psp,0x34); /* pointer to filetable header */
- if (size > *pl) {
- for (i = 0; i < *pl; i++) /* save current filetable header */
- array[i] = (*pt)[i]; /* into new table */
- for (i = *pl; i < size; i++) /* fill rem of new table */
- array[i] = 0xff;
- *pt = array; /* new address of program's actual file table */
- *pl = size; /* new maximum number of open files */
- }
- }
-