static void link_device(char *vol_name, char *link_name) { struct stat st; int ret; ret = fs_stat(link_name, &st); if(ret < 0) { ret = fs_symlink(vol_name, link_name); if( ret < 0) { FS_PRINTF("link %s -> %s failed! err code = %d!\n", vol_name, link_name, ret); } } return; }
int do_symlink(const char *filename,uint64_t lv,uint32_t ts,char *ptr) { uint32_t parent,uid,gid,inode; uint8_t name[256]; static uint8_t *path = NULL; static uint32_t pathsize = 0; EAT(ptr,filename,lv,'('); GETU32(parent,ptr); EAT(ptr,filename,lv,','); GETNAME(name,ptr,filename,lv,','); EAT(ptr,filename,lv,','); GETPATH(path,pathsize,ptr,filename,lv,','); EAT(ptr,filename,lv,','); GETU32(uid,ptr); EAT(ptr,filename,lv,','); GETU32(gid,ptr); EAT(ptr,filename,lv,')'); EAT(ptr,filename,lv,':'); GETU32(inode,ptr); return fs_symlink(ts,parent,strlen((char*)name),name,path,uid,gid,inode); }