/*---------------------------------*//* Expand Zip File - Module        *//* Link this with rest.            *//*                                 *//* Ivo van Poorten, May 1993.      *//*---------------------------------*/#include STDIO.H#define defdrive "D1:"/*---------------------------------*//* ZIP LAYOUT Declarations         *//* No 'typedef struct'-format      *//* because Lightspeed C does not   *//* support that.                   *//*---------------------------------*/extern int siglw,sighw;/* Local_file_header */extern int vneed1,gpb1,cmeth1,ltime1,ldate1;extern int crc1lw,crc1hw;      /* longint */extern int csize1lw,csize1hw;  /* longint */ extern int usize1lw,usize1hw;  /* longint */extern int namelen1,xtralen1;/* Central_directory_file_header */extern int vmb,vneed2,gpb2,cmeth2,ltime2,ldate2;extern int crc2lw,crc2hw;extern int csize2lw,csize2hw;extern int usize2lw,usize2hw;extern int namelen2,xtralen2,commlen1,nrstart;extern int inta;extern int extalw,extahw;extern int relof1lw,relof1hw;/* End_central_dir_record */extern int nrthis,nrdws,totaldt,totald;extern int sizdirlw,sizdirhw;extern int offscdlw,offscdhw;extern int commlen2;/* And a dummy string */extern char dummys[256];/*-----------------*//* Input Variables *//*-----------------*/extern FILE iocb;extern char zipfn[256];extern char command;/*------------------*//* Output Variables *//*------------------*/extern char filename[256];/*---------------------------------*/skiprest(hoeveel)int hoeveel;$(int dum;  while(hoeveel>=256)  $(    dum=fread(dummys,1,256,iocb);    hoeveel-=256;  $)  if(hoeveel>0)    dum=fread(dummys,1,hoeveel,iocb);$)/*---------------------------------*/unreduce()$(  printf("Reduced --> skipping\n");  skiprest(csize1lw);$)explode()$(  printf("Imploded --> skipping\n");  skiprest(csize1lw);$)inflate()$(  printf("Deflated --> skipping\n");  skiprest(csize1lw);$)unknown()$(  printf("Unknown Compression Method\n");  skiprest(csize1lw);$)/*---------------------------------*//* Process local file header */prolfh()$(int i,nel;  nel=fread(&vneed1,1,26,iocb);  if(nel!=26)    return;  if(namelen1>0)    nel=fread(filename,1,namelen1,iocb);  if(xtralen1>0)    nel=fread(filename,1,xtralen1,iocb);  filename[namelen1]='\00';  printf("%12s ",filename);  strcpy(dummys,filename);  strcpy(filename,defdrive);  strcat(filename,dummys);  switch(cmeth1)  $(    case 0 :    $(      restore();      break;    $)    case 1 :    $(      unshrink();      break;    $)    case 2 :    case 3 :    case 4 :    case 5 :    $(      unreduce();      break;    $)    case 6 :      explode();      break;    case 8 :    $(      inflate();      break;    $)    default :    $(      unknown();      break;    $)  $)$)/*---------------------------------*/proheade()$(int len;  len=1;  while(len>=0)  $(    len=fread(&siglw,1,4,iocb);    if(len!=4)      return;    else    if((siglw==0x4B50) & (sighw==0x0403))      prolfh();    else    if((siglw==0x4B50) & (sighw==0x0201))      return;    else    if((siglw==0x4B50) & (sighw==0x0605))      return;    else    $(      printf("Error in ZipFile !\n");      return;    $)  $)$)/*---------------------------------*/expand()$(  iocb=fopen(zipfn,"r");  if(iocb<0)  $(    printf("Can't open %s\n",zipfn);    return;  $)  proheade();  close(iocb);$)/*---------------------------------*/