Files
MentOS/mentos/inc/ui/shell/shell.h
T
Luigi Capogrosso 7d9085fecf Finish v0.3.0
2019-05-08 17:07:11 +02:00

78 lines
1.7 KiB
C

/// MentOS, The Mentoring Operating system project
/// @file shell.h
/// @brief Data structure used to implement the Shell.
/// @copyright (c) 2019 This file is distributed under the MIT License.
/// See LICENSE.md for details.
#pragma once
#include "stdint.h"
#include "kernel.h"
/// Maximum length of credentials.
#define CREDENTIALS_LENGTH 50
/// Maximum length of commands.
#define CMD_LEN 256
/// Maximum length of descriptions.
#define DESC_LEN 256
/// Maximum number of saved commands.
#define MAX_NUM_COM 50
/// Maximum length of history.
#define HST_LEN 10
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
/// Pointer to the function of a commmand.
typedef void (* CommandFunction)(int argc, char **argv);
/// @brief Holds information about a command.
typedef struct command_t
{
/// The name of the command.
char cmdname[CMD_LEN];
/// The function pointer to the command.
CommandFunction function;
/// The description of the command.
char cmddesc[DESC_LEN];
} command_t;
/// @brief Holds information about the user.
typedef struct userenv_t
{
/// The username.
char username[CREDENTIALS_LENGTH];
/// The current path.
char cur_path[MAX_PATH_LENGTH];
/// The user identifier.
unsigned int uid;
/// The group identifier.
unsigned int gid;
} userenv_t;
/// Contains the information about the current user.
extern userenv_t current_user;
/// @brief The shell.
int shell(int argc, char **argv, char **envp);
/// @brief Moves the cursor left.
void move_cursor_left(void);
/// @brief Moves the cursor right.
void move_cursor_right(void);