Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int mmapcopy(char *inf, char *outf) {
- int f_source, f_target;
- char *src, *dst;
- struct stat statbuf;
- write(f_target, src, statbuf.st_size);
- munmap(src, statbuf.st_size);
- close(f_source);
- close(f_target);
- return 1;
- }
- void list_copy(char *source, char *target) {
- int f_source, f_target;
- char *src, *dst;
- struct stat statbuf;
- struct dirent *file_s; // info o lokacji dla zrodla
- struct stat stat_t; // info o pliku docelowym
- struct stat stat_s; // info o pliku zrodlowym
- DIR *dir_s; // wskaznik na ścieżke
- struct utimbuf new_time; // przetrzymuje nowa date modyfikacji
- char tmp_s[PATH_MAX]; // tmp do przetrzymywania sciezki zrodla
- char tmp_t[PATH_MAX]; // tmp do przetrzymywania sciezki celu
- if ((dir_s = opendir(source))) {
- // czytaj ścieżke
- while (file_s = readdir(dir_s)) {
- snprintf(tmp_s, PATH_MAX, "%s/%s", source, file_s->d_name);
- snprintf(tmp_t, PATH_MAX, "%s/%s", target, file_s->d_name);
- stat(tmp_s, &stat_s);
- if (file_s->d_type == DT_REG) { //
- if (stat(tmp_t, &stat_t) != 0) {
- if (fsiz > stat_s.st_size) {
- if (copy(tmp_s, tmp_t) == 1) {
- syslog(LOG_INFO, "Skopiowano: '%s' do '%s'", tmp_s, tmp_t);
- } else {
- syslog(LOG_INFO, "Nie skopiowano: '%s' do '%s'", tmp_s, tmp_t);
- }
- } else {
- if (mmapcopy(tmp_s, tmp_t) == 1) {
- syslog(LOG_INFO, "(mmap) Skopiowano plik: '%s' do '%s'", tmp_s, tmp_t);
- } else {
- syslog(LOG_INFO, "(mmap) Nie skopiowano pliku : '%s' do '%s'", tmp_s, tmp_t);
- }
- }
- new_time.modtime = stat_s.st_mtime;
- utime(tmp_t, &new_time);
- }
- }
- }
- } else {
- syslog(LOG_INFO, "Niepowodzenie w otworzeniu sciezki: '%s', '%s'", source, target);
- }
- closedir(dir_s);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement