- int HostImpl::fileMove(surf_file_t fd, const char* fullpath)
- {
- /* Check if the new full path is on the same mount point */
- if (!strncmp((const char*)fd->mount, fullpath, strlen(fd->mount))) {
- sg_size_t* psize = (sg_size_t*)xbt_dict_get_or_null(findStorageOnMountList(fd->mount)->content_, fd->name);
- if (psize) { // src file exists
- sg_size_t* new_psize = xbt_new(sg_size_t, 1);
- *new_psize = *psize;
- xbt_dict_remove(findStorageOnMountList(fd->mount)->content_, fd->name);
- char* path = (char*)xbt_malloc((strlen(fullpath) - strlen(fd->mount) + 1));
- strncpy(path, fullpath + strlen(fd->mount), strlen(fullpath) - strlen(fd->mount) + 1);
- xbt_dict_set(findStorageOnMountList(fd->mount)->content_, path, new_psize, nullptr);
- XBT_DEBUG("Move file from %s to %s, size '%llu'", fd->name, fullpath, *psize);
- free(path);
- return 0;
- } else {
- XBT_WARN("File %s doesn't exist", fd->name);
- return -1;
- }
- } else {
- XBT_WARN("New full path %s is not on the same mount point: %s. Action has been canceled.", fullpath, fd->mount);
- return -1;
- }
- }
+int HostImpl::fileSeek(surf_file_t fd, sg_offset_t offset, int origin)
+{
+ switch (origin) {
+ case SEEK_SET:
+ fd->current_position = offset;
+ return 0;
+ case SEEK_CUR:
+ fd->current_position += offset;
+ return 0;
+ case SEEK_END:
+ fd->current_position = fd->size + offset;
+ return 0;
+ default:
+ return -1;
+ }
+}