home *** CD-ROM | disk | FTP | other *** search
- /* _____________________________________________
- [> <]
- Project [> ARCterm VII <]
- Author [> Hugo Fiennes <]
- Date started [> 05-March-1990 <]
- [> <]
- Module name [> Driver loading <]
- Current version [> 00.03 <]
- Version date [> 24-November-1992 <]
- State [> Unfinished <]
- [> <]
- [> This source is COPYRIGHT © 1992 by <]
- [> Hugo Fiennes of The Serial Port <]
- [>_____________________________________________<]
- */
-
- #include <stdio.h>
- #include <stdlib.h>
-
- int *driver_speedtable,driver_flags,driver_version,driver_noofspeeds;
- char *driver_info,*driver_creator;
-
- void *driver_load(char *driver)
- {
- FILE *drv; long len; char fname[80]; int *driver_block;
-
- /* Make driver filename */
- sprintf(fname,"SerialDev:Modules.%s.Driver",driver);
-
- if ((drv=fopen(fname,"rb"))==NULL) return(NULL);
- fseek(drv,0,SEEK_END);
- len=ftell(drv);
- fseek(drv,0,SEEK_SET);
-
- if ((driver_block=malloc(len))==NULL)
- {
- /* Can't get space for driver */
- fclose(drv);
- return(0);
- }
-
- /* Load driver */
- fread(driver_block,1,len,drv);
- fclose(drv);
-
- driver_flags=driver_block[49];
- driver_version=driver_block[48];
- driver_speedtable=&driver_block[64];
- driver_info=(char*)&driver_block[32];
- driver_creator=(char*)&driver_block[40];
-
- driver_noofspeeds=0;
- while(driver_speedtable[driver_noofspeeds++]);
- driver_noofspeeds--;
-
- return(driver_block);
- }
-
- void *pipe_load(char *name)
- {
- FILE *drv; long len; char fname[80];
- int *terminal_block;
-
- /* Make driver filename */
- sprintf(fname,"SerialDev:Modules.%s.Driver", name);
-
- if ((drv=fopen(fname,"rb"))==NULL) return(NULL);
- fseek(drv,0,SEEK_END);
- len=ftell(drv);
- fseek(drv,0,SEEK_SET);
-
- if ((terminal_block=malloc(len))==NULL)
- {
- /* Can't get space for driver */
- fclose(drv);
- return(0);
- }
-
- /* Load driver */
- fread(terminal_block,1,len,drv);
- fclose(drv);
- return(terminal_block);
- }
-