Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. int mmapcopy(char *inf, char *outf) {
  2.  
  3. int f_source, f_target;
  4. char *src, *dst;
  5. struct stat statbuf;
  6. write(f_target, src, statbuf.st_size);
  7. munmap(src, statbuf.st_size);
  8. close(f_source);
  9. close(f_target);
  10.  
  11. return 1;
  12. }
  13.  
  14. void list_copy(char *source, char *target) {
  15. int f_source, f_target;
  16. char *src, *dst;
  17. struct stat statbuf;
  18. struct dirent *file_s; // info o lokacji dla zrodla
  19. struct stat stat_t; // info o pliku docelowym
  20. struct stat stat_s; // info o pliku zrodlowym
  21. DIR *dir_s; // wskaznik na ścieżke
  22. struct utimbuf new_time; // przetrzymuje nowa date modyfikacji
  23.  
  24. char tmp_s[PATH_MAX]; // tmp do przetrzymywania sciezki zrodla
  25. char tmp_t[PATH_MAX]; // tmp do przetrzymywania sciezki celu
  26.  
  27.  
  28. if ((dir_s = opendir(source))) {
  29. // czytaj ścieżke
  30. while (file_s = readdir(dir_s)) {
  31. snprintf(tmp_s, PATH_MAX, "%s/%s", source, file_s->d_name);
  32. snprintf(tmp_t, PATH_MAX, "%s/%s", target, file_s->d_name);
  33.  
  34. stat(tmp_s, &stat_s);
  35. if (file_s->d_type == DT_REG) { //
  36. if (stat(tmp_t, &stat_t) != 0) {
  37.  
  38. if (fsiz > stat_s.st_size) {
  39. if (copy(tmp_s, tmp_t) == 1) {
  40. syslog(LOG_INFO, "Skopiowano: '%s' do '%s'", tmp_s, tmp_t);
  41. } else {
  42. syslog(LOG_INFO, "Nie skopiowano: '%s' do '%s'", tmp_s, tmp_t);
  43. }
  44. } else {
  45. if (mmapcopy(tmp_s, tmp_t) == 1) {
  46. syslog(LOG_INFO, "(mmap) Skopiowano plik: '%s' do '%s'", tmp_s, tmp_t);
  47.  
  48.  
  49. } else {
  50. syslog(LOG_INFO, "(mmap) Nie skopiowano pliku : '%s' do '%s'", tmp_s, tmp_t);
  51. }
  52. }
  53.  
  54. new_time.modtime = stat_s.st_mtime;
  55. utime(tmp_t, &new_time);
  56. }
  57. }
  58. }
  59. } else {
  60. syslog(LOG_INFO, "Niepowodzenie w otworzeniu sciezki: '%s', '%s'", source, target);
  61. }
  62.  
  63. closedir(dir_s);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement