⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmdexp.c

📁 设计并实现一个多用户多级目录结构的文件系统
💻 C
字号:
/************************************************/
/*												*/
/*				cmdexp.c						*/
/*												*/
/************************************************/

#include <stdio.h>
#include <string.h>
#include "filsys.h"

char input_buf[20];						/* 命令行输入缓冲区 */
int over;								/* 命令行结束标记 */
/* 命令解释层函数 */
int cmdexp()
{
	over = 0;
	printf("[%s@localhost %s]$ ", user[user_id].u_name, cur_path_name);

	getcmd();

	/* 显示当前目录 */
	if(( strcmp( input_buf, "dir" ) == 0 ) ||
		( strcmp( input_buf, "l" ) == 0 ) ||
		( strcmp( input_buf, "ls" ) == 0 ))
	{
		_dir();
		clearbuf();
		return 0;
	}

	/* 改变当前目录 */
	if( strcmp( input_buf, "cd" ) == 0 )
	{
		getcmd();
		chdir ( input_buf );
		clearbuf();
		return 0;
	}

	/* 创建目录(建立子目录) */
	if(( strcmp( input_buf, "mkdir" ) == 0 ) ||
		( strcmp( input_buf, "md" ) == 0 ))
	{
		if( over )
		{
			printf( "mkdir: too few arguments\n" );
			clearbuf();
			return 0;
		}
		getcmd();
		if( input_buf[0] == '\0' )
		{
			printf( "mkdir: too few arguments\n" );
			clearbuf();
			return 0;
		}
		mkdir( input_buf );
		while( !over )
		{
			getcmd();
			if( input_buf[0] != '\0' )
				mkdir( input_buf );
		}
		clearbuf();
		return 0;
	}
	if(( strcmp( input_buf, "rmdir" ) == 0 ) ||
		( strcmp( input_buf, "rd" ) == 0 ))
	{
		if( over )
		{
			printf( "rmdir: too few arguments\n" );
			clearbuf();
			return 0;
		}
		getcmd();
		if( input_buf[0] == '\0' )
		{
			printf( "rmdir: too few arguments\n" );
			clearbuf();
			return 0;
		}
		rmdir( input_buf );
		while( !over )
		{
			getcmd();
			if( input_buf[0] != '\0' )
				rmdir( input_buf );
		}
		clearbuf();
		return 0;
	}
	if( strcmp( input_buf, "dir" ) == 0 )
	{
		clearbuf();
		return 0;
	}
	if( strcmp( input_buf, "dir" ) == 0 )
	{
		clearbuf();
		return 0;
	}
	if( strcmp( input_buf, "dir" ) == 0 )
	{
		return 0;
	}
	if( strcmp( input_buf, "logout" ) == 0 )
	{
		clearbuf();
		return 1;
	}

	/* 找不到该命令 */
	if( input_buf[0] != '\0' )
	{
		printf( "bash: %s: command not found\n", input_buf );
		clearbuf();
	}
	return 0;

}

/* 取得命令 */
getcmd()
{
	int i;

	i = 0;
	/* 取得命令 */
	while( !over )
	{
		input_buf[i] = getchar();
		if( input_buf[i] == ' ' )
		{
			if( i == 0 )					/* 命令行的开始是空格,应舍去 */
				i--;
			else
			{
				input_buf[i]='\0';
				break;
			}
		}
		else
			if( input_buf[i] == '\n' )
			{
				over = 1;
				input_buf[i]='\0';
				break;
			}
		i++;
	}
}

/* 清空缓冲区 */
clearbuf()
{
	while( !over )
	{
		if( getchar() =='\n' )
			break;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -