t_list *get_link(char *d_name, struct stat *f_stat, char *path) { t_ls content; t_list *lst; if (!f_stat || !d_name) return (NULL); errno = 0; content.nb_hlink = (int)(f_stat->st_nlink); content.size = (int)(f_stat->st_size); content.nb_blk = (int)(f_stat->st_blocks); time_asm(f_stat, &content); if (!(content.name = ft_strdup(d_name)) || !(content.u_name = get_uname(f_stat->st_uid)) || !(content.g_name = get_gname(f_stat->st_gid)) || !(content.rights = get_rights(f_stat, path)) || !(content.type = get_type(f_stat))) return (NULL); content.link = f_readlink(content, path); if (!(lst = ft_lstnew(&content, sizeof(content)))) { free_content(&content, content.size); return (NULL); } return (lst); }
bool TestExtFile::test_readlink() { if (f_file_exists("test/test_ext_file2.tmp")) { f_unlink("test/test_ext_file2.tmp"); VERIFY(!f_file_exists("test/test_ext_file2.tmp")); } f_touch("test/test_ext_file.tmp"); f_symlink("test/test_ext_file.tmp", "test/test_ext_file2.tmp"); String resolved = f_readlink("test/test_ext_file2.tmp"); VS(resolved.substr(resolved.size() - 22), "test/test_ext_file.tmp"); return Count(true); }