/* P_DLIST.C */ #include LOCAL_C TEXT *GetTypeText(UINT type) { switch (type) { case P_FMEDIA_FLOPPY: return "Floppy"; case P_FMEDIA_HARDDISK: return "Hard"; case P_FMEDIA_FLASH: return "Flash"; case P_FMEDIA_RAM: return "RAM"; case P_FMEDIA_ROM: return "ROM"; case P_FMEDIA_WRITEPROTECTED: return "Protected"; } return "Unknown"; } LOCAL_C VOID ListDevices(VOID) { VOID *ncb,*dcb; INT ret; TEXT device[P_FNAMESIZE]; TEXT bb[E_MAX_ERROR_TEXT_SIZE]; P_DINFO dinfo; p_printf(" Device Name Type Size Free"); p_printf("=========== ========== ========== ======== ========"); p_open(&ncb,"FIL:",P_FNODE); while (!p_iow(ncb,P_FREAD,&device[0],NULL)) { p_scat(&device[0],"a:\\"); if (p_open(&dcb,&device[0],P_FDEVICE)) continue; while (!p_read(dcb,&device[P_FSYSNAMESIZE],0)) { if ((ret=p_dinfo(&device[0],&dinfo))<0) { p_errs(&bb[0],ret); p_printf("%- 12s %- 12s<%s>",&device[0],"**Failed**",&bb[0]); continue; } p_printf("%- 12s %- 12s%- 11s %7ldK %7ldK", &device[0],&dinfo.name[0],GetTypeText(dinfo.mediatype&0xff), (dinfo.size+512)>>10,(dinfo.free+512)>>10); } p_close(dcb); } p_close(ncb); } GLDEF_C INT main(VOID) { ListDevices(); p_getch(); return(0); }