int sh_exec(char *name, char **av, t_env *env) { int ret_exe; int i; char *tmp; char **path; ret_exe = -1; i = 0; path = env->path; while (ret_exe < 0 && *path[i] != 0) { tmp = ft_strjoin(path[i], name); if ((ret_exe = execve(tmp, av, env->environ)) && path[++i] == 0 && name[0] != '\0' && (ret_exe == execve(av[0], av, env->environ))) { ft_puterr("ft_sh2 : command invalide : "); ft_puterr(name); ft_puterr("\n"); free(tmp); exit (-1); } free(tmp); } return (0); }
void ft_check(char *str) { if (str == NULL || *str == '\0') ft_puterr("map error\n"); if (bsq(str) == 0) ft_puterr("map error\n"); }
void sh_cd(char **av, t_env *env) { char *tmp; if (av[1]) { if (av[1][0] == '~') { tmp = ft_strjoin(env->home, av[1] + 1); av[1] = tmp; free(tmp); } else if (av[1][0] == '-') av[1] = getenv("OLDPWD="); if (chdir(av[1])) ft_puterr("cd : Dossier innaxesible\n"); else env_change_dir(av, env); } else { av[1] = env->home; if (chdir(av[1])) ft_puterr("cd : Dossier innaxesible\n"); else env_change_dir(av, env); } }
void ft_setenv(char **av, t_env *env) { int i; int j; i = 0; j = 0; while (av[1][i] != '=' && av[1][i] != '\0') i++; if (av[1][i] == '\0') { ft_puterr("setenv : usage VAR=VALEUR\n"); return ; } while (env->environ[j] && ft_strncmp(env->environ[j], av[1], i)) j++; if (env->environ[j]) { free(env->environ[j]); env->environ[j] = ft_strdelc(av[1], '"'); } else create_env(env, j, ft_strdelc(av[1], '"')); parse_environ(env); }
int main(int argc, char **argv) { int i; int sign; int tail; int size; sign = 0; i = 3; if (argc < 4) return (1); tail = number(argv); if (tail == -1) return (1); if (argv[2][0] == '+') sign = 1; while (i < argc) { if (argc > 4) print_names(i, argv[i]); size = size_files(argv[i]); ft_puterr(argv[0], argv[i], ft_tail(sign, tail, size, argv[i])); i++; } return (0); }
int xwrite(t_fd fd, void *ptr, int size) { int ret; if ((ret = write(fd, ptr, size)) == -1) ft_puterr("\033[1;31mError 0x03 Cannot write on output !\033[0;37m\n"); return (ret); }
int xread(t_fd fd, void *ptr, int size) { int ret; if ((ret = read(fd, ptr, size)) == -1) ft_puterr("\033[1;31mError 0x02 Cannot read this input !\033[0;37m\n"); return (ret); }
int xclose(t_fd fd) { int ret; if ((ret = close(fd)) == -1) ft_puterr("\033[1;31mError 0x01 File may still be open !\033[0;37m\n"); return (ret); }
t_fd xopen(const char *path, int oflag) { int ret; if ((ret = open(path, oflag)) == -1) ft_puterr("\033[1;31mError 0x00 Cannot open this file !\033[0;37m\n"); return (ret); }
int check_size(char *line, char *col, t_gboard *board) { int check_int; if ((check_int = check_args(line, col)) == -1) { ft_puterr(P4_ERROR); ft_puterr(P4_COORDS); ft_puterr("\n"); return (-1); } else { board->nb_columns = ft_atoi(col); board->nb_lines = ft_atoi(line); if (board->nb_lines < 6 || board->nb_columns < 7) { ft_puterr(P4_ERROR); ft_puterr(P4_SIZE); ft_puterr("\n"); return (-1); } } return (0); }
int sh_execute(char *name, char **av, t_env *env) { if ((env->pid = fork()) < 0) ft_puterr("fork fail"); else if (env->pid == 0) { sh_exec(name, av , env); } else { wait(NULL); } return (1); }
static void err_miss(char *err, int integ) { if (integ) { ft_puterr("\033[31mError\033[0m:\n\033[38;5;222m<"); ft_puterr(err); ft_puterr(">\n\n<"); ft_puterr(err); ft_puterr("/>\033[0m\nnot found.\n"); } else { ft_puterr("\033[31mError\033[0m: \033[38;5;222m</"); ft_puterr(err); ft_puterr(">\033[0m is missing (  ̄(i) ̄).\n"); } }
void show_usage(void) { ft_puterr("\033[0;31musage: \033[0;37mft_select [list of stuff ...]"); }