int ext2_symlink(inode_t *dir, dentry_t *dentry, const char* target) { int ret = ext2_mknod(dir, dentry, 0777 | EXT2_S_IFLNK, 0); if (ret) { return ret; } int inode = dentry->d_inode->i_ino; ext2_fs_instance_t* instance = (ext2_fs_instance_t*)dir->i_instance; struct ext2_inode *einode = read_inode(instance, inode); ext2_write2inode(instance, inode, einode, 0, target, strlen(target)); return 0; }
int ext2_mkdir(inode_t *dir, dentry_t *dentry, mode_t mode) { return ext2_mknod(dir, dentry, mode | EXT2_S_IFDIR, 0); }