From ce5c25da381038fa6d2640a2f4aa77771ca2ee43 Mon Sep 17 00:00:00 2001 From: andersen Date: Thu, 21 Jun 2001 19:30:10 +0000 Subject: Support tar -C, per bug #1176 -Erik git-svn-id: svn://busybox.net/trunk/busybox@2872 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- tar.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'tar.c') diff --git a/tar.c b/tar.c index 8dec4349d..55fb12c2c 100644 --- a/tar.c +++ b/tar.c @@ -151,6 +151,7 @@ extern int tar_main(int argc, char **argv) char** excludeList=NULL; char** extractList=NULL; const char *tarName="-"; + const char *cwd=NULL; #if defined BB_FEATURE_TAR_EXCLUDE int excludeListSize=0; FILE *fileList; @@ -181,9 +182,9 @@ extern int tar_main(int argc, char **argv) while ( #ifndef BB_FEATURE_TAR_EXCLUDE - (opt = getopt(argc, argv, "cxtzvOf:p")) + (opt = getopt(argc, argv, "cxtzvOf:pC:")) #else - (opt = getopt_long(argc, argv, "cxtzvOf:X:p", longopts, NULL)) + (opt = getopt_long(argc, argv, "cxtzvOf:X:pC:", longopts, NULL)) #endif > 0) { switch (opt) { @@ -240,6 +241,13 @@ extern int tar_main(int argc, char **argv) #endif case 'p': break; + case 'C': + cwd = xgetcwd((char *)cwd); + if (chdir(optarg)) { + printf("cd: %s: %s\n", optarg, strerror(errno)); + return EXIT_FAILURE; + } + break; default: show_usage(); } @@ -292,6 +300,8 @@ extern int tar_main(int argc, char **argv) #endif } + if (cwd) + chdir(cwd); if (status == TRUE) return EXIT_SUCCESS; else -- cgit v1.2.3-55-g6feb