📄 command.c
字号:
#include <command.h>
#define STATE_WHITESPACE 0
#define STATE_WORD 1
#define MAX_ARGS MAX_CMD_LEN/4
int argc, num_commands;
char *argv[MAX_ARGS];
int Help();
int Dir();
typedef int (*cmdproc)();
typedef struct {
char *cmd;
char *hlp;
cmdproc proc;
}CMD_STRUC;
CMD_STRUC CMD_INNER[] =
{ {"help", "show help", Help},
{"?", "= help", Help},
{"dir", "dir", Dir},
{NULL, NULL, NULL}
};
int Dir()
{
int i;
for(i=0;i<argc;i++)
{
PrintStr(argv[i]);
PrintStr("\r\n");
}
for(i=0; CMD_INNER[i].cmd!=NULL; i++)
{
if(CMD_INNER[i].hlp!=NULL)
{
PrintStr(CMD_INNER[i].cmd);
PrintStr(" ------ ");
PrintStr(CMD_INNER[i].hlp);
PrintChar('\r');
PrintChar('\n');
}
}
return 0;
}
int Help()
{
char i;
for(i=0;i<argc;i++)
{
PrintStr(argv[i]);
PrintStr("\r\n");
}
PrintStr("Welcome you come here\r\n");
PrintStr("2004.9.22\r\n");
return 0;
}
int GetCmdMatche(char *cmdline)
{
int i,j;
char temp;
for(i=0; CMD_INNER[i].cmd!=NULL; i++)
{
j=0;
while(*(cmdline+j) != 0)
{
temp = *(cmdline+j);
if(temp > 'A' && temp < 'Z') temp=temp+32;
if(*(CMD_INNER[i].cmd+j) != temp)
{
break;
}
j++;
}
if(*(CMD_INNER[i].cmd+j)==0&& *(cmdline+j)==0)
{
return i;
}
}
return -1;
}
void ParseArgs(char *cmdline, int *argc, char **argv)
{
char *c;
int state = STATE_WHITESPACE;
int i;
*argc = 0;
if(strlen(cmdline) == 0)
return;
/* convert all tabs into single spaces */
c = cmdline;
while(*c != '\0')
{
if(*c == '\t')
*c = ' ';
c++;
}
c = cmdline;
i = 0;
/* now find all words on the command line */
while(*c != '\0')
{
if(state == STATE_WHITESPACE)
{
if(*c != ' ')
{
argv[i] = c; //将argv[i]指向c
i++;
state = STATE_WORD;
}
}
else
{ /* state == STATE_WORD */
if(*c == ' ')
{
*c = '\0';
state = STATE_WHITESPACE;
}
}
c++;
}
*argc = i;
}
int ParseCmd(char *cmdline, int cmd_len)
{
int num_commands;
if(cmd_len == 0)return 0;
ParseArgs(cmdline, &argc, argv);
/* only whitespace */
if(argc == 0)
return 0;
num_commands = GetCmdMatche(argv[0]);
if(num_commands<0)
return -1;
if(CMD_INNER[num_commands].proc!=NULL)
CMD_INNER[num_commands].proc();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -