Subversion Repositories Kolibri OS

Rev

Rev 6278 | 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
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
	{
5624 leency 40
		case '?':
3067 leency 41
		case 'h':
4645 leency 42
			debugln("tmpdisk command line parameters:");
43
			debugln("a[number]s[size in MB] - add RAM disk");
44
			debugln("d[number] - delete RAM disk");
3067 leency 45
			ExitProcess();
46
			break;
7515 leency 47
		case 'd': //Delete disk
3067 leency 48
			del_disk.DiskId = param[1]-'0';
49
			ioctl.handle   = driver_handle;
50
			ioctl.io_code  = DEV_DEL_DISK;
51
			ioctl.input    = #del_disk;
52
			ioctl.inp_size = sizeof(del_disk);
53
			ioctl.output   = 0;
54
			ioctl.out_size = 0;
7515 leency 55
			sprintf(#size_t, DELETE_DISK_TEXT, add_disk.DiskId);
56
			debugln(#size_t);
3067 leency 57
			break;
7515 leency 58
		case 'a': //Add disk
3067 leency 59
			disk_size= strchr(#param, 's');
60
			if (!disk_size)
61
			{
6278 leency 62
				add_disk.DiskSize = GetFreeRAM() / 5 * 2;
3067 leency 63
			}
64
			else
5624 leency 65
			{
66
				add_disk.DiskSize = atoi(disk_size+1)*2048;
67
			}
3067 leency 68
			add_disk.DiskId = param[1]-'0';
69
			ioctl.handle   = driver_handle;
70
			ioctl.io_code  = DEV_ADD_DISK;
71
			ioctl.input    = #add_disk;
72
			ioctl.inp_size = sizeof(add_disk);
73
			ioctl.output   = 0;
74
			ioctl.out_size = 0;
7515 leency 75
			sprintf(#size_t, NEW_DISK_TEXT, add_disk.DiskId, add_disk.DiskSize/2048);
76
			debugln(#size_t);
3067 leency 77
			break;
78
		default:
4645 leency 79
			debugln("unknown command line parameters");
80
			debugln("use 'h' or '?' for help");
3067 leency 81
			ExitProcess();
82
	}
83
 
84
	driver_rezult = RuleDriver(#ioctl);
4645 leency 85
	if (driver_rezult<7) debugln(rezult_text[driver_rezult]);
3306 leency 86
	return driver_rezult;
3067 leency 87
}
88