void test_strnequ() { char str[4][15] = {"", " ", "Hello", "M**********r"}; int i = -1; int j; int k; dprintf(1, "Strnequ "); while (++i < 4) { j = -1; while (++j < 4) { k = -1; while (++k < 15) { if (strncmp(str[i], str[j], k) == 0 && ft_strnequ(str[i], str[j], k) != 1) { dprintf(1, "\x1b[31mFail\x1b[0m\n Params:\n s1 : '%s'\n s2 : '%s'\n k : %d\n\n Valeur attendue : 1\n Valeur obtenue : %d\n", str[i], str[j],k,ft_strnequ(str[i], str[j], k)); return; } if (strncmp(str[i], str[j], k) != 0 && ft_strnequ(str[i], str[j], k) != 0) { dprintf(1, "\x1b[31mFail\x1b[0m\n Params:\n s1 : '%s'\n s2 : '%s'\n k : %d\n\n Valeur attendue : 0\n Valeur obtenue : %d\n", str[i], str[j],k,ft_strnequ(str[i], str[j], k)); return; } } } } dprintf(1, "\x1b[32mOK\x1b[0m\n"); }
/* ** Split the string 'str' by the string 's' ** ============= ** Return a t_array of t_string */ t_array *ft_stringsplit(t_string *str, const char *s) { t_array *split; int i; int s_len; int tmp; split = ft_arraynew(); s_len = ft_strlen(s); i = 0; while (s_len > 0 && ft_strnequ(str->content + i, s, s_len) && i < str->length) i += s_len; while (i < str->length) { tmp = i; while (i < str->length && !ft_strnequ(str->content + i, s, s_len)) i++; if (s_len == 0) i++; ft_arrayadd(split, ft_stringsub(str, tmp, i - tmp)); while (s_len > 0 && ft_strnequ(str->content + i, s, s_len) && i < str->length) i += s_len; } return (split); }
int ft_setenv(char ***env, char *name, char *value, int overwrite) { int i; int size; int n; i = 0; size = strstrlen(*env); name = ft_strjoin(name, "="); n = ft_strlen(name); while (i < size) { if (ft_strnequ(name, (*env)[i], n) && overwrite != 0) { free((*env)[i]); (*env)[i] = get_new_value(name, value); if ((*env)[i] == NULL) return (0); return (1); } else if (ft_strnequ(name, (*env)[i], n) && overwrite == 0) return (0); i++; } if (i == size) add_in_env(env, name, value, size); return (1); }
int main(void) { char *line; t_box box; int ret; int i; ret = 0; ft_bzero(&box, (sizeof(box))); while ((ret = get_next_line(0, &line) != 0)) { if ((i = -1) && box.b_play == 0) check_player(line, &box); else if ((ft_strnequ(line, "Plateau", 7))) create_grid(line, &box); else if ((ft_strnequ(line, "Piece", 5))) { get_piece(line, &box); print_map(&box); while (i < 69999999) i++; if (!try_rush(&box)) return (0); reinitialise_box(&box); } } return (0); }
int def_sep(char *str) { if (ft_strnequ(str, "&&", 2)) return (ETET); else if (ft_strnequ(str, "||", 2)) return (OUOU); else if (str[0] == '|') return (str[0]); else if (str[0] == ';') return (str[0]); return (0); }
int ft_check_located_cmd(t_sh *sh, char **args) { if (!ft_strnequ(args[0], "./", 2) && !ft_strnequ(args[0], "../", 3)) { if (!ft_strnequ(args[0], "/", 1)) return (ft_check_unlocated_cmd(sh, args)); } if (access(args[0], F_OK) == -1) return (ft_error2("command not found", args[0])); if (access(args[0], X_OK) == -1) return (ft_error2("permission denied", args[0])); ft_fork_and_exec(sh, args[0], args); return (0); }
enum e_parse_state get_state(const char *line) { if (ft_strnequ(line, NAME_CMD_STRING, NAME_CMD_LEN) && ft_iswhite(line[NAME_CMD_LEN])) return (_PARSE_NAME); else if (ft_strnequ(line, COMMENT_CMD_STRING, COMMENT_CMD_LEN) && ft_iswhite(line[COMMENT_CMD_LEN])) return (_PARSE_COMMENT); else if (is_labelled(line)) return (_PARSE_LABEL); else return (_PARSE_INSTRUCTION); return (_PARSE_ERROR); }
static int test_room(char const *buf, t_list *room) { int i; int s; if (!buf) return (1); i = 0; s = 0; while (buf[i]) if (buf[i++] == ' ') { if (!s) while (room) { if (ft_strnequ(room->content, buf, i - 1)) return (1); room = room->next; } s++; } if (s != 2) return (1); return (0); }
void ft_prompt(char **envp) { char *pwd; char *home; char *user; int len; if ((user = ft_getenv(envp, "USER"))) { ft_putstr(user); ft_putstr(":"); } pwd = ft_getenv(envp, "PWD"); home = ft_getenv(envp, "HOME"); if (pwd && home) { len = ft_strlen(home); if (ft_strnequ(pwd, home, len)) { ft_putstr("~"); ft_putstr(&pwd[len]); } else ft_putstr(pwd); } envp++; ft_putstr("> "); }
int ft_unsetenv(char ***env, char *name, int size) { char **new_env; int i; int j; i = 0; j = 0; if (!(new_env = (char **)malloc(sizeof(char *) * (size)))) ft_error(1, "ft_unsetenv"); while (j < size) { j = (ft_strnequ(name, *(*env + j), ft_strlen(name)) ? j + 1 : j); if (j >= size) break ; if ((new_env[i] = ft_strdup(*(*env + j))) == NULL) return (0); i++; j++; } new_env[i] = '\0'; free(*env); *env = new_env; return (1); }
int build_check(t_data *d) { int i; size_t len; i = 0; len = 0; if (d->line != NULL && d->toexec[0] != '\0') { while (g_tab[i].str != '\0') { len = ft_strlen(g_tab[i].str); if ((ft_strnequ(g_tab[i].str, d->toexec, len) == 1) && (len <= ft_strlen(d->toexec)) && (d->toexec[len] == '\0' || d->toexec[len] == ' ' || d->toexec[len] == '\t')) { g_tab[i].fptr(d); return (1); } i++; } } return (0); }
int ft_cd(char **env, char *dir) { char *pwd; int i; if (!dir) dir = ft_get_home(env); dir = ft_split_custom(dir)[0]; if (dir[0] == '~') dir = ft_strjoin(ft_get_home(env), dir + 1); if (dir[0] == '-' && !dir[1]) { dir = env[ft_get_env(env, "OLDPWD")] + 7; ft_putendl(dir); } if (ft_strnequ(dir, "--", 2)) dir = ft_strjoin(ft_get_home(env), dir + 2); i = ft_get_env(env, "OLDPWD"); env[i] = ft_strjoin("OLDPWD=", ft_pwd()); if (chdir(dir) != 0) return (get_error_cd(dir)); pwd = ft_pwd(); i = ft_get_env(env, "PWD"); env[i] = ft_strjoin("PWD=", pwd); return (0); }
int ft_unsetenv(int ac, char **av, int i, int j) { char *tmp; char **env; env = get_env(); if (!ac) { ft_putendl_fd("unsetenv: Too few arguments.", 2); return (EXIT_FAILURE); } while (i < ac) { j = 0; while (env[j]) { tmp = ft_strjoin(av[i], "="); if (ft_strnequ(tmp, env[j], ft_strlen(tmp))) env = ft_ctabdel(env, j); j++; } i++; } create_env(env); return (EXIT_SUCCESS); }
static void lenght_modifier(char *format, int *i, t_env *e) { if (is_length_modifier(format + *i)) { set_lenght_modifier(format + *i, e); while (is_length_modifier(format + *i)) *i = *i + 1; } while (is_length_modifier(format + *i)) { ini_lenght_modifier(e); set_lenght_modifier(format + *i, e); *i = (ft_strnequ("ll", format + *i, 2) || ft_strnequ("hh", format + *i, 2)) ? 2 : 1; } }
int ft_putenv(char *name, char *value) { char **env; char *to_put; int i; int change; env = get_env(); name = ft_strjoin(name, "="); to_put = ft_strjoin(name, value); change = 0; i = 0; while (env[i] && !change) { if (ft_strnequ(name, env[i], ft_strlen(name))) { env[i] = ft_strdup(to_put); change = 1; } i++; } if (!change) env = ft_ctabaddtoindex(env, setctab(to_put), i, 0); create_env(env); return (-1); }
int ft_strstartwith(const char *s1, const char *s2) { size_t s2len; if ((s2len = ft_strlen(s2)) > ft_strlen(s1)) return (0); return (ft_strnequ(s1, s2, s2len)); }
int read_cmd(int sock, char *cmd) { if (ft_strequ(cmd, "quit")) return (1); else if (ft_strequ(cmd, "pwd")) cmd_pwd(sock); else if (ft_strnequ(cmd, "ls", 2)) cmd_ls(sock); else if (ft_strnequ(cmd, "cd", 2)) cmd_cd(sock); else if (ft_strnequ(cmd, "get ", 4)) cmd_get(sock, cmd); else if (ft_strnequ(cmd, "put ", 4)) cmd_put(sock, cmd); else cmd_unknow(cmd); return (0); }
char *ft_strstr(char *h, char *n) { while (*h) { if (ft_strnequ(h, n, ft_strlen(n))) return (h); h++; } return (NULL); }
int ft_strnequ(char const *s1, char const *s2, size_t n) { if (!s1 || !s2) return (0); if (!n || (!*s1 && !*s2)) return (1); else if (*s1 == *s2) return (ft_strnequ(s1 + 1, s2 + 1, n - 1)); return (0); }
static void part1(char *tmp) { while (tmp[0] != '\0' && tmp[1] != '\0') { if (ft_strnequ(tmp, "/""/", 2)) ft_memmove((void*)tmp, (void*)(tmp + 1), ft_strlen(tmp)); else tmp++; } return ; }
static void part2(char *tmp) { while (tmp[0] != '\0' && tmp[1] != '\0' && tmp[2] != '\0') { if (ft_strnequ(tmp, "/./", 3)) ft_memmove((void*)tmp, (void*)tmp + 2, ft_strlen(tmp) - 1); else tmp++; } return ; }
int ft_strequ(const char *s1, const char *s2) { size_t len; size_t len2; if (s1 == NULL || s2 == NULL) return (0); len = ft_strlen(s1); len2 = ft_strlen(s2); len = (len < len2) ? len2 : len; return (ft_strnequ(s1, s2, len)); }
int msh_isin_locvars(const char *kv, const t_list *lvars) { size_t len; len = ft_strcspn(kv, "="); while (lvars != NULL) { if (ft_strnequ(kv, (char*)lvars->content, MAX(len, ft_strcspn((char*)lvars->content, "=")))) return (1); lvars = lvars->next; } return (0); }
char *msh_get_envvar_l(t_mshc *msh, const t_list *lvars, const char *kv) { size_t len; len = ft_strcspn(kv, "="); while (lvars != NULL) { if (ft_strnequ(kv, (char*)lvars->content, MAX(len, ft_strcspn((char*)lvars->content, "=")))) return ((char*)lvars->content); lvars = lvars->next; } return (ft_envget((const char**)msh->env, kv)); }
char *cut_empty_lin(char *s) { int i; char *s2; s2 = "....\n\0"; i = 0; while (s[i]) { if (ft_strnequ(s + i, s2, 4) == 1) str_replace(s + i, "\n\n\n\n"); i++; } s = src_emptycol(s); return (s); }
char *ft_getenv(const char *name) { int i; size_t len; if (!name || !*name || ft_strchr(name, '=')) return (NULL); i = 0; len = ft_strlen(name); while (g_environ[i]) { if (ft_strnequ(g_environ[i], name, len) && g_environ[i][len] == '=') return (&g_environ[i][len + 1]); i++; } return (NULL); }
static int get_coor(char const *buf, int *i, t_env *e) { int tmp; char *nbr; tmp = *i; *i += buf[*i] == '+' || buf[*i] == '-'; while (ft_isdigit(buf[*i])) (*i)++; if (buf[*i] && buf[*i] != ' ') error(ft_strjoin(buf, " : coordonnees invalides"), e->param); nbr = ft_itoa(ft_atoi(&buf[tmp])); if (!ft_strnequ(nbr, &buf[tmp], ft_strlen(nbr))) error(ft_strjoin(buf, " : coordonnees invalides"), e->param); free(nbr); return (ft_atoi(&buf[tmp])); }
int ft_replace_line(t_list *envi, char *search, char *line) { t_elem *tmp; tmp = envi->begin; while (tmp) { if (ft_strnequ(tmp->data, search, ft_strlen(search)) == 1) { if (tmp->data) free(tmp->data); tmp->data = line; return (1); } tmp = tmp->next; } return (0); }
char *ft_getenv(const char *name) { int i; char **env; env = get_env(); i = 0; while (env[i]) { if (ft_strnequ(name, env[i], ft_strlen(name))) { if ((env[i] + ft_strlen(name))[0] == '=') return (ft_strdup(env[i] + 1 + ft_strlen(name))); } i++; } return (NULL); }
char *ft_strnstr(const char *s1, const char *s2, size_t n) { const char *str; size_t size; str = s1; size = ft_strlen(s2); if (!*s2) return ((char *)(s1)); while (*str && n > 0 && size <= n) { if (ft_strnequ(str, s2, size) == 1) return ((char *)str); str++; n--; } return (0); }