FileIO.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // Created by miti on 21/07/19.
  3. //
  4. #include "UntrustedInclude/FileIO.h"
  5. namespace FileIO {
  6. int write_to_fd(int fd, uint8_t* msg, size_t* expected_msg_length)
  7. {
  8. ssize_t bytes_written;
  9. lseek(fd, 0, SEEK_SET);
  10. bytes_written = write(fd, msg, *expected_msg_length);
  11. if(bytes_written == -1)
  12. return -1;
  13. fsync(fd);
  14. *expected_msg_length = bytes_written;
  15. return 0;
  16. }
  17. int read_from_fd(int fd, uint8_t* msg, size_t* expected_msg_length)
  18. {
  19. ssize_t bytes_read;
  20. lseek(fd, 0, SEEK_SET);
  21. bytes_read = read(fd, msg, *expected_msg_length);
  22. if(bytes_read == -1)
  23. return -1;
  24. *expected_msg_length = bytes_read;
  25. return 0;
  26. }
  27. int write_to_filename(char* filename, uint8_t* msg, size_t* expected_msg_length)
  28. {
  29. ssize_t bytes_written;
  30. FILE* file;
  31. file = fopen(filename, "w");
  32. if(file == NULL)
  33. return 2;
  34. bytes_written = fwrite(msg, 1, *expected_msg_length, file);
  35. if(bytes_written == -1)
  36. return -1;
  37. fsync(fileno(file));
  38. *expected_msg_length = bytes_written;
  39. fclose(file);
  40. return 0;
  41. }
  42. int read_from_filename(char* filename, uint8_t* msg, size_t* expected_msg_length)
  43. {
  44. ssize_t bytes_read;
  45. FILE* file;
  46. file = fopen(filename, "r");
  47. if(file == NULL)
  48. return 2;
  49. bytes_read = fread(msg, 1, *expected_msg_length, file);
  50. if(bytes_read == -1)
  51. return -1;
  52. *expected_msg_length = bytes_read;
  53. fclose(file);
  54. return 0;
  55. }
  56. size_t check_if_file_exists_return_size(char* filename)
  57. {
  58. int fd, ret_status;
  59. FILE* file;
  60. struct stat st;
  61. file = fopen(filename, "r");
  62. if(file == NULL)
  63. return 0;
  64. fd = fileno(file);
  65. if(fd == -1)
  66. return 0;
  67. printf("\nSuccessfully opened a file to seal the signing key pair for the client.\n");
  68. fflush(stdout);
  69. ret_status = fstat(fd, &st);
  70. if(ret_status != 0)
  71. {
  72. perror("error in finding the file size. - ");
  73. fflush(stderr);
  74. return 0;
  75. }
  76. fclose(file);
  77. return st.st_size;
  78. }
  79. };