Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <fcntl.h>
  5. #include <errno.h>
  6. #include <sys/stat.h>
  7.  
  8. int main(int argc, char* argv[]) {
  9. char* buf;
  10. struct stat sb;
  11. char *readf = argv[1], *writef = argv[2];
  12.  
  13. if (stat(readf, &sb)) {
  14. perror("Error opening file!\n");
  15. return errno;
  16. }
  17.  
  18. size_t size = sb.st_size;
  19. int rfdesc = open(readf, O_RDONLY);
  20.  
  21. if (rfdesc < 0) {
  22. perror("Error opening file!\n");
  23. return errno;
  24. }
  25.  
  26. buf = (char*) malloc(size); // allocating memory for buffer
  27.  
  28. if (buf == NULL) {
  29. perror("Error allocating memory for buffer!\n");
  30. }
  31.  
  32. int nread = read(rfdesc, buf, size);
  33.  
  34. if (nread != size) {
  35. perror("Error reading file!\n");
  36. free(buf);
  37. return errno;
  38. }
  39.  
  40. int wfdesc = open(writef, O_WRONLY | O_CREAT | O_TRUNC);
  41. chmod(writef, 777); // setez permisiuni de modificare a fisierului de scriere pt toti utilizatorii
  42.  
  43. if (wfdesc < 0) {
  44. perror("Error opening / creating file !\n");
  45. free(buf);
  46. return errno;
  47. }
  48.  
  49. int nwrite = write(wfdesc, buf, size);
  50.  
  51. if (nwrite != size) {
  52. perror("Error writing file!\n");
  53. free(buf);
  54. return errno;
  55. }
  56.  
  57. char buffer[] = "Program executed successfully!\n";
  58. size_t count = sizeof(buffer);
  59.  
  60. if (write(1, buffer, count) != count) {
  61. perror("Write error!\n");
  62. free(buf);
  63. return errno;
  64. };
  65.  
  66. free(buf);
  67. return 0;
  68. }
  69.  
  70. perror("Error opening / creating file !\n");
  71. free(buf);
  72. return errno;
  73. }
  74.  
  75. int nwrite = write(wfdesc, buf, size);
  76.  
  77. if (nwrite != size) {
  78. perror("Error writing file!\n");
  79. free(buf);
  80. return errno;
  81. }
  82.  
  83. char buffer[] = "Program executed successfully!\n";
  84. size_t count = sizeof(buffer);
  85.  
  86. if (write(1, buffer, count) != count) {
  87. perror("Write error!\n");
  88. free(buf);
  89. return errno;
  90. };
  91. free(buf);
  92. return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement