Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use pointers on sg_storage_size_t in the dict instead of crappy void*
[simgrid.git] / src / msg / msg_io.c
index 52da4cc..08601f3 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "msg_private.h"
 #include "xbt/log.h"
+#include <inttypes.h>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_io, msg,
                                 "Logging specific to MSG (io)");
@@ -20,12 +21,15 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_io, msg,
 /********************************* File **************************************/
 void __MSG_file_get_info(msg_file_t fd){
   xbt_dynar_t info = simcall_file_get_info(fd->simdata->smx_file);
+  sg_storage_size_t *psize;
+
   fd->info->content_type = xbt_dynar_pop_as(info, char *);
   fd->info->storage_type = xbt_dynar_pop_as(info, char *);
   fd->info->storageId = xbt_dynar_pop_as(info, char *);
   fd->info->mount_point = xbt_dynar_pop_as(info, char *);
-  fd->info->size = xbt_dynar_pop_as(info, sg_storage_size_t);
-
+  psize = xbt_dynar_pop_as(info, sg_storage_size_t*);
+  fd->info->size = *psize;
+  xbt_free(psize);
   xbt_dynar_free_container(&info);
 }
 
@@ -65,11 +69,16 @@ void MSG_file_dump (msg_file_t fd){
 //   THROW_UNIMPLEMENTED;
   /* Update the cached information first */
   __MSG_file_get_info(fd);
-  XBT_INFO("File Descriptor information:\n\t\tFull name: '%s'"
-      "\n\t\tSize: %zu\n\t\tMount point: '%s'\n\t\tStorage Id: '%s'"
-      "\n\t\tStorage Type: '%s'\n\t\tContent Type: '%s'",
-      fd->fullname, fd->info->size, fd->info->mount_point, fd->info->storageId,
-      fd->info->storage_type, fd->info->content_type);
+  XBT_INFO("File Descriptor information:\n"
+           "\t\tFull name: '%s'\n"
+           "\t\tSize: %" PRIu64 "\n"
+           "\t\tMount point: '%s'\n"
+           "\t\tStorage Id: '%s'\n"
+           "\t\tStorage Type: '%s'\n"
+           "\t\tContent Type: '%s'",
+           fd->fullname, fd->info->size, fd->info->mount_point,
+           fd->info->storageId, fd->info->storage_type,
+           fd->info->content_type);
 }
 
 /** \ingroup msg_file_management
@@ -79,9 +88,9 @@ void MSG_file_dump (msg_file_t fd){
  * \param fd is a the file descriptor
  * \return the number of bytes successfully read
  */
-sg_storage_size_t MSG_file_read(sg_storage_size_t size, msg_file_t fd)
+sg_storage_size_t MSG_file_read(msg_file_t fd, sg_storage_size_t size)
 {
-  return simcall_file_read(size, fd->simdata->smx_file);
+  return simcall_file_read(fd->simdata->smx_file, size);
 }
 
 /** \ingroup msg_file_management
@@ -91,9 +100,9 @@ sg_storage_size_t MSG_file_read(sg_storage_size_t size, msg_file_t fd)
  * \param fd is a the file descriptor
  * \return the number of bytes successfully write
  */
-sg_storage_size_t MSG_file_write(sg_storage_size_t size, msg_file_t fd)
+sg_storage_size_t MSG_file_write(msg_file_t fd, sg_storage_size_t size)
 {
-  return simcall_file_write(size, fd->simdata->smx_file);
+  return simcall_file_write(fd->simdata->smx_file, size);
 }
 
 /** \ingroup msg_file_management
@@ -140,7 +149,12 @@ int MSG_file_close(msg_file_t fd)
  */
 int MSG_file_unlink(msg_file_t fd)
 {
-  return simcall_file_unlink(fd->simdata->smx_file);
+  int res = simcall_file_unlink(fd->simdata->smx_file);
+  free(fd->fullname);
+  xbt_free(fd->simdata);
+  xbt_free(fd->info);
+  xbt_free(fd);
+  return res;
 }
 
 /** \ingroup msg_file_management