Shell version 0.6.2

git-svn-id: svn://kolibrios.org@3268 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Albom 2013-02-24 10:33:37 +00:00
parent 7eb55c9625
commit 2a7660964a
9 changed files with 51 additions and 9 deletions

View File

@ -1,4 +1,9 @@
Shell 0.6.2 // 24.02.2013 // Albom
* „®¡ ¢«¥­  ®¡à ¡®âª  ã¯à ¢«ïîé¨å ᨬ¢®«®¢ (\n, \t, \", \', \\, \?)
* Œ¥«ª¨¥ ¨á¯à ¢«¥­¨ï
Shell 0.6.1 // 17.02.2013 // Albom
* <20>à®áâ ï ®¡à ¡®âª  ®è¨¡®ª ¢­ãâ७­¨å ª®¬ ­¤
* Š®¬ ­¤  killall âà ­áä®à¬¨à®¢ ­  ¢ ¯ à ¬¥âà all ª®¬ ­¤ë kill

View File

@ -11,3 +11,4 @@ Shell %s\n\r\n\r\
printf(message, SHELL_VERSION);
return TRUE;
}

View File

@ -17,3 +17,4 @@ if ( ( 0 != result ) && ( -1 != result ) )
return TRUE;
}

View File

@ -52,3 +52,4 @@ else
}
}

View File

@ -4,3 +4,4 @@ int cmd_clear(char param[])
con_cls();
return TRUE;
}

View File

@ -1,5 +1,5 @@
#define SHELL_VERSION "0.6"
#define SHELL_VERSION "0.6.2"
extern char PATH[256];
extern char PARAM[256];

View File

@ -20,6 +20,39 @@ for (i = 0; i < param_len; 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 '"':
if (quote == 0)
quote = 1;
@ -62,6 +95,7 @@ for (i = 0; i < param_len; i++)
argv[argc-1][argv_len] = param[i];
argv_len++;
break;
};
}

View File

@ -28,6 +28,5 @@ void alias_list();
int parameters_prepare(char *param, char* argv[]);
void parameters_free(int argc, char* argv[]);
void print_error(void);
/// ===========================================================

View File

@ -4,10 +4,10 @@
#include "program_console.h"
char *buffer; // используется только одна именованная область, поэтому можно сделать её глобальной переменной
char name[32]; // имя нужно как для создания области, так и для удаления, поэтому можно сделать её глобальной переменной
char *buffer; // ¨á¯®«ì§ã¥âáï ⮫쪮 ®¤­  ¨¬¥­®¢ ­­ ï ®¡« áâì, ¯®í⮬㠬®¦­® ᤥ« âì ¥ñ £«®¡ «ì­®© ¯¥à¥¬¥­­®©
char name[32]; // ¨¬ï ­ã¦­® ª ª ¤«ï ᮧ¤ ­¨ï ®¡« áâ¨, â ª ¨ ¤«ï 㤠«¥­¨ï, ¯®í⮬㠬®¦­® ᤥ« âì ¥ñ £«®¡ «ì­®© ¯¥à¥¬¥­­®©
int sc_init() // инициализация - создание именованной области
int sc_init() // ¨­¨æ¨ «¨§ æ¨ï - ᮧ¤ ­¨¥ ¨¬¥­®¢ ­­®© ®¡« áâ¨
{
char *buf1k;
@ -19,15 +19,15 @@ buf1k = malloc(1024);
if (NULL == buf1k)
return -1;
kol_process_info(-1, buf1k); // получаем СВОЙ (-1) идентификатор процесса
kol_process_info(-1, buf1k); // ¯®«ãç ¥¬ ‘‚Ž‰ (-1) ¨¤¥­â¨ä¨ª â®à ¯à®æ¥áá 
PID = *(buf1k+30);
free(buf1k);
itoa(PID, name); // формируем из номера процесса строку с заглавными нулями 42 -> 0042 (т.е. до 9999)
itoa(PID, name); // ä®à¬¨à㥬 ¨§ ­®¬¥à  ¯à®æ¥áá  áâபã
strcat(name, "-SHELL");
*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;
}