/* 全ドライブのカレントディレクトリを得る */
/* フロッピーは入っている場合のみ有効 */

#include <iocslib.h>
#include <doslibm.h>
#include <direct.h>
#include "defines.h"
#include "adisk.h"

int AllGetDir(unchar cdirs[DRIVES][MAXDIR+2])
{
int i,j,d=0;
unchar dname[MAXPATH];
struct DPBPTR dpb;
static unchar drv[MAXDRIVE]={'@',':',0};
	/* フロッピー用データ：-1は後で+1されるから */
	j=0x90-1;
	for (i=0;i<DRIVES;i++) {
		cdirs[i][0]=0;
		drv[0]='A'+i; /* ドライブ名作成 */
		if (GETASSIGN(drv,dname)!=0) { /* つながっているドライブのみ */
			/* ドライブ情報取得 */
			if (GETDPB(i+1,&dpb)<0) continue; /* リムーバブルディスクは挿入されている時だけ */
			/* フロッピーは挿入されている時だけ */
			if (fd_id(dpb.id)) {
				j++;
				if ((B_DRVCHK(j<<8,0)&BIT1)==0) continue;
			}
			/* ドライブ名込みで記録（復帰時のため）*/
			cdirs[i][0]='A'+i;
			cdirs[i][1]=':';
			strcpy(&cdirs[i][2],dpb.dirbuf);
			d++; /* 有効ドライブ数 */
		}
	}
	return(d);
}

#if 0
main()
{
unchar cdirs[DRIVES][MAXDIR+2];
int i;
	AllGetDir(cdirs);
	for (i=0;i<DRIVES;i++) {
		if (cdirs[i][0]) printf("%s\n",&cdirs[i][0]);
	}
}
#endif
