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 Shell 0.6.1 // 17.02.2013 // Albom
* <20>à®áâ ï ®¡à ¡®âª  ®è¨¡®ª ¢­ãâ७­¨å ª®¬ ­¤ * <20>à®áâ ï ®¡à ¡®âª  ®è¨¡®ª ¢­ãâ७­¨å ª®¬ ­¤
* Š®¬ ­¤  killall âà ­áä®à¬¨à®¢ ­  ¢ ¯ à ¬¥âà all ª®¬ ­¤ë kill * Š®¬ ­¤  killall âà ­áä®à¬¨à®¢ ­  ¢ ¯ à ¬¥âà all ª®¬ ­¤ë kill

View File

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

View File

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

View File

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

View File

@ -4,3 +4,4 @@ int cmd_clear(char param[])
con_cls(); con_cls();
return TRUE; 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 PATH[256];
extern char PARAM[256]; extern char PARAM[256];

View File

@ -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;
}; };
} }

View File

@ -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);
/// =========================================================== /// ===========================================================

View File

@ -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;
} }