aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
Diffstat (limited to 'archival')
-rw-r--r--archival/dpkg_deb.c48
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
21extern int dpkg_deb_main(int argc, char **argv) 21extern 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}