Shell version 0.6.2
git-svn-id: svn://kolibrios.org@3268 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
7eb55c9625
commit
2a7660964a
@ -1,4 +1,9 @@
|
|||||||
|
|
||||||
|
Shell 0.6.2 // 24.02.2013 // Albom
|
||||||
|
* „®¡ ¢«¥ ®¡à ¡®âª ã¯à ¢«ïîé¨å ᨬ¢®«®¢ (\n, \t, \", \', \\, \?)
|
||||||
|
* Œ¥«ª¨¥ ¨á¯à ¢«¥¨ï
|
||||||
|
|
||||||
|
|
||||||
Shell 0.6.1 // 17.02.2013 // Albom
|
Shell 0.6.1 // 17.02.2013 // Albom
|
||||||
* <20>à®áâ ï ®¡à ¡®âª ®è¨¡®ª ¢ãâà¥¨å ª®¬ ¤
|
* <20>à®áâ ï ®¡à ¡®âª ®è¨¡®ª ¢ãâà¥¨å ª®¬ ¤
|
||||||
* Š®¬ ¤ killall âà áä®à¬¨à®¢ ¢ ¯ à ¬¥âà all ª®¬ ¤ë kill
|
* Š®¬ ¤ killall âà áä®à¬¨à®¢ ¢ ¯ à ¬¥âà all ª®¬ ¤ë kill
|
||||||
|
@ -11,3 +11,4 @@ Shell %s\n\r\n\r\
|
|||||||
printf(message, SHELL_VERSION);
|
printf(message, SHELL_VERSION);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,3 +17,4 @@ if ( ( 0 != result ) && ( -1 != result ) )
|
|||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,3 +52,4 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,3 +4,4 @@ int cmd_clear(char param[])
|
|||||||
con_cls();
|
con_cls();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#define SHELL_VERSION "0.6"
|
#define SHELL_VERSION "0.6.2"
|
||||||
|
|
||||||
extern char PATH[256];
|
extern char PATH[256];
|
||||||
extern char PARAM[256];
|
extern char PARAM[256];
|
||||||
|
@ -20,6 +20,39 @@ for (i = 0; i < param_len; i++)
|
|||||||
{
|
{
|
||||||
switch (param[i])
|
switch (param[i])
|
||||||
{
|
{
|
||||||
|
|
||||||
|
case '\\':
|
||||||
|
if (param[i+1]!='\0')
|
||||||
|
{
|
||||||
|
switch(param[i+1])
|
||||||
|
{
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
argv[argc-1][argv_len] = '\n';
|
||||||
|
argv_len++;
|
||||||
|
i++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 't':
|
||||||
|
argv[argc-1][argv_len] = '\t';
|
||||||
|
argv_len++;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
case '\\':
|
||||||
|
case '\'':
|
||||||
|
case '"':
|
||||||
|
case '?':
|
||||||
|
argv[argc-1][argv_len] = param[i+1];
|
||||||
|
argv_len++;
|
||||||
|
i++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
i++;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case '"':
|
case '"':
|
||||||
if (quote == 0)
|
if (quote == 0)
|
||||||
quote = 1;
|
quote = 1;
|
||||||
@ -62,6 +95,7 @@ for (i = 0; i < param_len; i++)
|
|||||||
argv[argc-1][argv_len] = param[i];
|
argv[argc-1][argv_len] = param[i];
|
||||||
argv_len++;
|
argv_len++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,5 @@ void alias_list();
|
|||||||
int parameters_prepare(char *param, char* argv[]);
|
int parameters_prepare(char *param, char* argv[]);
|
||||||
void parameters_free(int argc, char* argv[]);
|
void parameters_free(int argc, char* argv[]);
|
||||||
|
|
||||||
void print_error(void);
|
|
||||||
|
|
||||||
/// ===========================================================
|
/// ===========================================================
|
||||||
|
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
#include "program_console.h"
|
#include "program_console.h"
|
||||||
|
|
||||||
char *buffer; // используется только одна именованная область, поэтому можно сделать её глобальной переменной
|
char *buffer; // ¨á¯®«ì§ã¥âáï ⮫쪮 ®¤ ¨¬¥®¢ ï ®¡« áâì, ¯®í⮬㠬®¦® ᤥ« âì ¥ñ £«®¡ «ì®© ¯¥à¥¬¥®©
|
||||||
char name[32]; // имя нужно как для создания области, так и для удаления, поэтому можно сделать её глобальной переменной
|
char name[32]; // ¨¬ï 㦮 ª ª ¤«ï ᮧ¤ ¨ï ®¡« áâ¨, â ª ¨ ¤«ï 㤠«¥¨ï, ¯®í⮬㠬®¦® ᤥ« âì ¥ñ £«®¡ «ì®© ¯¥à¥¬¥®©
|
||||||
|
|
||||||
int sc_init() // инициализация - создание именованной области
|
int sc_init() // ¨¨æ¨ «¨§ æ¨ï - ᮧ¤ ¨¥ ¨¬¥®¢ ®© ®¡« áâ¨
|
||||||
{
|
{
|
||||||
|
|
||||||
char *buf1k;
|
char *buf1k;
|
||||||
@ -19,15 +19,15 @@ buf1k = malloc(1024);
|
|||||||
if (NULL == buf1k)
|
if (NULL == buf1k)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
kol_process_info(-1, buf1k); // получаем СВОЙ (-1) идентификатор процесса
|
kol_process_info(-1, buf1k); // ¯®«ãç ¥¬ ‘‚Ž‰ (-1) ¨¤¥â¨ä¨ª â®à ¯à®æ¥áá
|
||||||
PID = *(buf1k+30);
|
PID = *(buf1k+30);
|
||||||
free(buf1k);
|
free(buf1k);
|
||||||
|
|
||||||
itoa(PID, name); // формируем из номера процесса строку с заглавными нулями 42 -> 0042 (т.е. до 9999)
|
itoa(PID, name); // ä®à¬¨à㥬 ¨§ ®¬¥à ¯à®æ¥áá áâபã
|
||||||
strcat(name, "-SHELL");
|
strcat(name, "-SHELL");
|
||||||
|
|
||||||
*buffer = NULL;
|
*buffer = NULL;
|
||||||
result = kol_buffer_open(name, SHM_OPEN_ALWAYS | SHM_WRITE, 1024*16, &buffer); // создаём область (16 кил)
|
result = kol_buffer_open(name, SHM_OPEN_ALWAYS | SHM_WRITE, 1024*16, &buffer); // ᮧ¤ ñ¬ ®¡« áâì (16 ª¡ ©â)
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user