home *** CD-ROM | disk | FTP | other *** search
/ ftp.rarlab.com / 2014.05.ftp.rarlab.com.tar / ftp.rarlab.com / rar / sunrar.zip / list.c < prev    next >
Text File  |  1998-07-01  |  4KB  |  131 lines

  1. void ListArchive(void)
  2. {
  3.   unsigned long TotalPackSize,TotalUnpSize,FileCount,ArchivesCount;
  4.   unsigned long SumPackSize,SumUnpSize,SumFileCount;
  5.   int I,OutHeader;
  6.   ArchivesCount=SumPackSize=SumUnpSize=SumFileCount=0;
  7.   while (ReadArcName())
  8.   {
  9.     if ((ArcPtr=wopen(ArcName,READBINARY,M_DENYWRITE))==NULL)
  10.       continue;
  11.     while (1)
  12.     {
  13.       TotalPackSize=TotalUnpSize=FileCount=0;
  14.       if (IsArchive())
  15.       {
  16.         OutHeader=0;
  17.         ViewComment();
  18.         tseek(ArcPtr,NewMhd.HeadSize-MainHeadSize,SEEK_CUR);
  19.         mprintf("\n");
  20.         if (SolidType)
  21.           mprintf(MListSolid);
  22.         if (SFXLen>0)
  23.           mprintf(MListSFX);
  24.         if (ArcType==VOL)
  25.           if (SolidType)
  26.             mprintf(MListVol1);
  27.           else
  28.             mprintf(MListVol2);
  29.         else
  30.           if (SolidType)
  31.             mprintf(MListArc1);
  32.           else
  33.             mprintf(MListArc2);
  34.         mprintf(" %s\n",ArcName);
  35.         while(ReadBlock(FILE_HEAD) > 0)
  36.         {
  37.           if (IsProcessFile(NOT_COMPARE_PATH))
  38.           {
  39.             if (!OutHeader)
  40.             {
  41.               if (MainCommand[0]=='V')
  42.                 mprintf(MListPathComm);
  43.               else
  44.                 mprintf(MListName);
  45.               mprintf(MListTitle);
  46.               for (I=0;I<79;I++)
  47.                 mprintf("-");
  48.               OutHeader=1;
  49.             }
  50.  
  51.             mprintf("\n%c",(NewLhd.Flags & LHD_PASSWORD) ? '*' : ' ');
  52.             if (MainCommand[0]=='V' || strlen(PointToName(ArcFileName))>=13)
  53.             {
  54.               mprintf("%s",ArcFileName);
  55.               ViewFileComment();
  56.               mprintf("\n%12s ","");
  57.             }
  58.             else
  59.               mprintf("%-12s",PointToName(ArcFileName));
  60.  
  61.             mprintf(" %8lu %8lu ",NewLhd.UnpSize,NewLhd.PackSize);
  62.  
  63.             if ((NewLhd.Flags & LHD_SPLIT_BEFORE) && (NewLhd.Flags & LHD_SPLIT_AFTER))
  64.               mprintf(" <->");
  65.             else
  66.               if (NewLhd.Flags & LHD_SPLIT_BEFORE)
  67.                 mprintf(" <--");
  68.               else
  69.                 if (NewLhd.Flags & LHD_SPLIT_AFTER)
  70.                   mprintf(" -->");
  71.                 else
  72.                   mprintf("%3d%%",ToPercent(NewLhd.PackSize,NewLhd.UnpSize));
  73.  
  74.             ConvertDate(NewLhd.FileTime);
  75.             mprintf(" %2.2s-%2.2s-%2.2s %2.2s:%2.2s ",
  76.                     DateStr,DateStr+2,DateStr+4,DateStr+6,DateStr+8);
  77.  
  78.             ShowAttr();
  79.  
  80.             mprintf(" %8.8lX",NewLhd.FileCRC);
  81.             mprintf(" m%d",NewLhd.Method-0x30);
  82.             if ((NewLhd.Flags & LHD_WINDOWMASK)<=4*32)
  83.               mprintf("%c",((NewLhd.Flags&LHD_WINDOWMASK)>>5)+'a');
  84.             else
  85.               mprintf(" ");
  86.             mprintf(" %d.%d",NewLhd.UnpVer/10,NewLhd.UnpVer%10);
  87.  
  88.             if (!(NewLhd.Flags & LHD_SPLIT_BEFORE))
  89.             {
  90.               TotalUnpSize+=NewLhd.UnpSize;
  91.               FileCount++;
  92.             }
  93.             TotalPackSize+=NewLhd.PackSize;
  94.           }
  95.           tseek(ArcPtr,NextBlockPos,SEEK_SET);
  96.         }
  97.         if (OutHeader)
  98.         {
  99.           mprintf("\n");
  100.           for (I=0;I<79;I++)
  101.             mprintf("-");
  102.           mprintf("\n%5lu %16lu %8lu %3d%%\n",FileCount,TotalUnpSize,
  103.                   TotalPackSize,ToPercent(TotalPackSize,TotalUnpSize));
  104.           SumFileCount+=FileCount;
  105.           SumUnpSize+=TotalUnpSize;
  106.           SumPackSize+=TotalPackSize;
  107.         }
  108.         else
  109.           mprintf(MListNoFiles);
  110.  
  111.         ArchivesCount++;
  112.  
  113.         if (Opt.PackVolume && (NewLhd.Flags & LHD_SPLIT_AFTER) && MergeArchive(0))
  114.           tseek(ArcPtr,0,SEEK_SET);
  115.         else
  116.           break;
  117.       }
  118.       else
  119.       {
  120.         if (TotalArcCount<2)
  121.           mprintf(MNotRAR,ArcName);
  122.         break;
  123.       }
  124.     }
  125.     tclose(ArcPtr);
  126.   }
  127.   if (ArchivesCount>1)
  128.     mprintf("\n%5lu %16lu %8lu %3d%%\n",SumFileCount,SumUnpSize,
  129.             SumPackSize,ToPercent(SumPackSize,SumUnpSize));
  130. }
  131.