Subversion Repositories Kolibri OS

Rev

Rev 7515 | 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
7515 leency 6
	?define DELETE_DISK_TEXT "Пробую удалить /tmp%i"
7
	?define NEW_DISK_TEXT "Пробую добавить виртуальный диск /tmp%i размером %i MB"
3067 leency 8
	char *rezult_text[]={
7515 leency 9
	"TmpDisk операция успешно завершена",
3866 punk_joker 10
	"неизвестный IOCTL, неверный размер предоставляемых данных...",
11
	"номер диска должен быть от 0 до 9",
12
	"размер создаваемого диска слишком велик",
13
	"размер создаваемого диска слишком мал",
14
	"ошибка выделения памяти",
15
	"неизвестная ошибка O_o",
3067 leency 16
	0};
3866 punk_joker 17
#else
7515 leency 18
	?define DELETE_DISK_TEXT "Trying to delete /tmp%i"
19
	?define NEW_DISK_TEXT "Trying to add virtual disk /tmp%i, the size of %i MB"
3067 leency 20
	char *rezult_text[]={
7515 leency 21
	"TmpDisk operation completed successfully",
3067 leency 22
	"unknown IOCTL code, wrong input/output size...",
23
	"DiskId must be from 0 to 9",
24
	"DiskSize is too large",
3336 yogev_ezra 25
	"DiskSize is too small, might be too little free RAM",
3067 leency 26
	"memory allocation failed",
27
	"unknown error O_o",
28
	0};
3866 punk_joker 29
#endif
3067 leency 30
 
3306 leency 31
char Console_Work()
3067 leency 32
{
33
	unsigned int disk_size, driver_rezult;
34
	char size_t[256];
35
 
36
	strlwr(#param);
37
 
38
	switch (param[0])
39
	{
7515 leency 40
		case 'd': //Delete disk
3067 leency 41
			del_disk.DiskId = param[1]-'0';
42
			ioctl.handle   = driver_handle;
43
			ioctl.io_code  = DEV_DEL_DISK;
44
			ioctl.input    = #del_disk;
45
			ioctl.inp_size = sizeof(del_disk);
46
			ioctl.output   = 0;
47
			ioctl.out_size = 0;
7515 leency 48
			sprintf(#size_t, DELETE_DISK_TEXT, add_disk.DiskId);
49
			debugln(#size_t);
3067 leency 50
			break;
7515 leency 51
		case 'a': //Add disk
3067 leency 52
			disk_size= strchr(#param, 's');
7774 leency 53
			if (!disk_size)	{
6278 leency 54
				add_disk.DiskSize = GetFreeRAM() / 5 * 2;
7774 leency 55
			} else {
5624 leency 56
				add_disk.DiskSize = atoi(disk_size+1)*2048;
57
			}
3067 leency 58
			add_disk.DiskId = param[1]-'0';
59
			ioctl.handle   = driver_handle;
60
			ioctl.io_code  = DEV_ADD_DISK;
61
			ioctl.input    = #add_disk;
62
			ioctl.inp_size = sizeof(add_disk);
63
			ioctl.output   = 0;
64
			ioctl.out_size = 0;
7515 leency 65
			sprintf(#size_t, NEW_DISK_TEXT, add_disk.DiskId, add_disk.DiskSize/2048);
66
			debugln(#size_t);
3067 leency 67
			break;
68
		default:
7774 leency 69
			debugln("\ntmpdisk: unknown command line parameters!");
70
			debugln("valid parameters are:");
71
			debugln("a[number]s[size in MB] - add RAM disk");
72
			debugln("d[number] - delete RAM disk");
3067 leency 73
			ExitProcess();
74
	}
75
 
76
	driver_rezult = RuleDriver(#ioctl);
4645 leency 77
	if (driver_rezult<7) debugln(rezult_text[driver_rezult]);
3306 leency 78
	return driver_rezult;
3067 leency 79
}
80