diff options
Diffstat (limited to 'archival')
-rw-r--r-- | archival/dpkg_deb.c | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c index 3bec8cfc7..7c5a5de58 100644 --- a/archival/dpkg_deb.c +++ b/archival/dpkg_deb.c | |||
@@ -20,11 +20,11 @@ | |||
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; | 23 | char *argument = NULL; |
24 | int opt = 0; | 24 | int opt = 0; |
25 | int optflag = 0; | 25 | int optflag = 0; |
26 | 26 | ||
27 | while ((opt = getopt(argc, argv, "cetXxl")) != -1) { | 27 | while ((opt = getopt(argc, argv, "ceftXxI")) != -1) { |
28 | switch (opt) { | 28 | switch (opt) { |
29 | case 'c': | 29 | case 'c': |
30 | optflag |= extract_contents; | 30 | optflag |= extract_contents; |
@@ -32,6 +32,9 @@ extern int dpkg_deb_main(int argc, char **argv) | |||
32 | case 'e': | 32 | case 'e': |
33 | optflag |= extract_control; | 33 | optflag |= extract_control; |
34 | break; | 34 | break; |
35 | case 'f': | ||
36 | optflag |= extract_field; | ||
37 | break; | ||
35 | case 't': | 38 | case 't': |
36 | optflag |= extract_fsys_tarfile; | 39 | optflag |= extract_fsys_tarfile; |
37 | break; | 40 | break; |
@@ -41,13 +44,9 @@ extern int dpkg_deb_main(int argc, char **argv) | |||
41 | case 'x': | 44 | case 'x': |
42 | optflag |= extract_extract; | 45 | optflag |= extract_extract; |
43 | break; | 46 | break; |
44 | case 'l': | 47 | case 'I': |
45 | optflag |= extract_list; | ||
46 | break; | ||
47 | /* case 'I': | ||
48 | optflag |= extract_info; | 48 | optflag |= extract_info; |
49 | break; | 49 | break; |
50 | */ | ||
51 | default: | 50 | default: |
52 | show_usage(); | 51 | show_usage(); |
53 | } | 52 | } |
@@ -61,26 +60,33 @@ extern int dpkg_deb_main(int argc, char **argv) | |||
61 | case (extract_control): | 60 | case (extract_control): |
62 | case (extract_extract): | 61 | case (extract_extract): |
63 | case (extract_verbose_extract): | 62 | case (extract_verbose_extract): |
63 | /* argument is a dir name */ | ||
64 | if ( (optind + 1) == argc ) { | 64 | if ( (optind + 1) == argc ) { |
65 | target_dir = (char *) xmalloc(7); | 65 | argument = xstrdup("DEBIAN"); |
66 | strcpy(target_dir, "DEBIAN"); | ||
67 | } else { | 66 | } else { |
68 | target_dir = (char *) xmalloc(strlen(argv[optind + 1]) + 1); | 67 | argument = xstrdup(argv[optind + 1]); |
69 | strcpy(target_dir, argv[optind + 1]); | ||
70 | } | 68 | } |
71 | break; | 69 | break; |
70 | case (extract_field): | ||
71 | /* argument is a control field name */ | ||
72 | if ((optind + 1) != argc) { | ||
73 | argument = xstrdup(argv[optind + 1]); | ||
74 | } | ||
75 | break; | ||
76 | case (extract_info): | ||
77 | /* argument is a control field name */ | ||
78 | if ((optind + 1) != argc) { | ||
79 | argument = xstrdup(argv[optind + 1]); | ||
80 | break; | ||
81 | } else { | ||
82 | error_msg("-I currently requires a filename to be specifies"); | ||
83 | return(EXIT_FAILURE); | ||
84 | } | ||
85 | /* argument is a filename */ | ||
72 | default: | 86 | default: |
73 | target_dir = NULL; | ||
74 | } | 87 | } |
75 | 88 | ||
76 | deb_extract(argv[optind], optflag, target_dir); | 89 | deb_extract(argv[optind], optflag, argument); |
77 | /* else if (optflag & dpkg_deb_info) { | 90 | |
78 | extract_flag = TRUE; | ||
79 | extract_to_stdout = TRUE; | ||
80 | strcpy(ar_filename, "control.tar.gz"); | ||
81 | extract_list = argv+optind+1; | ||
82 | printf("list one is [%s]\n",extract_list[0]); | ||
83 | } | ||
84 | */ | ||
85 | return(EXIT_SUCCESS); | 91 | return(EXIT_SUCCESS); |
86 | } | 92 | } |