1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include "esh_misc.h"
- void EShOptimiseCurrentWorkingDirectory() {
- if (strstr(esh_info_global->current_working_dir, esh_info_global->user_data->pw_dir) == esh_info_global->current_working_dir) {
- char new_cwd[PATH_MAX + 1];
- memset(new_cwd, 0, PATH_MAX + 1);
- strcat(new_cwd, "~");
- strcat(new_cwd, esh_info_global->current_working_dir + strlen(esh_info_global->user_data->pw_dir));
- strcpy(esh_info_global->current_working_dir, new_cwd);
- }
- }
- void EShUpdateInviteMessage() {
- memset(esh_info_global->invite_message, 0, (esh_info_global->max_invite_message_len + 1) * sizeof(char));
- strcat(esh_info_global->invite_message, ANSI_COLOR_BLUE);
- strcat(esh_info_global->invite_message, esh_info_global->user_data->pw_name);
- strcat(esh_info_global->invite_message, ANSI_COLOR_RESET);
- strcat(esh_info_global->invite_message, "@");
- strcat(esh_info_global->invite_message, ANSI_COLOR_GREEN);
- strcat(esh_info_global->invite_message, esh_info_global->current_working_dir);
- strcat(esh_info_global->invite_message, ANSI_COLOR_RESET);
- strcat(esh_info_global->invite_message, " » ");
- }
- void EShShowHelpAndExit() {
- printf(ANSI_COLOR_RED "ESh (Endevir Shell) build %.8s\n" ANSI_COLOR_RESET
- "\n"
- "Usage: esh [-h] [-config FILENAME] [-history FILENAME] [-history_limit INT] [-max_active_jobs INT] [-max_command_length INT]\n"
- "\n"
- "Description:\n"
- "This is a simple shell, written in C\n"
- "\n"
- "Parameters:\n"
- "-h shows this message and exits\n"
- "-config FILENAME uses file with name FILENAME as config file (default: ~/.esh_conf)\n"
- "-history_path FILENAME uses file with name FILENAME as storage for entered commands history (default: ~/.esh_history)\n"
- "-history_limit INT limits commands number to keep up to INT (default: 5000 lines)\n"
- "-max_active_jobs INT limits shell active jobs number up to INT (default: 64)\n"
- "-max_command_length INT limits maximum length of single command up to INT (default: 1024 chars)\n"
- "\n"
- "\n"
- "Copyleft. Written by Ivan Arkhipov aka Endevir (me@endevir.ru), MIPT, Dolgoprudny, Russia, 2019.\n",
- esh_info_global->build_ref);
- exit(0);
- }
- int EShIsShellLetter(char c) {
- return (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c >= 'а' && c <= 'я') ||
- (c >= 'А' && c <= 'Я') ||
- (c >= '0' && c <= '9') ||
- (c >= ' ' && c <= '/') ||
- (c >= ':' && c <= '?');
- }
|