1 #include "inc.h" 2 3 ssize_t fs_rdlink(ino_t ino_nr, struct fsdriver_data *data, size_t bytes) 4 { 5 struct inode *i_node; 6 size_t len = 0; 7 int r; 8 9 /* Try to get inode according to its index */ 10 if ((i_node = get_inode(ino_nr)) == NULL) 11 return EINVAL; /* no inode found */ 12 13 if (!S_ISLNK(i_node->i_stat.st_mode)) 14 return EACCES; 15 16 len = strlen(i_node->s_name); 17 if (len > bytes) 18 len = bytes; 19 20 if ((r = fsdriver_copyout(data, 0, i_node->s_name, len)) != OK) 21 return r; 22 23 return len; 24 } 25