Applied patch from David Douthitt to fix build error in df.c when
[oweals/busybox.git] / dpkg_deb.c
index 32ef4ca75ca1c66bd2bfdd2eef446825e3f19066..c0843818915451ac87bbb6910081fd55ea86c078 100644 (file)
@@ -42,11 +42,12 @@ extern int tar_unzip_init(int tarFd);
 extern int readTarFile(int tarFd, int extractFlag, int listFlag, 
        int tostdoutFlag, int verboseFlag, char** extractList, char** excludeList);
 
-const int dpkg_deb_contents = 1;
-const int dpkg_deb_control = 2;
+static const int dpkg_deb_contents = 1;
+static const int dpkg_deb_control = 2;
 //     const int dpkg_deb_info = 4;
-const int dpkg_deb_extract = 8;
-const int dpkg_deb_verbose_extract = 16;
+static const int dpkg_deb_extract = 8;
+static const int dpkg_deb_verbose_extract = 16;
+static const int dpkg_deb_list = 32;
 
 extern int deb_extract(int optflags, const char *dir_name, const char *deb_filename)
 {
@@ -65,6 +66,10 @@ extern int deb_extract(int optflags, const char *dir_name, const char *deb_filen
                verbose_flag = TRUE;
                list_flag = TRUE;
        }
+       if (dpkg_deb_list == (dpkg_deb_list & optflags)) {
+               strcpy(ar_filename, "data.tar.gz");
+               list_flag = TRUE;
+       }
        if (dpkg_deb_control == (dpkg_deb_control & optflags)) {
                strcpy(ar_filename, "control.tar.gz");  
                extract_flag = TRUE;
@@ -114,7 +119,7 @@ extern int dpkg_deb_main(int argc, char **argv)
        int opt = 0;
        int optflag = 0;        
        
-       while ((opt = getopt(argc, argv, "cexX")) != -1) {
+       while ((opt = getopt(argc, argv, "cexXl")) != -1) {
                switch (opt) {
                        case 'c':
                                optflag |= dpkg_deb_contents;
@@ -128,19 +133,20 @@ extern int dpkg_deb_main(int argc, char **argv)
                        case 'x':
                                optflag |= dpkg_deb_extract;
                                break;
+                       case 'l':
+                               optflag |= dpkg_deb_list;
+                               break;
 /*                     case 'I':
                                optflag |= dpkg_deb_info;
                                break;
 */
                        default:
-                               usage(dpkg_deb_usage);
-                               return EXIT_FAILURE;
+                               show_usage();
                }
        }
 
        if (((optind + 1 ) > argc) || (optflag == 0))  {
-               usage(dpkg_deb_usage);
-               return(EXIT_FAILURE);
+               show_usage();
        }
        if ((optflag & dpkg_deb_control) || (optflag & dpkg_deb_extract) || (optflag & dpkg_deb_verbose_extract)) {
                if ( (optind + 1) == argc ) {