static char *get_newdir(t_params *p, char *buf) { char *new_dir; char *tmp; if (!ft_strncmp(buf, "./", 2)) new_dir = ft_strjoin(p->pwd, ft_strchr(buf, '/')); else if (buf[0] == '/') new_dir = ft_strdup(buf); else if (!ft_strcmp(buf, "-")) new_dir = ft_strdup(p->oldpwd); else if (!ft_strcmp(buf, "..")) new_dir = ft_strlen(p->pwd) - ft_strlen(ft_strrchr(p->pwd, '/')) ? ft_strndup(p->pwd, ft_strlen(p->pwd) - ft_strlen(ft_strrchr(p->pwd, '/')) - 1) : ft_strdup("/"); else { tmp = p->pwd[ft_strlen(p->pwd) - 1] != '/' ? ft_strjoin(p->pwd, "/") : NULL; new_dir = tmp != NULL ? ft_strjoin(tmp, buf) : ft_strjoin(p->pwd, buf); ft_strdel(&tmp); } return (new_dir); }
void test_strrchr(void) { char *str = "je suis une chaine sans s a partir d'ici"; printf("\nTesting ft_strrchr\n"); printf("%-20s %-10s %-10s\n%-20s %-10s %-10s\n", "Expected result:", strrchr(str, 's'), strrchr(str, 'z'), "Acutal result:", ft_strrchr(str, 's'), ft_strrchr(str, 'z')); }
static const char *ft_set_start(const char *str) { if (ft_strrchr(str, '%') != str) str = ft_strrchr(str, '%'); else { ++str; while (*str == '-' || *str == '.' || *str == ' ' || ft_isdigit(*str) || *str == '.') ++str; } return (str); }
char *get_next_line(int const fd) { static char *tmp; char *buf; char *size; int ret; tmp = (tmp ? tmp : ft_strdup("")); if (fd < 0 || BUFF_SIZE < 1) return (ft_exit(&tmp)); buf = ft_strnew(BUFF_SIZE + 1); if (!buf) return (ft_exit(&tmp)); while (!(size = ft_strchr(tmp, '\n')) && (ret = read(fd, buf, BUFF_SIZE))) { buf[ret] = 0; tmp = ft_strcleanjoin(tmp, buf); } ft_free(&buf); if (tmp[0] && (size || (size = ft_strrchr(tmp, 0)))) { buf = ft_strsub(tmp, 0, size - tmp); ft_free(&tmp); tmp = (size[0] ? ft_strdup(size + 1) : ft_strdup("")); return (buf); } return (ft_exit(&tmp)); }
void check_strrchr() { printf( "--------\nTest ft_strrchr:\n" ); printf("strrchr: %s, ft_strrchr: %s \n", strrchr("yoloooooooooooo loilol kikou", 'y'), ft_strrchr("yoloooooooooooo loilol kikou", 'y')); printf("strrchr: %s, ft_strrchr: %s \n", strrchr("mama just killed a man", 'k'), ft_strrchr("mama just killed a man", 'k')); printf("\033[32mOk\n\033[0m"); }
static char *concatenate(char *path, char *pwd) { char *extract; char *tmp; while ((extract = ft_strdupchr(path, '/'))) { if (!ft_strcmp(extract, "..")) { tmp = ft_strrchr(pwd, '/'); ft_bzero(tmp, ft_strlen(tmp)); move_str(&path, 3, -3, ft_strlen(path)); ft_bzero(path + ft_strlen(path) - 3, 3); } else { pwd = ft_freejoin(pwd, "/"); pwd = ft_freejoin(pwd, extract); move_str(&path, ft_strlen(extract) + 1, -(ft_strlen(extract) + 1), ft_strlen(pwd)); } ft_strdel(&extract); } if (ft_strcmp(pwd, "/")) pwd = ft_freejoin(pwd, "/"); return (ft_freejoin(pwd, path)); }
int minishell_termcap_completion(unsigned int keycode, int *pos, char *buff, t_shell *shell) { char *complete; char *path; char *subbuff; size_t cl; (void)shell; if (keycode != 9) return (READ_AGAIN); if ((path = getcwd(NULL, 4096))) { buff[*pos] = '\0'; subbuff = ft_strrchr(buff, ' '); if ((subbuff) && (*subbuff == ' ')) subbuff++; if ((!(complete = minishell_complete(subbuff, path))) && (ft_mfree(1, path))) return (READ_AGAIN); if (!(cl = ft_strlen(complete))) return (READ_AGAIN); write(1, complete, cl); ft_memcpy(&buff[*pos], complete, cl + 1); *pos += (int)cl; ft_mfree(2, path, complete); } return (READ_AGAIN); }
static void cd_get_path(char **av, char **path, char *pwd, char *str) { char *str1; if (!av[1]) *path = ft_strdup(str); else if (!ft_strncmp(av[1], "~", 1)) *path = ft_strjoin(str, &(av[1][1])); else if (!ft_strncmp(av[1], "/", 1)) *path = ft_strdup(av[1]); else if (!ft_strcmp(av[1], "-")) *path = NULL; else if (!ft_strcmp(av[1], ".") || !ft_strcmp(av[1], "..")) { *path = ft_strdup(pwd); if (!ft_strcmp(av[1], "..")) (ft_strrchr(*path, '/'))[1] = '\0'; } else { str1 = ft_strjoin(pwd, "/"); *path = ft_strjoin(str1, av[1]); ft_memdel((void **)&str1); } }
char *ft_realpath(char *path) { size_t i; char *tmp; char **arr; i = 0; if (!path || (arr = ft_strsplit(path, '/')) == NULL) return (NULL); ft_bzero(path, (size_t)ft_strlen(path)); if (ft_arrsize(arr) <= 0) ft_strcat(path, "/"); while (arr[i] != NULL) { tmp = ft_strrchr(path, '/'); if (ft_strcmp(arr[i], "..") == 0 && ft_strrichr(path, '/') > 0) *tmp = '\0'; else if (ft_strcmp(arr[i], ".") != 0) { ft_strcat(path, "/"); if (ft_strcmp(arr[i], "..") != 0) ft_strcat (path, arr[i]); } i++; } ft_arrdel(&arr); return (path); }
void ft_st_color(char *str, int key, int i, int pos) { char *ptr; static int active; if (key == GKEY_DOT) active = active ? 0 : 1; if (i == pos) return ; if (!active && str != NULL && !ft_strncmp(str, "/dev/", 4)) ft_putstr_fd("\033[31m", isatty(STDOUT_FILENO)); else if (!active && str != NULL && (ptr = ft_strrchr(str, '.')) != NULL) { if (!ft_strcmp(ptr, ".o")) ft_putstr_fd("\033[35m", isatty(STDOUT_FILENO)); else if (!ft_strcmp(ptr, ".c")) ft_putstr_fd("\033[34m", isatty(STDOUT_FILENO)); else if (!ft_strcmp(ptr, ".cpp")) ft_putstr_fd("\033[32m", isatty(STDOUT_FILENO)); else if (!ft_strcmp(ptr, ".s")) ft_putstr_fd("\033[36m", isatty(STDOUT_FILENO)); else if (!ft_strcmp(ptr, ".cor")) ft_putstr_fd("\033[33m", isatty(STDOUT_FILENO)); } else if (!active && str != NULL && ptr == NULL) ft_st_color_x(str); return ; }
int ft_check_file(t_state *state, char **argv, int count) { int i; int fd; char *tmp; int cor; i = 1; cor = 0; while (i <= count) { tmp = ft_strrchr(argv[i], '.'); if (tmp == NULL) i++; else if (!strcmp(tmp,".cor")) { if ((fd = open(argv[i], O_RDONLY)) < 0) error_exit(state, "Error: Invalid file at O_RDONLY check\n"); close(fd); cor++; } i++; } if (cor < state->champ_count) error_exit(state, "Error: Invalid file extension\n"); return (0); }
static char *get_name(char *name, t_opts *options) { char *new_name; if (D && name[0] == '/') return (name); else if (D && !(new_name = ft_strrchr(name, '/'))) return (name); else if (!D && (new_name = ft_strrchr(name, '/'))) { new_name++; return (new_name); } else return (name); }
void lister_match(DIR *directory, char *str) { struct dirent *lecture; int i; char *path; i = 0; while ((lecture = readdir(directory)) != NULL) { path = ft_strrchr(str, '/'); if (path == NULL) path = ft_strdup(str); else path++; if (match(lecture->d_name, path)) { if (lecture->d_name[0] != '.' || path[0] == '.') { ft_putstr(lecture->d_name); ft_putstr(" "); } i++; } } if (i == 0) error(path, 'a'); }
int parse_champ_count(t_state *state, char **argv, int count) { int i; int champs; char *tmp; i = 1; champs = 0; while (i <= count) { tmp = ft_strrchr(argv[i], '.'); if (!ft_strcmp("-n",argv[i])) i++; else if (!ft_strcmp("-dump",argv[i])) i++; else if (ft_strncmp(tmp, ".cor", 3) == 0) champs++; i++; } if (champs == 0 || champs > MAX_PLAYERS) error_exit(state, "Error: Invalid amount of players\n"); else if (champs > 0 && champs <= MAX_PLAYERS) state->champ_count = champs; return (0); }
static int something(char *path) { char *tmp; char *line; int fd; if(ft_strchr(path, '/')) { tmp = ft_strrchr(path, '/'); tmp++; } else tmp = path; if ((fd = open(tmp, O_RDONLY)) != -1) { ft_putendl("\e[0;1mExisting file :\e[0m\n(A)bort, (R)ename, (O)verwrite ?"); get_next_line(0, &line); if (line[0] == 'R') { ft_putendl("New name : "); get_next_line(0, &line); return (something(line)); } else if (line[0] == 'O') { fd = open(tmp, O_TRUNC | O_WRONLY); return (fd); } else { close(fd); return (-1); } }
int error_opendir(char *dirname) { ft_putstr_fd("ft_ls: ", 2); perror(&(dirname[ft_strlen(dirname) - ft_strlen( ft_strrchr(dirname, '/')) + 1])); return (0); }
void ft_colour(char *str, int key, int k, int pos) { char *l; static int status; if (key == GKEY_DOT) status = status ? 0 : 1; if (k == pos) return ; if (!status && str != NULL && !ft_strncmp(str, "/dev/", 4)) ft_putstr_fd("\033[31m", isatty(1)); else if (!status && str != NULL && (l = ft_strrchr(str, '.')) != NULL) { if (!ft_strcmp(l, ".o")) ft_putstr_fd("\033[35m", isatty(1)); else if (!ft_strcmp(l, ".c")) ft_putstr_fd("\033[34m", isatty(1)); else if (!ft_strcmp(l, ".cpp")) ft_putstr_fd("\033[32m", isatty(1)); else if (!ft_strcmp(l, ".s")) ft_putstr_fd("\033[36m", isatty(1)); else if (!ft_strcmp(l, ".cor")) ft_putstr_fd("\033[33m", isatty(1)); } else if (!status && str != NULL && l == NULL) ft_colour_x(str); }
static void maj_path_wo_name(void) { char *f; if ((f = ft_strrchr(env()->path, '/'))) *f = 0; if (!ft_strlen(env()->path)) ft_strcpy(env()->path, "/"); }
int main() { const char tab[]= "ta mere la grosse diesiel"; int v = 'a'; printf("'%s''%s'", strrchr(tab, v), ft_strrchr(tab, v)); return (0); }
static char *storage_name(char *path_name) { char *name; name = ft_strrchr(path_name, '/'); if (name != NULL && ++name != NULL) return (ft_strdup(name)); return (ft_strdup(path_name)); }
char *ft_strnopath(char *over_path) { char *end_path; if ((end_path = ft_strrchr(over_path, '/'))) return (end_path + 1); else return (over_path); }
char *ft_basename(const char *path) { char *slash; if (!path) return (NULL); if ((slash = ft_strrchr(path, '/'))) return (ft_strdup(slash + 1)); return (ft_strdup(path)); }
t_list *ft_del_files(t_core *core) { t_list *cursor; t_list *tmp; cursor = OUTPUT; while (cursor) { tmp = cursor->next; if (!(ft_strchr(OPT, 'R')) || !(ft_strcmp(ft_strrchr(cursor->content, '/'), "/.")) || !(ft_strcmp(ft_strrchr(cursor->content, '/'), "/..")) || (ft_is_file_foo(cursor->content, "link")) || (ft_is_dir(cursor->content)) != 1) ft_lstfreeone(&OUTPUT, &cursor); cursor = tmp; } return (OUTPUT); }
char *ft_filename(char const *path) { char *name; name = ft_strrchr(path, '/'); if (name) return (ft_strdup(name + 1)); else return (ft_strdup(path)); }
char *find_name(char *dup, char **av, int start) { char *name; name = ft_strrchr(dup, (int)'/'); if (!name) name = dup; else if (*(name + 1) == '\0' && name != av[start]) { *name = '\0'; name = ft_strrchr(dup, (int)'/'); if (!name) name = dup; else name++; } else name++; return (name); }
char *get_file_name(char *path) { char *ret; char *file_name; if ((file_name = ft_strrchr(path, '/')) == NULL) ret = ft_strdup(path); else ret = ft_strdup(file_name + 1); return (ret); }
static void ft_clean_trailing_dotdot(char *path) { char *cursor; if (ft_strequ(path, "/..")) { path[1] = 0; return ; } cursor = ft_strrchr(path, '/'); if (cursor && ft_strequ(cursor, "/..")) { cursor[0] = 0; cursor = ft_strrchr(path, '/'); if (cursor == path) cursor[1] = 0; else cursor[0] = 0; } return ; }
char *ft_strrchr(const char *s, int c) { char *last; if (*s == '\0') return ((c == 0) ? (char *)s : NULL); last = ft_strrchr(s + 1, c); if (!last && *s == (char)c) return ((char *)s); else return (last); }
void prompt(int sig) { char *dir; (void)sig; dir = (char*)malloc(MAXPATHLEN); dir = getcwd(dir, MAXPATHLEN); if (sig > 0) write(1, "\n", 1); ft_printf("\033[31;1m[megaprompt]\033[0m %s> ", ft_strrchr(dir, '/')); ft_strdel(&dir); }
char *get_path(char *s) { char *ret; if (ft_strchr(s, '/')) { ret = ft_strrchr(s, '/'); ret++; } else ret = s; return (ret); }