Subversion Repositories Kolibri OS

Rev

Rev 4645 | Rev 5624 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4645 Rev 5482
1
/////////////////////////////////////////////////////////////////////////////////////////
1
/////////////////////////////////////////////////////////////////////////////////////////
2
/////////////////////////                êîíñîëü                     ////////////////////
2
/////////////////////////                 Console                    ////////////////////
3
/////////////////////////////////////////////////////////////////////////////////////////
3
/////////////////////////////////////////////////////////////////////////////////////////
4
 
4
 
5
#ifdef LANG_RUS
5
#ifdef LANG_RUS
6
	?define ADD_DISK_TEXT "¯à®¡ãî ¤®¡ ¢¨âì ¢¨àâã «ì­ë© ¤¨áª"
6
	?define ADD_DISK_TEXT "¯à®¡ãî ¤®¡ ¢¨âì ¢¨àâã «ì­ë© ¤¨áª"
7
	?define DELETE_DISK_TEXT "¯à®¡ãî 㤠«¨âì ¢¨àâã «ì­ë© ¤¨áª"
7
	?define DELETE_DISK_TEXT "¯à®¡ãî 㤠«¨âì ¢¨àâã «ì­ë© ¤¨áª"
8
	?define DONT_KNOW_DISK_SIZE_TEXT "¥£® à §¬¥à ­¥ 㪠§ ­, 10% ᢮¡®¤­®© Ž‡“ ¡ã¤¥â ¨á¯®«ì§®¢ ­®"
8
	?define DONT_KNOW_DISK_SIZE_TEXT "¥£® à §¬¥à ­¥ 㪠§ ­, 10% ᢮¡®¤­®© Ž‡“ ¡ã¤¥â ¨á¯®«ì§®¢ ­®"
9
	?define NEW_DISK_TEXT "à §¬¥à ¤¨áª  ¡ã¤¥â: "
9
	?define NEW_DISK_TEXT "à §¬¥à ¤¨áª  ¡ã¤¥â: "
10
	char *rezult_text[]={
10
	char *rezult_text[]={
11
	"®¯¥à æ¨ï ãᯥ譮 § ¢¥à襭 ",
11
	"®¯¥à æ¨ï ãᯥ譮 § ¢¥à襭 ",
12
	"­¥¨§¢¥áâ­ë© IOCTL, ­¥¢¥à­ë© à §¬¥à ¯à¥¤®áâ ¢«ï¥¬ëå ¤ ­­ëå...",
12
	"­¥¨§¢¥áâ­ë© IOCTL, ­¥¢¥à­ë© à §¬¥à ¯à¥¤®áâ ¢«ï¥¬ëå ¤ ­­ëå...",
13
	"­®¬¥à ¤¨áª  ¤®«¦¥­ ¡ëâì ®â 0 ¤® 9",
13
	"­®¬¥à ¤¨áª  ¤®«¦¥­ ¡ëâì ®â 0 ¤® 9",
14
	"à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¢¥«¨ª",
14
	"à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¢¥«¨ª",
15
	"à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¬ «",
15
	"à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¬ «",
16
	"®è¨¡ª  ¢ë¤¥«¥­¨ï ¯ ¬ïâ¨",
16
	"®è¨¡ª  ¢ë¤¥«¥­¨ï ¯ ¬ïâ¨",
17
	"­¥¨§¢¥áâ­ ï ®è¨¡ª  O_o",
17
	"­¥¨§¢¥áâ­ ï ®è¨¡ª  O_o",
18
	0};
18
	0};
19
#else
19
#else
20
	?define ADD_DISK_TEXT "trying to add disk"
20
	?define ADD_DISK_TEXT "trying to add disk"
21
	?define DELETE_DISK_TEXT "trying to delete virtual 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"
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: "
23
	?define NEW_DISK_TEXT "new DiskSize: "
24
	char *rezult_text[]={
24
	char *rezult_text[]={
25
	"operation completed successfully",
25
	"operation completed successfully",
26
	"unknown IOCTL code, wrong input/output size...",
26
	"unknown IOCTL code, wrong input/output size...",
27
	"DiskId must be from 0 to 9",
27
	"DiskId must be from 0 to 9",
28
	"DiskSize is too large",
28
	"DiskSize is too large",
29
	"DiskSize is too small, might be too little free RAM",
29
	"DiskSize is too small, might be too little free RAM",
30
	"memory allocation failed",
30
	"memory allocation failed",
31
	"unknown error O_o",
31
	"unknown error O_o",
32
	0};
32
	0};
33
#endif
33
#endif
34
 
34
 
35
char Console_Work()
35
char Console_Work()
36
{
36
{
37
	unsigned int disk_size, driver_rezult;
37
	unsigned int disk_size, driver_rezult;
38
	char size_t[256];
38
	char size_t[256];
39
 
39
 
40
	strlwr(#param);
40
	strlwr(#param);
41
//	debug(#param);
-
 
42
	
41
	
43
	switch (param[0])
42
	switch (param[0])
44
	{
43
	{
45
		case '?': //ïîìîùü ïî êîììàíäàì
44
		case '?': //ïîìîùü ïî êîììàíäàì
46
		case 'h':
45
		case 'h':
47
			debugln("tmpdisk command line parameters:");
46
			debugln("tmpdisk command line parameters:");
48
			debugln("a[number]s[size in MB] - add RAM disk");
47
			debugln("a[number]s[size in MB] - add RAM disk");
49
			debugln("d[number] - delete RAM disk");
48
			debugln("d[number] - delete RAM disk");
50
			ExitProcess();
49
			ExitProcess();
51
			break;
50
			break;
52
		case 'd': //óäàëèòü äèñê
51
		case 'd': //óäàëèòü äèñê
53
			debugln(DELETE_DISK_TEXT);
52
			debugln(DELETE_DISK_TEXT);
54
			del_disk.DiskId = param[1]-'0';
53
			del_disk.DiskId = param[1]-'0';
55
			ioctl.handle   = driver_handle;
54
			ioctl.handle   = driver_handle;
56
			ioctl.io_code  = DEV_DEL_DISK;
55
			ioctl.io_code  = DEV_DEL_DISK;
57
			ioctl.input    = #del_disk;
56
			ioctl.input    = #del_disk;
58
			ioctl.inp_size = sizeof(del_disk);
57
			ioctl.inp_size = sizeof(del_disk);
59
			ioctl.output   = 0;
58
			ioctl.output   = 0;
60
			ioctl.out_size = 0;
59
			ioctl.out_size = 0;
-
 
60
			disk_sizes[del_disk.DiskId] = 0;
61
			break;
61
			break;
62
		case 'a': //äîáàâèòü äèñê
62
		case 'a': //äîáàâèòü äèñê
63
			debugln(ADD_DISK_TEXT);
63
			debugln(ADD_DISK_TEXT);
64
			disk_size= strchr(#param, 's');
64
			disk_size= strchr(#param, 's');
65
			if (!disk_size)
65
			if (!disk_size)
66
			{
66
			{
67
				add_disk.DiskSize = GetFreeRAM() / 5;
67
				add_disk.DiskSize = GetFreeRAM() / 5;
68
				debugln(DONT_KNOW_DISK_SIZE_TEXT);
68
				debugln(DONT_KNOW_DISK_SIZE_TEXT);
69
			}				
69
			}				
70
			else
70
			else
71
				add_disk.DiskSize = atoi(#param+disk_size)*2048;
71
				add_disk.DiskSize = atoi(#param+disk_size)*2048;
72
			strcpy(#size_t, NEW_DISK_TEXT);
72
			strcpy(#size_t, NEW_DISK_TEXT);
73
			strcat(#size_t, itoa(add_disk.DiskSize/2048));
73
			strcat(#size_t, itoa(add_disk.DiskSize/2048));
74
			strcat(#size_t, " MB");
74
			strcat(#size_t, " MB");
75
			debugln(#size_t);
75
			debugln(#size_t);
76
			add_disk.DiskId = param[1]-'0';
76
			add_disk.DiskId = param[1]-'0';
77
			ioctl.handle   = driver_handle;
77
			ioctl.handle   = driver_handle;
78
			ioctl.io_code  = DEV_ADD_DISK;
78
			ioctl.io_code  = DEV_ADD_DISK;
79
			ioctl.input    = #add_disk;
79
			ioctl.input    = #add_disk;
80
			ioctl.inp_size = sizeof(add_disk);
80
			ioctl.inp_size = sizeof(add_disk);
81
			ioctl.output   = 0;
81
			ioctl.output   = 0;
82
			ioctl.out_size = 0;
82
			ioctl.out_size = 0;
-
 
83
			disk_sizes[add_disk.DiskId] = add_disk.DiskSize * 512;
83
			break;
84
			break;
84
		default:
85
		default:
85
			debugln("unknown command line parameters");
86
			debugln("unknown command line parameters");
86
			debugln("use 'h' or '?' for help");
87
			debugln("use 'h' or '?' for help");
87
			ExitProcess();			
88
			ExitProcess();			
88
	}
89
	}
89
	
90
	
90
	driver_rezult = RuleDriver(#ioctl);
91
	driver_rezult = RuleDriver(#ioctl);
91
	if (driver_rezult<7) debugln(rezult_text[driver_rezult]);
92
	if (driver_rezult<7) debugln(rezult_text[driver_rezult]);
92
	return driver_rezult;
93
	return driver_rezult;
93
}
94
}