Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
3067 leency 1
/////////////////////////////////////////////////////////////////////////////////////////
2
/////////////////////////                ъюэёюы№                     ////////////////////
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);
3869 punk_joker 41
//	debug(#param);
3067 leency 42
 
43
	switch (param[0])
44
	{
45
		case '?': //яюью∙№ яю ъюььрэфрь
46
		case 'h':
47
			debug("tmpdisk command line parameters:");
48
			debug("a[number]s[size in MB] - add RAM disk");
49
			debug("d[number] - delete RAM disk");
50
			ExitProcess();
51
			break;
52
		case 'd': //єфрышЄ№ фшёъ
3975 leency 53
			debug(DELETE_DISK_TEXT);
3067 leency 54
			del_disk.DiskId = param[1]-'0';
55
			ioctl.handle   = driver_handle;
56
			ioctl.io_code  = DEV_DEL_DISK;
57
			ioctl.input    = #del_disk;
58
			ioctl.inp_size = sizeof(del_disk);
59
			ioctl.output   = 0;
60
			ioctl.out_size = 0;
61
			break;
62
		case 'a': //фюсртшЄ№ фшёъ
3975 leency 63
			debug(ADD_DISK_TEXT);
3067 leency 64
			disk_size= strchr(#param, 's');
65
			if (!disk_size)
66
			{
67
				add_disk.DiskSize = GetFreeRAM() / 5;
3975 leency 68
				debug(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);
73
			strcat(#size_t, itoa(add_disk.DiskSize/2048));
74
			strcat(#size_t, " MB");
75
			debug(#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;
83
			break;
84
		default:
85
			debug("unknown command line parameters");
86
			debug("use 'h' or '?' for help");
87
			ExitProcess();
88
	}
89
 
90
	driver_rezult = RuleDriver(#ioctl);
91
	if (driver_rezult<7) debug(rezult_text[driver_rezult]);
3306 leency 92
	return driver_rezult;
3067 leency 93
}
94