Download | Plain Text | No Line Numbers
- diff -Naur tar-1.18.orig/src/common.h tar-1.18/src/common.h
- --- tar-1.18.orig/src/common.h 2007-06-27 15:30:31.000000000 +0200
- +++ tar-1.18/src/common.h 2011-01-13 14:08:14.000000000 +0100
- @@ -261,6 +261,12 @@
-
- GLOBAL bool show_omitted_dirs_option;
-
- +GLOBAL unsigned sleep_time;
- +GLOBAL unsigned sleep_filenum;
- +GLOBAL unsigned sleep_curfilenum;
- +GLOBAL unsigned sleep_filesize;
- +GLOBAL unsigned sleep_curfilesize;
- +
- GLOBAL bool sparse_option;
- GLOBAL unsigned tar_sparse_major;
- GLOBAL unsigned tar_sparse_minor;
- diff -Naur tar-1.18.orig/src/extract.c tar-1.18/src/extract.c
- --- tar-1.18.orig/src/extract.c 2007-06-27 15:30:31.000000000 +0200
- +++ tar-1.18/src/extract.c 2011-01-13 15:17:00.000000000 +0100
- @@ -832,6 +832,24 @@
- UNKNOWN_PERMSTATUS : ARCHIVED_PERMSTATUS),
- typeflag);
-
- + if (sleep_filenum > 0)
- + ++sleep_curfilenum;
- + if (sleep_filesize > 0)
- + sleep_curfilesize += current_stat_info.stat.st_size;
- + if (sleep_time > 0)
- + {
- + if (sleep_filenum > 0 && sleep_curfilenum >= sleep_filenum)
- + {
- + sleep_curfilenum -= sleep_filenum;
- + usleep(sleep_time * 1000);
- + }
- + else if (sleep_filesize > 0 && sleep_curfilesize >= sleep_filesize)
- + {
- + sleep_curfilesize -= sleep_filesize;
- + usleep(sleep_time * 1000);
- + }
- + }
- +
- return status;
- }
-
- @@ -1246,7 +1264,6 @@
- }
- else
- skip_member ();
- -
- }
-
- /* Extract the symbolic links whose final extraction were delayed. */
- diff -Naur tar-1.18.orig/src/tar.c tar-1.18/src/tar.c
- --- tar-1.18.orig/src/tar.c 2007-06-27 15:30:32.000000000 +0200
- +++ tar-1.18/src/tar.c 2011-01-13 14:18:53.000000000 +0100
- @@ -307,6 +307,7 @@
- SHOW_DEFAULTS_OPTION,
- SHOW_OMITTED_DIRS_OPTION,
- SHOW_TRANSFORMED_NAMES_OPTION,
- + SLEEP_OPTION,
- SPARSE_VERSION_OPTION,
- STRIP_COMPONENTS_OPTION,
- SUFFIX_OPTION,
- @@ -543,6 +544,8 @@
- N_("ignore zeroed blocks in archive (means EOF)"), GRID+1 },
- {"read-full-records", 'B', 0, 0,
- N_("reblock as we read (for 4.2BSD pipes)"), GRID+1 },
- + {"sleep", SLEEP_OPTION, N_("SLEEP:FILENUM[:FILESIZE]"), 0,
- + N_("while extracting sleep SLEEP milliseconds every FILENUM files [or FILESIZE bytes]"), GRID+1 },
- #undef GRID
-
- #define GRID 80
- @@ -1755,6 +1758,29 @@
- show_transformed_names_option = true;
- break;
-
- + case SLEEP_OPTION:
- + {
- + char *token, *p;
- + if ((token = strtok (arg, ":")) == NULL)
- + FATAL_ERROR ((0, 0, _("--sleep: Invalid syntax 1")));
- + sleep_time = strtoul (token, &p, 10);
- + if (*p)
- + FATAL_ERROR ((0, 0, _("--sleep: SLEEP is not an integer")));
- +
- + if ((token = strtok (NULL, ":")) == NULL)
- + FATAL_ERROR ((0, 0, _("--sleep: Invalid syntax 2")));
- + sleep_filenum = strtoul (token, &p, 10);
- + if (*p)
- + FATAL_ERROR ((0, 0, _("--sleep: FILENUM is not an integer")));
- +
- + if ((token = strtok (NULL, ":")) == NULL)
- + break;
- + sleep_filesize = strtoul (token, &p, 10);
- + if (*p)
- + FATAL_ERROR ((0, 0, _("--sleep: FILESIZE is not an integer")));
- + }
- + break;
- +
- case SUFFIX_OPTION:
- backup_option = true;
- args->backup_suffix_string = arg;
- @@ -1975,6 +2001,7 @@
- unquote_option = true;
- tar_sparse_major = 1;
- tar_sparse_minor = 0;
- + sleep_time = sleep_filenum = sleep_curfilenum = sleep_filesize = sleep_curfilesize = 0;
-
- owner_option = -1;
- group_option = -1;
-