MAGAZINE\VOL1.C  ·  C  ·  1005 B  ·  1991-07-02  ·  from PCPlus_Issue-61_October-1991_FluxEngine-360Kb
#include <stdio.h>
#include <int.h>
#include <stdlib.h>

union REGS steve;		/*for int calls*/
struct SREGS setregs;		/*to set the segment registers*/
int far *vol;
char wildcard[]={"*.*"}; 	/*wildcard name to search for*/
char far *vol_name;     	/*pointer for vol name*/

main()
{
int temp, count=0;	
vol=malloc(64*sizeof(char));	/*buffer for Int 21, funct 1a*/

steve.x.dx=FP_OFF(vol);		/*buffer offset in dx*/
steve.h.ah=0x1a;		/*function 26 in AH*/
setregs.ds=FP_SEG(vol);		/*ds to buffer segment*/
int86(0x21,&steve,&steve);	/*call int 21 to set buffer*/


steve.x.dx=FP_OFF(wildcard);	/*offset of wildcard string*/
steve.x.cx=8;			/*vol name attribute in cx*/
steve.h.ah=0x4e;		/*find first function 4e in ah*/
setregs.ds=FP_SEG(wildcard);	/*seg offset of string*/
int86(0x21,&steve,&steve);	/*call int 21*/

vol_name=(char far *) vol;	/*point vol_name at buffer*/
vol_name+=0x1e;			/*add offset*/
printf("\n%s\n",vol_name);	/*print name, compare it or whatever*/
}