home *** CD-ROM | disk | FTP | other *** search
- jzgetfcb( ffcb , fname , fdosdrive)
- TFCB *ffcb;
- char *fname;
- int fdosdrive;
- {
- char wdta[44]; /* dta buffer */
- TFCB wfcb; /* dummy fcb for function call */
- int wdtaseg,wdtaofs; /* hold orig dta address */
- char *strchr(),*w;
- char wname[9],wext[4]; /* place holders */
- TREG wreg;
-
- jzgetdta(&wdtaofs,&wdtaseg); /* get old dta */
-
- jzsetdta(wdta); /* set new dta address */
-
- memset(ffcb,' ',sizeof(TFCB)); /* fill with spaces */
-
- ffcb->flag = 0xFF;
- ffcb->attr = 7;
- ffcb->drive= fdosdrive;
-
- w = strchr(fname,'.');
-
- if (w) {
- strncpy(wname,fname,w - fname);
- wname[w-fname] = 0; /* terminate string */
- strcpy(wext,fname + (w - fname) + 1);
- }
- else {
- strcpy(wname,fname);
- wext[0] = 0;
- }
-
- memcpy(ffcb->name,wname,strlen(wname));
- memcpy(ffcb->ext ,wext ,strlen(wext ));
-
- wreg.h.ah = 0x11; /* get first file function */
- wreg.x.ds = getds();
- wreg.x.dx = (int) ffcb; /* get seg:off pointer to fcb */
- msdos(&wreg);
-
- if (wreg.h.al == 0xff)
- return(-1);
-
- memcpy(ffcb,wdta,sizeof(TFCB)); /* get info into return var */
-
- jzsetdta(wdtaofs); /* restore orig dta */
-
- return(0);
-
- }
-