Subversion Repositories Kolibri OS

Rev

Rev 4645 | Rev 5624 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3067 leency 1
/////////////////////////////////////////////////////////////////////////////////////////
5482 leency 2
/////////////////////////                 Console                    ////////////////////
3067 leency 3
/////////////////////////////////////////////////////////////////////////////////////////
4
 
3866 punk_joker 5
#ifdef LANG_RUS
3975 leency 6
	?define ADD_DISK_TEXT "пробую добавить виртуальный диск"
7
	?define DELETE_DISK_TEXT "пробую удалить виртуальный диск"
8
	?define DONT_KNOW_DISK_SIZE_TEXT "его размер не указан, 10% свободной ОЗУ будет использовано"
9
	?define NEW_DISK_TEXT "размер диска будет: "
3067 leency 10
	char *rezult_text[]={
3866 punk_joker 11
	"операция успешно завершена",
12
	"неизвестный IOCTL, неверный размер предоставляемых данных...",
13
	"номер диска должен быть от 0 до 9",
14
	"размер создаваемого диска слишком велик",
15
	"размер создаваемого диска слишком мал",
16
	"ошибка выделения памяти",
17
	"неизвестная ошибка O_o",
3067 leency 18
	0};
3866 punk_joker 19
#else
3975 leency 20
	?define ADD_DISK_TEXT "trying to add disk"
21
	?define DELETE_DISK_TEXT "trying to delete virtual disk"
22
	?define DONT_KNOW_DISK_SIZE_TEXT "its size is not specified, 10% from free RAM will be used"
23
	?define NEW_DISK_TEXT "new DiskSize: "
3067 leency 24
	char *rezult_text[]={
3336 yogev_ezra 25
	"operation completed successfully",
3067 leency 26
	"unknown IOCTL code, wrong input/output size...",
27
	"DiskId must be from 0 to 9",
28
	"DiskSize is too large",
3336 yogev_ezra 29
	"DiskSize is too small, might be too little free RAM",
3067 leency 30
	"memory allocation failed",
31
	"unknown error O_o",
32
	0};
3866 punk_joker 33
#endif
3067 leency 34
 
3306 leency 35
char Console_Work()
3067 leency 36
{
37
	unsigned int disk_size, driver_rezult;
38
	char size_t[256];
39
 
40
	strlwr(#param);
41
 
42
	switch (param[0])
43
	{
44
		case '?': //яюью∙№ яю ъюььрэфрь
45
		case 'h':
4645 leency 46
			debugln("tmpdisk command line parameters:");
47
			debugln("a[number]s[size in MB] - add RAM disk");
48
			debugln("d[number] - delete RAM disk");
3067 leency 49
			ExitProcess();
50
			break;
51
		case 'd': //єфрышЄ№ фшёъ
4645 leency 52
			debugln(DELETE_DISK_TEXT);
3067 leency 53
			del_disk.DiskId = param[1]-'0';
54
			ioctl.handle   = driver_handle;
55
			ioctl.io_code  = DEV_DEL_DISK;
56
			ioctl.input    = #del_disk;
57
			ioctl.inp_size = sizeof(del_disk);
58
			ioctl.output   = 0;
59
			ioctl.out_size = 0;
5482 leency 60
			disk_sizes[del_disk.DiskId] = 0;
3067 leency 61
			break;
62
		case 'a': //фюсртшЄ№ фшёъ
4645 leency 63
			debugln(ADD_DISK_TEXT);
3067 leency 64
			disk_size= strchr(#param, 's');
65
			if (!disk_size)
66
			{
67
				add_disk.DiskSize = GetFreeRAM() / 5;
4645 leency 68
				debugln(DONT_KNOW_DISK_SIZE_TEXT);
3067 leency 69
			}
70
			else
71
				add_disk.DiskSize = atoi(#param+disk_size)*2048;
3975 leency 72
			strcpy(#size_t, NEW_DISK_TEXT);
4640 yogev_ezra 73
			strcat(#size_t, itoa(add_disk.DiskSize/2048));
3975 leency 74
			strcat(#size_t, " MB");
4645 leency 75
			debugln(#size_t);
3067 leency 76
			add_disk.DiskId = param[1]-'0';
77
			ioctl.handle   = driver_handle;
78
			ioctl.io_code  = DEV_ADD_DISK;
79
			ioctl.input    = #add_disk;
80
			ioctl.inp_size = sizeof(add_disk);
81
			ioctl.output   = 0;
82
			ioctl.out_size = 0;
5482 leency 83
			disk_sizes[add_disk.DiskId] = add_disk.DiskSize * 512;
3067 leency 84
			break;
85
		default:
4645 leency 86
			debugln("unknown command line parameters");
87
			debugln("use 'h' or '?' for help");
3067 leency 88
			ExitProcess();
89
	}
90
 
91
	driver_rezult = RuleDriver(#ioctl);
4645 leency 92
	if (driver_rezult<7) debugln(rezult_text[driver_rezult]);
3306 leency 93
	return driver_rezult;
3067 leency 94
}
95