return action;
}
-StorageActionPtr StorageN11::open(char* mount, char* path)
+StorageActionPtr StorageN11::open(const char* mount, const char* path)
{
XBT_DEBUG("\tOpen file '%s'",path);
StorageActionPtr action = new StorageN11Action(getModel(), 0, getState() != SURF_RESOURCE_ON, this, OPEN);
action->p_file = file;
- free(path);
- free(mount);
return action;
}
lmm_system_t maxminSystem, double bread, double bwrite, double bconnection,
const char* type_id, char *content_name, char *content_type, sg_size_t size, char *attach);
- StorageActionPtr open(char* mount, char* path);
+ StorageActionPtr open(const char* mount, const char* path);
StorageActionPtr close(surf_file_t fd);
StorageActionPtr ls(const char *path);
StorageActionPtr read(surf_file_t fd, sg_size_t size);//FIXME:why we have a useless param ptr ??
{
XBT_DEBUG("See '%s'",mnt.name);
file_mount_name = (char *) xbt_malloc ((strlen(mnt.name)+1));
- strncpy(file_mount_name,fullpath,strlen(mnt.name));
+ strncpy(file_mount_name,fullpath,strlen(mnt.name)+1);
file_mount_name[strlen(mnt.name)] = '\0';
if(!strcmp(file_mount_name,mnt.name) && strlen(mnt.name)>longest_prefix_length)
{ /* Mount point found, split fullpath into mount_name and path+filename*/
path = (char *) xbt_malloc ((strlen(fullpath)-longest_prefix_length+1));
mount_name = (char *) xbt_malloc ((longest_prefix_length+1));
- strncpy(mount_name, fullpath, longest_prefix_length);
+ strncpy(mount_name, fullpath, longest_prefix_length+1);
+ strncpy(path, fullpath+longest_prefix_length, strlen(fullpath)-longest_prefix_length+1);
path[strlen(fullpath)-longest_prefix_length] = '\0';
mount_name[longest_prefix_length] = '\0';
}
else
xbt_die("Can't find mount point for '%s' on '%s'", fullpath, getName());
- return st->open(mount_name, path);
+ ActionPtr action = st->open((const char*)mount_name, (const char*)path);
+ free((char*)path);
+ free((char*)mount_name);
+ return action;
}
ActionPtr Workstation::close(surf_file_t fd) {