aboutsummaryrefslogtreecommitdiff
path: root/tar.c
diff options
context:
space:
mode:
Diffstat (limited to 'tar.c')
-rw-r--r--tar.c14
1 files changed, 12 insertions, 2 deletions
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)
151 char** excludeList=NULL; 151 char** excludeList=NULL;
152 char** extractList=NULL; 152 char** extractList=NULL;
153 const char *tarName="-"; 153 const char *tarName="-";
154 const char *cwd=NULL;
154#if defined BB_FEATURE_TAR_EXCLUDE 155#if defined BB_FEATURE_TAR_EXCLUDE
155 int excludeListSize=0; 156 int excludeListSize=0;
156 FILE *fileList; 157 FILE *fileList;
@@ -181,9 +182,9 @@ extern int tar_main(int argc, char **argv)
181 182
182 while ( 183 while (
183#ifndef BB_FEATURE_TAR_EXCLUDE 184#ifndef BB_FEATURE_TAR_EXCLUDE
184 (opt = getopt(argc, argv, "cxtzvOf:p")) 185 (opt = getopt(argc, argv, "cxtzvOf:pC:"))
185#else 186#else
186 (opt = getopt_long(argc, argv, "cxtzvOf:X:p", longopts, NULL)) 187 (opt = getopt_long(argc, argv, "cxtzvOf:X:pC:", longopts, NULL))
187#endif 188#endif
188 > 0) { 189 > 0) {
189 switch (opt) { 190 switch (opt) {
@@ -240,6 +241,13 @@ extern int tar_main(int argc, char **argv)
240#endif 241#endif
241 case 'p': 242 case 'p':
242 break; 243 break;
244 case 'C':
245 cwd = xgetcwd((char *)cwd);
246 if (chdir(optarg)) {
247 printf("cd: %s: %s\n", optarg, strerror(errno));
248 return EXIT_FAILURE;
249 }
250 break;
243 default: 251 default:
244 show_usage(); 252 show_usage();
245 } 253 }
@@ -292,6 +300,8 @@ extern int tar_main(int argc, char **argv)
292#endif 300#endif
293 } 301 }
294 302
303 if (cwd)
304 chdir(cwd);
295 if (status == TRUE) 305 if (status == TRUE)
296 return EXIT_SUCCESS; 306 return EXIT_SUCCESS;
297 else 307 else