forked from KolibriOS/kolibrios
521fc78528
git-svn-id: svn://kolibrios.org@3975 a494cfbc-eb01-0410-851d-a64ba20cac60
95 lines
2.9 KiB
C
95 lines
2.9 KiB
C
/////////////////////////////////////////////////////////////////////////////////////////
|
|
///////////////////////// êîíñîëü ////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifdef LANG_RUS
|
|
?define ADD_DISK_TEXT "¯à®¡ãî ¤®¡ ¢¨âì ¢¨àâã «ìë© ¤¨áª"
|
|
?define DELETE_DISK_TEXT "¯à®¡ãî 㤠«¨âì ¢¨àâã «ìë© ¤¨áª"
|
|
?define DONT_KNOW_DISK_SIZE_TEXT "¥£® à §¬¥à ¥ 㪠§ , 10% ᢮¡®¤®© Ž‡“ ¡ã¤¥â ¨á¯®«ì§®¢ ®"
|
|
?define NEW_DISK_TEXT "à §¬¥à ¤¨áª ¡ã¤¥â: "
|
|
char *rezult_text[]={
|
|
"®¯¥à æ¨ï ãá¯¥è® § ¢¥àè¥ ",
|
|
"¥¨§¢¥áâë© IOCTL, ¥¢¥àë© à §¬¥à ¯à¥¤®áâ ¢«ï¥¬ëå ¤ ëå...",
|
|
"®¬¥à ¤¨áª ¤®«¦¥ ¡ëâì ®â 0 ¤® 9",
|
|
"à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª ᫨誮¬ ¢¥«¨ª",
|
|
"à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª ᫨誮¬ ¬ «",
|
|
"®è¨¡ª ¢ë¤¥«¥¨ï ¯ ¬ïâ¨",
|
|
"¥¨§¢¥áâ ï ®è¨¡ª O_o",
|
|
0};
|
|
#else
|
|
?define ADD_DISK_TEXT "trying to add disk"
|
|
?define DELETE_DISK_TEXT "trying to delete virtual disk"
|
|
?define DONT_KNOW_DISK_SIZE_TEXT "its size is not specified, 10% from free RAM will be used"
|
|
?define NEW_DISK_TEXT "new DiskSize: "
|
|
char *rezult_text[]={
|
|
"operation completed successfully",
|
|
"unknown IOCTL code, wrong input/output size...",
|
|
"DiskId must be from 0 to 9",
|
|
"DiskSize is too large",
|
|
"DiskSize is too small, might be too little free RAM",
|
|
"memory allocation failed",
|
|
"unknown error O_o",
|
|
0};
|
|
#endif
|
|
|
|
char Console_Work()
|
|
{
|
|
unsigned int disk_size, driver_rezult;
|
|
char size_t[256];
|
|
|
|
strlwr(#param);
|
|
// debug(#param);
|
|
|
|
switch (param[0])
|
|
{
|
|
case '?': //ïîìîùü ïî êîììàíäàì
|
|
case 'h':
|
|
debug("tmpdisk command line parameters:");
|
|
debug("a[number]s[size in MB] - add RAM disk");
|
|
debug("d[number] - delete RAM disk");
|
|
ExitProcess();
|
|
break;
|
|
case 'd': //óäàëèòü äèñê
|
|
debug(DELETE_DISK_TEXT);
|
|
del_disk.DiskId = param[1]-'0';
|
|
ioctl.handle = driver_handle;
|
|
ioctl.io_code = DEV_DEL_DISK;
|
|
ioctl.input = #del_disk;
|
|
ioctl.inp_size = sizeof(del_disk);
|
|
ioctl.output = 0;
|
|
ioctl.out_size = 0;
|
|
break;
|
|
case 'a': //äîáàâèòü äèñê
|
|
debug(ADD_DISK_TEXT);
|
|
disk_size= strchr(#param, 's');
|
|
if (!disk_size)
|
|
{
|
|
add_disk.DiskSize = GetFreeRAM() / 5;
|
|
debug(DONT_KNOW_DISK_SIZE_TEXT);
|
|
}
|
|
else
|
|
add_disk.DiskSize = atoi(#param+disk_size)*2048;
|
|
strcpy(#size_t, NEW_DISK_TEXT);
|
|
strcat(#size_t, itoa(add_disk.DiskSize/2048));
|
|
strcat(#size_t, " MB");
|
|
debug(#size_t);
|
|
add_disk.DiskId = param[1]-'0';
|
|
ioctl.handle = driver_handle;
|
|
ioctl.io_code = DEV_ADD_DISK;
|
|
ioctl.input = #add_disk;
|
|
ioctl.inp_size = sizeof(add_disk);
|
|
ioctl.output = 0;
|
|
ioctl.out_size = 0;
|
|
break;
|
|
default:
|
|
debug("unknown command line parameters");
|
|
debug("use 'h' or '?' for help");
|
|
ExitProcess();
|
|
}
|
|
|
|
driver_rezult = RuleDriver(#ioctl);
|
|
if (driver_rezult<7) debug(rezult_text[driver_rezult]);
|
|
return driver_rezult;
|
|
}
|
|
|