#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>

static char     drive[3];
static char     dr[100][14];
static char     path[256]="";
int             pt=0,lg=0;
int             drv;
int             i,t;
struct find_t   find;
union REGS      inregs,outregs;
struct SREGS    segregs;

void main(int argc,char *argv[])
{
/*  ヘルプ  */
	if(argc==1){
	  printf("*******************************************************\n");
	  printf("****  多階層サブディレクトリ作成ツール  by N.Baba  ****\n");
	  printf("*******************************************************\n");
	  printf("MFD.EXE [<drive>:]<directry>  \n");
	  exit(0);
	  }

/*  ドライブが指定されているか？  */
	drv=0;
	if(argv[1][1]==':'){
	  drive[0]=argv[1][0];
	  drive[1]=':';
	  drive[2]='\0';
	  pt+=2;
	  drv=1;
	  }

/*  ディレクトリ名の分割  */
	for(i=0;i<100;i++){
	  lg=0;
	  for(;;){
	    dr[i][lg]=argv[1][pt];
	    if((lg!=0)&&((dr[i][lg]=='\\')||(dr[i][lg]=='\0'))) break;
	    lg++;
	    pt++;
	    }
	  if(dr[i][lg]=='\0') break;
	  if(dr[i][lg]=='\\') dr[i][lg]='\0';
	  }


/*  ディレクトリ作成  */
	if(drv==1) strcpy(path,drive);
	for(t=0;t<=i;t++){
	  strcat(path,dr[t]);
	  printf("\"%s\"作成中...\n",path);
	  /*  ディレクトリの存在確認  */
	  if(_dos_findfirst(path,_A_SUBDIR,&find)!=0){
	    /*  作成  */
	    inregs.h.ah=0x39;
	    segread(&segregs);
	    inregs.x.dx=(unsigned)path;
	    intdosx(&inregs,&outregs,&segregs);
	    /*  成功したか？  */
	    if(outregs.x.ax==3)printf("  ????  作成失敗！！  ????  \n");
	    else printf("  ****  作成しました  ****  \n");
	    }
	  else printf("  ----  存在しています  ----  \n");
	  }
}
