亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? commands.c

?? 修改ucos使之稱為 vc++ 下可以編譯的通過兵能演示的代碼
?? C
字號:
/*	 
 *	commands.c
 *	the genie shell command part for ucosII
 *	under skyeye
 *
 *	Bugs report:	 ganganwen@163.com
 *	Last modified:	 2005-04-25 
 *  changed by: wenjia
 */


#include	"includes.h"



command ShellComms[MAX_COMMAND_NUM];

FS_FILE *myfile;
char mybuffer[0x100];

char CurDir[64]="\\";		//show current dir
char TargetVal[64] = "\\";  
//TargetVal數(shù)組第一功能功能:用于組合當(dāng)前目錄與輸入數(shù)據(jù)如 
//CurDir = "\mydir"   cat 1.txt 時組合成cat \mydir\1.txt
//第二功能:保留CurDir目錄,因為如果cd參數(shù)第一個字符為\時就從&CurDir[0] 
//開始復(fù)制,但若輸入目錄出錯則將原來的CurDir目錄還原。

INT8U DirExist(const char *DirName);
void RewindRoot(void);


void CreateTargetVal(const char *arg);

//判斷目錄名是否存在
//1:目錄存在  0:目錄不存在
INT8U DirExist(const char *DirName)
{
    FS_DIR *dirp;
    dirp = FS_OpenDir(DirName);
    if (dirp)
    {
        FS_CloseDir(dirp);
       // _log("Open %s Exist!\n", DirName);
        return 1;
    } else {
       // _log("The %s Dir is not exist!\n", DirName);
        return 0;
    }
} 
//--------------------------------------------
//#define CUR_DRI_MAX_LEN 32
//FS_DIR CurDir[CUR_DRI_MAX_LEN 32];
 // struct FS_DIRENT *direntp;
/*********************************************************************
*
*             _write_file
*
  This routine demonstrates, how to create and write to a file
  using the file system.
*/

static void _write_file(const char *name, const char *txt) {
  int x;
  
  /* create file */
  myfile = FS_FOpen(name,"w");
  if (myfile) {
    /* write to file */
    x = FS_FWrite(txt,1,strlen(txt),myfile);
    /* all data written ? */
    if (x!=(int)strlen(txt)) {
      /* check, why not all data was written */
      x = FS_FError(myfile);
      sprintf(mybuffer,"Not all bytes written because of error %d.\n\n",x);
      _error(mybuffer);
    }
    /* close file */
    FS_FClose(myfile);
	_log("\n\n");
  }
  else {
    sprintf(mybuffer,"Unable to create file %s\n\n",name);
    _error(mybuffer);
  }
}


/*********************************************************************
*
*             _dump_file
*
  This routine demonstrates, how to open and read from a file using 
  the file system.
*/

static void _dump_file(const char *name) {
  int x;

  /* open file */
  myfile = FS_FOpen(name,"r");
  if (myfile) {
    /* read until EOF has been reached */
    do {
      x = FS_FRead(mybuffer,1,sizeof(mybuffer)-1,myfile);
      mybuffer[x]=0;
      if (x) {
        _log(mybuffer);
      }
    } while (x);
    /* check, if there is no more data, because of EOF */
    x = FS_FError(myfile);
    if (x!=FS_ERR_EOF) {
      /* there was a problem during read operation */
      sprintf(mybuffer,"Error %d during read operation.\n",x);
      _error(mybuffer);
    }
    /* close file */
    FS_FClose(myfile);
	_log("\n\n");
  }
  else {
    sprintf(mybuffer,"Unable to open file %s.\n",name);
    _error(mybuffer);
  }
}


/*********************************************************************
*
*             _show_directory
*
  This routine demonstrates, how to read a directory.
*/

#if FS_POSIX_DIR_SUPPORT

static void _show_directory(const char *name) {
  FS_DIR *dirp;
  struct FS_DIRENT *direntp;

  dirp = FS_OpenDir(name);
  if (dirp) {
    do {
      direntp = FS_ReadDir(dirp);
      if (direntp) {
        sprintf(mybuffer,"%s\n",direntp->d_name);
        _log(mybuffer);
      }
    } while (direntp);
    FS_CloseDir(dirp);
	_log("\n");
  }
  else {
    _error("Unable to open directory\n");
  }
}

/*static INT8U _cd_directory(const char *name)
{
    FS_DIR *dirp;
    struct FS_DIRENT *direntp;   
	
}*/
#endif /* FS_POSIX_DIR_SUPPORT */


/*********************************************************************
*
*             _show_free
*
  This routine demonstrates, how to read disk space information.
*/

static void _show_free(const char *device) {
  FS_DISKFREE_T disk_data;
  int x;

  _log("Disk information of ");
  _log(device);
  _log("\n");
  x = FS_IoCtl(device,FS_CMD_GET_DISKFREE,0,(void*) &disk_data);
  if (x==0) {
    sprintf(mybuffer,"total clusters     : %lu\navailable clusters : %lu\nsectors/cluster    : %u\nbytes per sector   : %u\n",
          disk_data.total_clusters, disk_data.avail_clusters, disk_data.sectors_per_cluster, disk_data.bytes_per_sector);
    _log(mybuffer);
  } 
  else {
    _error("Invalid drive specified\n\n");
  }
}

/*********************************************************************
*
*             InitCommands
*
  This routine init shell
*/
void InitCmd(void)
{
    INT8U TmpCnt = MAX_COMMAND_NUM;
    while (TmpCnt--)
    {
        ShellComms[TmpCnt].CommandFunc = NULL;
        ShellComms[TmpCnt].name = NULL;
        ShellComms[TmpCnt].num  = 0;
    }
}

INT8U InitCommands()
{
    InitCmd();
	ShellComms[0].num = 0;
	ShellComms[0].name = "ls";
	ShellComms[0].CommandFunc = lsFunc;

	ShellComms[1].num = 1;
	ShellComms[1].name = "rm";
	ShellComms[1].CommandFunc = rmFunc;

	ShellComms[2].num = 2;
	ShellComms[2].name = "write";
	ShellComms[2].CommandFunc = writeFunc;

	ShellComms[3].num = 3;
	ShellComms[3].name = "cat";
	ShellComms[3].CommandFunc = catFunc;

	ShellComms[4].num = 4;
	ShellComms[4].name = "format";
	ShellComms[4].CommandFunc = formatFunc;

	ShellComms[5].num = 5;
	ShellComms[5].name = "mkdir";
	ShellComms[5].CommandFunc = mkdirFunc;

	ShellComms[6].num = 6;
	ShellComms[6].name = "rmdir";
	ShellComms[6].CommandFunc = rmdirFunc;

	ShellComms[7].num = 7;
	ShellComms[7].name = "free";
	ShellComms[7].CommandFunc = freeFunc;

	ShellComms[8].num = 8;
	ShellComms[8].name = "help";
	ShellComms[8].CommandFunc = helpFunc;

	ShellComms[9].num = 9;
	ShellComms[9].name = "cd";
	ShellComms[9].CommandFunc = cdFunc;

	ShellComms[10].num = 10;
	ShellComms[10].name = "pwd";
	ShellComms[10].CommandFunc = pwdFunc;


    ShellComms[11].num = 11;
	ShellComms[11].name = "exit";
	ShellComms[11].CommandFunc = ExitFunc;
        
    ShellComms[12].num = 12;
	ShellComms[12].name = "show";
	ShellComms[12].CommandFunc = ShowFunc;

	return 0;
}

INT8U ShowFunc(INT8U argc,char **argv)
{

    _log("\n=========  TargetVal =  ");
	_log(TargetVal);
	_log("========\n");
    return 0;
}

INT8U ExitFunc(INT8U argc,char **argv)
{
    exit(0);    
    return 0;
}


INT8U pwdFunc(INT8U argc,char **argv)
{
	if (argc != 0)
	{
		_error("PWD is single arg\n");
		return 1;
	}
	_log(CurDir);
	_log("\n");
	return 0;
}
//功能:設(shè)置成根目錄
void RewindRoot(void)
{
    CurDir[0] = '\\';
    CurDir[1] = '\0';
}


//更改當(dāng)前目錄命令
INT8U cdFunc(INT8U argc,char **argv)
{
	INT8U DirCurPos = 0;
    INT8U CmdLen    = 0;
	INT8U TmpVal    = 0;
    INT8U IsRoot    = 0;
    INT8U IsBackup  = 0;
    INT8U BackupLen = 0;
	DirCurPos = strlen(CurDir);   //取得當(dāng)前目錄的字符長度
    if (argc != 1)
	{
		_error("please input command as:cd directoryname ");
        _error("\n cd \\ change to root\n cd .. \n cd \\MyDir\\Dir1\n");
		_error("\n\n");
		return 1;
	}
	if (strcmp(argv[0], "..") == 0)  //回到上一級
	{
		if (1 == DirCurPos)         //設(shè)定長度為1的為根目錄
		{
#if EN_DEBUG == 1
			_error("This is root dir\n");
#endif
			return 1;
		} else {
			TmpVal = DirCurPos;   //取得當(dāng)前目錄的長度并從最后開始查找\
		   //從最后開始查找將該級目錄清除 
           //例:\my\dir1  從1開始找到r最后找到\dir的\清除
            while (TmpVal--) 
		   {
			   if (CurDir[TmpVal] == '\\')   //是否找到上一級目錄
			   {
				   if (TmpVal == 0)         //根目錄
				   {
					   RewindRoot();
				   } else {
				      CurDir[TmpVal] = '\0';   //將最后的\換成結(jié)束符
				   }
#if EN_DEBUG  == 1
                   _log("\n CurDir Len = %d\n", strlen(CurDir));
#endif
				   break;    //退出循環(huán)
               } else {
                   CurDir[TmpVal] = '\0';  //清除字符
               }
		   }
		}
    } else	if (strcmp(argv[0], "\\") == 0)	{   //
		RewindRoot();   //回到根目錄
	} else {
	    if (strcmp(CurDir, "\\") == 0)   //比較方法用于比較是否是當(dāng)前目錄
		{
            IsRoot = 1;
            if ('\\' == argv[0][0])   //如果當(dāng)輸入?yún)?shù)是帶\開始的,如cd \dir\dir1
            {
                DirCurPos = 0;   
            }
#if EN_DEBUG == 1
            _log("\ncd start at root! DirCurPos = %d\n", DirCurPos);
#endif
		} else {
            if ('\\' == argv[0][0])   //如果當(dāng)輸入?yún)?shù)是帶\開始的,如cd \dir\dir1
            {
                //因為當(dāng)前目錄不是根目錄,所以為了防止出錯保留原目錄
                IsBackup  = 1;
                BackupLen = DirCurPos + 1;
                FS__CLIB_strncpy(&TargetVal[0], &CurDir[0], BackupLen);
                DirCurPos = 0;     //從頭開始復(fù)制命令
            } else {
		        CurDir[DirCurPos] = '\\';
			    DirCurPos++;
            }
		}
        CmdLen    = strlen(argv[0]);
        FS__CLIB_strncpy(&CurDir[DirCurPos], argv[0], CmdLen + 1);  //確保字符是以'\0'結(jié)束請看FS__CLIB_strncpy源碼
#if EN_DEBUG == 1
        _log("\nafter FS__CLIB_strncpy() CurDir= %s  DirCurPos = %d CmdLen = %d\n", CurDir, DirCurPos, CmdLen);
#endif
        if (DirExist(CurDir) == 0)  //目錄不存在
        {
			_log(argv[0]);
            _log("  Dir is not exist!\n", );
            if (1 == IsRoot)   //是否是根目錄
            {
                RewindRoot();               
            } else {
                if (1 == IsBackup)
                {
                    FS__CLIB_strncpy(&CurDir[0], &TargetVal[0], BackupLen);
                } else {
                    CurDir[DirCurPos - 1] = '\0';   //將加入的目錄清除
                }
            }
        } else {
#if EN_DEBUG == 1
            _log("Open %s Exist!\n", CurDir);  //目錄存在
#endif
        }
	}
#if EN_DEBUG == 1
    _log("\nCurDir = %s \n", CurDir);
#endif
	return 0;
}

INT8U lsFunc(INT8U argc,char **argv)
{			

	if(argc == 0)
    {
        _show_directory(CurDir);//_show_directory("");
    } else {
        _show_directory(argv[0]);
    }
	return 0;
}
		

INT8U rmFunc(INT8U argc,char **argv)
{

	if(argc != 1)
	{
		_error("please input command as:rm filename");
		_error("\n\n");
		return 1;
	}
    CreateTargetVal(argv[0]);
	//if(!FS_Remove(argv[0]))
    if(!FS_Remove(TargetVal))
	{
		_log("remove ");
		_log(argv[0]);
		_log(" successful\n\n");
	}
	else
	{
		_error("remove failure!\n\n");
	}
	return 0;
}

INT8U writeFunc(INT8U argc,char **argv)
{
	if(argc != 2)
	{
		_error("please input command as:create filename data");
		_error("\n\n");
		return 1;
	}
    CreateTargetVal(argv[0]);

	//_write_file(argv[0], argv[1]);
    _write_file(TargetVal, argv[1]);

	return 0;
}


//用于將arg參數(shù)構(gòu)造成CurDir + arg = TargetParam
void CreateTargetVal(const char *arg)
{
    INT8U CurDirLen = 0;
    //INT8U ArgIsStartRoot = 0;

    CurDirLen = strlen(CurDir);
    if ('\\' == arg[0])
    {
     //   ArgIsStartRoot  = 1;
        FS__CLIB_strncpy(&TargetVal[0], arg, strlen(arg) + 1);
    } else {
        if (1 == CurDirLen)  //判斷是否當(dāng)前目錄
        {
           //if (1 == ArgIsStartRoot)
        //{
        //    FS__CLIB_strncpy(&TargetVal[0], arg, strlen(arg) + 1);
        //} else{
            FS__CLIB_strncpy(&TargetVal[CurDirLen], arg, strlen(arg) + 1);
        //}
    //} else {
      //  if (1 == ArgIsStartRoot)
       // {
       //      FS__CLIB_strncpy(&TargetVal[0], arg, strlen(arg) + 1);
        } else {
            FS__CLIB_strncpy(TargetVal, CurDir, CurDirLen + 1);
            TargetVal[CurDirLen++] = '\\';
#if EN_DEBUG == 1
            _log("\n %s\n", TargetVal);
#endif
            FS__CLIB_strncpy(&TargetVal[CurDirLen], arg, strlen(arg) + 1);
        }
    }
#if EN_DEBUG == 1
    _log("\nTargetVal = %s\n", TargetVal);
#endif
}

INT8U catFunc(INT8U argc,char **argv)
{
    if(argc != 1)
	{
		_error("please input command as:cat filename");
		_error("\n\n");
		return 1;
	}
    CreateTargetVal(argv[0]);
    _dump_file(TargetVal);
	return 0;
}

INT8U formatFunc(INT8U argc,char **argv)
{
	int x;

    /* format your RAM disk */
    x = FS_IoCtl("ram:0:",FS_CMD_FORMAT_MEDIA,FS_MEDIA_RAM_16KB,0);
    if (x!=0) {
      _error("Cannot format RAM disk.\n\n");
	  return 1;
	}
	else{
		_log("format successful\n\n");
		return 0;
	}
}

INT8U mkdirFunc(INT8U argc,char **argv)
{
	if(argc != 1)
	{
		_error("please input command as:mkdir filename");
		_error("\n\n");
		return 1;
	}
    CreateTargetVal(argv[0]);
	//if(!FS_MkDir(argv[0]))
    if(!FS_MkDir(TargetVal))
	{
		_log("make directory ");
		_log(argv[0]);
		_log(" successful\n\n");
	}
	else
	{
		_error("mkdir failure! please check disk full or unformated\n");
	}
	return 0;
}

INT8U rmdirFunc(INT8U argc,char **argv)
{
	if(argc != 1)
	{
		_error("please input command as:mkdir filename");
		_error("\n\n");
		return 1;
	}
    CreateTargetVal(argv[0]);
	//if(!FS_RmDir(argv[0]))
    if(!FS_RmDir(TargetVal))
	{
		_log("remove ");
		_log(argv[0]);
		_log(" successful\n\n");
	}
	else
	{
		_error("remove failure! please check the directory name\n");
	}
	return 0;
}


INT8U freeFunc(INT8U argc,char **argv)
{
	_show_free("");
	_log("\n");
	return 0;
}

INT8U helpFunc(INT8U argc,char **argv)
{
    ShowHelp();
	return 0;
}

void ShowHelp(void)
{
	_log("\nformat - 格式化\nmkdir  - 建立目錄\nwrite  - 創(chuàng)建文件\nrmdir  - 刪除目錄\nls  \
   - 顯示目錄\ncat    - 打開文件\nrm     - 刪除文件\nfree   - 顯示空間\ncd  \
   - 更改當(dāng)前目錄\nshow   - 顯示TargetVal值\npwd    - 顯示當(dāng)前目錄\nexit   - 退出\n");
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区调教| 色综合天天综合在线视频| 日韩欧美电影一二三| 激情六月婷婷综合| 亚洲天堂中文字幕| 日韩视频在线你懂得| 97久久超碰国产精品电影| 亚洲成av人片观看| 亚洲欧美一区二区不卡| 日韩美一区二区三区| 在线观看免费亚洲| 不卡的av电影在线观看| 蜜桃av一区二区| 亚洲一区成人在线| 中文字幕字幕中文在线中不卡视频| 7777精品伊人久久久大香线蕉的| 国产成人高清视频| 国产中文字幕一区| 婷婷亚洲久悠悠色悠在线播放| 国产精品久久久久久一区二区三区 | 成人aa视频在线观看| 青青草精品视频| 午夜精品一区二区三区免费视频| 亚洲色欲色欲www| 国产精品电影一区二区| 国产精品剧情在线亚洲| 国产精品你懂的| 亚洲精品一卡二卡| 亚洲日本中文字幕区| 亚洲人一二三区| 亚洲一区二区中文在线| 亚洲精品中文在线| 毛片av中文字幕一区二区| 日韩国产精品91| 国产二区国产一区在线观看| 国产成人无遮挡在线视频| 91在线精品一区二区三区| 欧美亚洲综合另类| 日韩你懂的电影在线观看| 久久精品一区二区| 亚洲精品成人悠悠色影视| 免费亚洲电影在线| 99久久99久久久精品齐齐| 欧美一区二区性放荡片| 欧美精品色一区二区三区| 成人美女在线观看| 国产aⅴ精品一区二区三区色成熟| av在线这里只有精品| 亚洲欧洲日产国码二区| 麻豆一区二区三| 色噜噜夜夜夜综合网| 国产精品免费观看视频| 免费成人在线网站| 色婷婷av一区二区三区大白胸| 欧美一区二视频| 亚洲欧美乱综合| 国产精品小仙女| 日韩午夜激情免费电影| 天天综合网 天天综合色| 久久久亚洲精品一区二区三区 | 成人性生交大片免费看中文| 日韩免费观看高清完整版| 综合色天天鬼久久鬼色| 美女视频黄久久| 欧美中文一区二区三区| 国产视频视频一区| 日本欧美一区二区三区乱码| 在线观看日韩毛片| 一区二区三区精品久久久| 成人国产一区二区三区精品| 欧美变态tickle挠乳网站| 亚洲欧美偷拍三级| 欧美日韩国产美女| 久久久亚洲精华液精华液精华液 | 欧美日韩精品系列| 国产一区二区在线视频| 日韩欧美不卡一区| 人人超碰91尤物精品国产| 欧美一级理论性理论a| 日韩avvvv在线播放| 欧美刺激脚交jootjob| 国产在线精品国自产拍免费| 欧美日韩国产天堂| 黑人巨大精品欧美一区| 亚洲色图一区二区| 欧美疯狂性受xxxxx喷水图片| 97精品久久久久中文字幕| 99视频超级精品| 亚洲人精品一区| 欧美日韩你懂得| 国产成都精品91一区二区三| 亚洲乱码中文字幕| 精品久久一区二区| 一本到不卡免费一区二区| 日本不卡中文字幕| 亚洲精品免费在线观看| 久久蜜桃av一区精品变态类天堂 | 久久综合国产精品| 欧美一卡二卡在线观看| 91原创在线视频| 久久国产乱子精品免费女| 一区二区三区免费观看| 国产精品私房写真福利视频| 日韩精品一区二区三区三区免费| 一本到不卡精品视频在线观看| 国产成人精品三级| 国产一区二区伦理片| 激情亚洲综合在线| 麻豆国产精品官网| 美国三级日本三级久久99| 亚洲一区二区三区激情| 亚洲激情图片一区| 亚洲国产视频一区| 中文字幕日韩欧美一区二区三区| 国产一区二区调教| 亚洲一区二区在线视频| 亚洲国产精品久久不卡毛片| 亚洲国产日韩综合久久精品| 亚洲成人激情自拍| 久久国产精品第一页| 国内精品国产三级国产a久久 | 五月天久久比比资源色| 亚洲男女毛片无遮挡| 午夜精品福利久久久| 蜜桃一区二区三区在线| 国产乱码精品一区二区三区av | 奇米色777欧美一区二区| 国产在线精品一区二区 | 欧美在线一二三| 国产欧美日韩在线| 国产视频一区在线观看| 亚洲免费色视频| 精品一区二区三区香蕉蜜桃| 国产成人精品一区二| 6080国产精品一区二区| 国产片一区二区| 午夜精品免费在线观看| 国产精品一区二区久激情瑜伽| 色综合天天视频在线观看 | gogogo免费视频观看亚洲一| 麻豆国产精品官网| 色综合色狠狠天天综合色| 久久天天做天天爱综合色| 一区二区三区美女| 国产成人在线观看免费网站| 欧美群妇大交群中文字幕| 久久综合成人精品亚洲另类欧美| 亚洲欧洲日产国产综合网| 国产精品一区三区| 日韩一级完整毛片| 亚洲免费观看视频| 狠狠网亚洲精品| 欧美一区二区黄| 日本欧美肥老太交大片| 日韩久久精品一区| 亚洲精选一二三| 99国产欧美另类久久久精品| 国产精品―色哟哟| 国产精品乡下勾搭老头1| 91精品国产综合久久久久| 亚洲综合在线视频| 欧美日韩大陆一区二区| 舔着乳尖日韩一区| 精品成人私密视频| 不卡高清视频专区| ...中文天堂在线一区| 成人av电影在线观看| 欧美国产精品一区| 97国产精品videossex| 一级精品视频在线观看宜春院| 色妹子一区二区| 亚洲自拍都市欧美小说| 日韩欧美视频在线| 精品一区二区三区蜜桃| 中文字幕亚洲视频| 欧美日韩mp4| jlzzjlzz欧美大全| 日韩高清电影一区| 欧美一区二区三区四区久久| 不卡一区中文字幕| 日韩av电影天堂| 国产精品日韩成人| 8x8x8国产精品| 91黄色免费看| 99视频一区二区| 国产一区二区三区免费看| 亚洲国产aⅴ成人精品无吗| 亚洲欧洲色图综合| 国产女人aaa级久久久级| 欧美一级艳片视频免费观看| 色婷婷久久久久swag精品| 色狠狠色狠狠综合| 国产一区二区三区四| 欧美自拍偷拍午夜视频| 紧缚捆绑精品一区二区| 日韩**一区毛片| 丝袜美腿亚洲色图| 亚洲网友自拍偷拍| 一区二区三区四区高清精品免费观看 | 日本电影亚洲天堂一区|