mshell/include/shell.h
Dm1tr1y147 885bd34da3 Added setting environment variables with APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL=trueCHROME_DESKTOP=code-oss.desktopCOLORTERM=truecolorDBUS_SESSION_BUS_ADDRESS='unix:path=/run/user/1000/bus'DISPLAY=:0GIT_ASKPASS=/usr/lib/code/extensions/git/dist/askpass.shGTK_MODULES=canberra-gtk-moduleHOME=/home/dshI3SOCK=/run/user/1000/i3/ipc-socket.521LANG=en_US.UTF-8LESS=-RLESSHISTFILE=-LESSPROMPT='?f%f .?ltLine %lt:?pt%pt\%:?btByte %bt:-...'LESS_TERMCAP_mb=$'\C-[[31m'LESS_TERMCAP_md=$'\C-[[31m'LESS_TERMCAP_me=$'\C-[[0m'LESS_TERMCAP_se=$'\C-[[0m'LESS_TERMCAP_so=$'\C-[[47;30m'LESS_TERMCAP_ue=$'\C-[[0m'LESS_TERMCAP_us=$'\C-[[32m'LOGNAME=dshLS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'MAIL=/var/spool/mail/dshMANWIDTH=120MOZ_PLUGIN_PATH=/usr/lib/mozilla/pluginsNO_AT_BRIDGE=1OLDPWD=/mnt/hdd/Work/Development/C/myshellPATH=/home/dsh/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perlPWD=/mnt/hdd/Work/Development/C/myshellSHELL=/bin/zshSHLVL=3TERM=xterm-256colorTERM_PROGRAM=vscodeTERM_PROGRAM_VERSION=1.46.1USER=dshVSCODE_GIT_ASKPASS_MAIN=/usr/lib/code/extensions/git/dist/askpass-main.jsVSCODE_GIT_ASKPASS_NODE=/usr/lib/electron7/electronVSCODE_GIT_IPC_HANDLE=/run/user/1000/vscode-git-55765a537b.sockWINDOWPATH=1XAUTHORITY=/home/dsh/.XauthorityXDG_CONFIG_HOME=/home/dsh/.configXDG_RUNTIME_DIR=/run/user/1000XDG_SEAT=seat0XDG_SESSION_CLASS=userXDG_SESSION_ID=1XDG_SESSION_TYPE=ttyXDG_VTNR=1 and before command locally
2020-07-18 20:40:51 +05:00

119 lines
1.9 KiB
C

#ifndef _SHELL_H
#define _SHELL_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <termios.h>
#include <ifaddrs.h>
#include <glob.h>
#include <stdbool.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#include "../include/tree.h"
// Defines
#define BUFF_SIZE 1024
#define ARG_SIZE 32
// Types definitions
struct hist_sub
{
char **content;
int length;
int pos;
};
struct history
{
char **content;
ssize_t length;
int pos;
FILE *file;
struct hist_sub sub;
};
struct status
{
int s;
bool invert;
};
typedef enum
{
NO_SEP,
SEMICOLON_SEP,
AND_SEP,
OR_SEP
} cmd_sep;
typedef struct pipes
{
char **args;
ssize_t args_am;
int pipefd[2];
struct pipes *next;
} cmd_pipe;
typedef struct commands
{
cmd_pipe *pipe;
ssize_t pipes_am;
char **envs;
ssize_t envs_am;
struct status stat;
struct commands *next;
cmd_sep sep_next;
} cmds_p;
typedef struct
{
struct history hist;
int last_status;
} t_;
//Globals defenition
extern t_ term;
extern char **environ;
extern char *builtin[];
// shell.c file
void process_command();
cmds_p *new_cmd();
cmd_pipe *new_cmd_pipe();
void free_cmds_p(cmds_p *root);
void free_cmd_pipe(cmd_pipe *root);
// line_parce.c file
cmds_p *process_line(char *line);
int expand_wildcatrd(char ***arr, char *input);
// execute.c file
int execute_with_pipes(cmds_p *command);
int execute(cmd_pipe *command, char **envp);
int launch(cmd_pipe *command, char **envp);
int mexecvpe(char *file, char **argv, char **envp);
int sh_cd(char **args);
int sh_exec(char **args, char **envp);
int sh_export(char **args);
int sh_exit(char **args);
void redirect_fd(int old, int new);
// prompt.c
char *get_ip_addr();
char *compose_prompt();
#define BUILTIN_NUM sizeof(builtin) / sizeof(char *)
#endif