diff options
Diffstat (limited to 'archival')
-rw-r--r-- | archival/dpkg_deb.c | 15 |
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 | ||
21 | extern int dpkg_deb_main(int argc, char **argv) | 21 | extern 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; |