1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
#ifndef _TOTO_
#define _TOTO_
#include <stdio.h>
#include <unistd.h>
#include "libs/libmy.h"
#include <stdlib.h>
#include <fcntl.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <signal.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <term.h>
#define BUFF 128
extern char **environ;
typedef struct termios t_line;
typedef struct winsize t_w;
typedef struct s_list
{
char *arg;
struct s_list *next;
}t_lst;
typedef struct s_gcom
{
char type;
struct s_list *com;
struct s_gcom *next;
}t_gm;
typedef struct s_hist
{
char *command;
struct s_hist *prev;
struct s_hist *next;
}t_hst;
typedef struct s_buffer
{
char *prev_dir;
char *prompt;
}t_buffer;
/*Generic functions*/
void kill_it(int sig);
int char_isalpha(char character);
void str_cpy_from_to(int start, char *dest, char *src, char separator);
int my_len_from(char *str, int n);
int my_len_to(char *str, char separator);
int my_len_from_to(int start, char *str, char separator);
void xfree_ptr_tab(char **ptr);
int test_for_path(char *name);
/*int ptr_tabsize(char **tab);*/
void free_all(char *name, char **argv, char **paths, t_buffer *buffer);
int str_equal(char *str1, char *str2);
/*Functions for command line acquisition & editing*/
char *my_strredup(char *str1, char *str2);
void hist_down(t_hst **hist, char *line);
void hist_up(t_hst **hist, char *line);
void keys(char *buf, char *line, t_buffer *shdat, t_hst **hist);
char *get_entry_line(t_buffer *shdat, t_hst *hist);
void line(t_buffer *buffer, t_hst **hist);
/*Function for history management*/
void add_node_hist(char *data, t_hst **list);
/*functions for tty setting*/
int reset_line(void);
int set_line(void);
/*Termcaps functions*/
int outc(int c);
char *xtgetstr(char *cap, char **area);
int xcap(char *cap);
void reverse_v(void);
void dis_reverse(void);
int clr_line(int pos);
void clr_screen(void);
int put_cur(int x, int y);
void cursor_m(int pos);
int clear_cur(void);
int show_cur(void);
int term_size(void);
char *keycode(char *cap);
/*For command line & env storage*/
void add_node(char *data, t_lst **list);
void rev_list(t_lst **begin);
void xfree_list(t_lst *list);
int list_len(t_lst *list);
t_lst *get_node(int node, t_lst *list);
int insert_data(char *data, int node, t_lst **list);
int insert_node(int node, char *data, t_lst **list);
int del_node(int node, t_lst **list);
int del_node2(t_lst *node, t_lst **list);
/*Pwd functions*/
unsigned int root_ino(void);
char *dir_name(unsigned int inode);
char *make_path(char *path, char *new);
char *pathfinder(unsigned int inode);
char *pwd(void);
/*Functions for buffer handling*/
void init_buffer(t_buffer *b, t_lst *env);
/*Functions for error handling*/
int get_error_full(char *name);
int get_error(char *name, char **paths);
char *is_file(char *name, char **paths);
int is_permission(char *full_path, int permission);
int is_type(char *full_path, int type);
/*Functions for signal handling*/
void sig_father(void);
void sig_son(void);
int print_signal(char *name, int child_pid, int sig);
int print_signal2(char *name, int sig);
int print_state(char *name, int child_pid, int sig);
/*Functions for executing commands*/
int exec(char *name, char **argv);
int launch(char *name, char **argv, t_buffer *buffer);
int launch_full(char *name, char **argv, t_buffer *buffer);
int fork_it(char *name, char **argv, t_buffer *buffer);
int check_param(int argc);
int execute(char *command_line, t_buffer *buffer, t_lst *env);
/*Builtins functions*/
int execute_builtin(char *name, t_lst *argv, t_lst *envp, t_buffer *buffer);
int execute_builtin2(char *name, t_lst *argv, t_lst *envp);
int unset_env(t_lst *var, t_lst *content, t_lst *envp);
void reassign_env(char *var, char *content, t_lst *envp);
int set_env(t_lst *var, t_lst *content, t_lst *envp);
void env(t_lst *envp);
int check_env_name(char *var);
/*Function used for cd builtin*/
char *get_dir(t_lst *argv, t_lst *env);
int cd_get_error(char *name);
int change_dir(t_lst *argv, t_buffer *buffer, t_lst *env);
int cd_check_input(t_lst *argv);
int update_pwd(t_lst *env);
int upd_prev_dir(t_buffer *buffer, t_lst *env);
int cd_prev(t_buffer *buffer, t_lst *env);
void cd(char *dir, t_buffer *buffer, t_lst *env);
/*Functions for arguments handling*/
int arg_len(char *str, int start);
char *arg_cpy(char *argv, char *command_line, int start);
t_lst *list_args(char *command_line);
char *command_name(char *command_line);
/*Environment functions*/
char *env_cpy(char *var, t_lst *envp);
t_lst *search_for_var_pos(char *var, t_lst *envp);
t_lst *environment_cpy(char **envp);
void add_env(char *var, char *content, t_lst *envp);
char *make_var(char *var, char *content);
char **fill_environ(char **environ, char **envp);
char *comp_var_name(char *var);
t_lst *suppr_env(char *var, t_lst *envp);
/*Functions for path handling*/
char *make_full_path(char *name, char *path);
char *path_cpy(char *dest, const char *src, int start);
int path_len(char *str, int start);
char **list_paths(char *var, t_lst *envp);
/*Home resolution functions*/
char *before_home(char *before, char *command_line, char *home, int i);
char *resolve_home(char *command_line, t_lst *envp);
char *replace_tilde(char *command_line, t_lst *envp, int start);
#endif |
Partager