aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
Diffstat (limited to 'archival')
-rw-r--r--archival/dpkg_deb.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c
index fbdb14e26..6653f2a7c 100644
--- a/archival/dpkg_deb.c
+++ b/archival/dpkg_deb.c
@@ -20,7 +20,7 @@
20 20
21extern int dpkg_deb_main(int argc, char **argv) 21extern int dpkg_deb_main(int argc, char **argv)
22{ 22{
23 char *target_dir = NULL; 23 char *target_dir;
24 int opt = 0; 24 int opt = 0;
25 int optflag = 0; 25 int optflag = 0;
26 26
@@ -50,9 +50,10 @@ extern int dpkg_deb_main(int argc, char **argv)
50 } 50 }
51 } 51 }
52 52
53 if (((optind + 1 ) > argc) || (optflag == 0)) { 53 if (optind == argc) {
54 show_usage(); 54 show_usage();
55 } 55 }
56
56 switch (optflag) { 57 switch (optflag) {
57 case (extract_control): 58 case (extract_control):
58 case (extract_extract): 59 case (extract_extract):
@@ -60,13 +61,15 @@ extern int dpkg_deb_main(int argc, char **argv)
60 if ( (optind + 1) == argc ) { 61 if ( (optind + 1) == argc ) {
61 target_dir = (char *) xmalloc(7); 62 target_dir = (char *) xmalloc(7);
62 strcpy(target_dir, "DEBIAN"); 63 strcpy(target_dir, "DEBIAN");
64 } else {
65 target_dir = (char *) xmalloc(strlen(argv[optind + 1]) + 1);
66 strcpy(target_dir, argv[optind + 1]);
63 } 67 }
64 break; 68 break;
65 default: { 69 default:
66 target_dir = (char *) xmalloc(strlen(argv[optind + 1])); 70 target_dir = NULL;
67 strcpy(target_dir, argv[optind + 1]);
68 }
69 } 71 }
72
70 deb_extract(argv[optind], optflag, target_dir); 73 deb_extract(argv[optind], optflag, target_dir);
71/* else if (optflag & dpkg_deb_info) { 74/* else if (optflag & dpkg_deb_info) {
72 extract_flag = TRUE; 75 extract_flag = TRUE;