home *** CD-ROM | disk | FTP | other *** search
- #include<stdio.h>
- #include<stdlib.h>
- #include<ctype.h>
- #include<string.h>
- #include <proto/FileID.h>
- #include <proto/dos.h>
- #include <proto/exec.h>
-
-
-
- main(int argc, char **argv)
- {
- char version[]="$VER: ZIPCHECK/STRIP V1.0 ©1996 Joe Cool Date: 28.01.1996\n";
- struct FI_FileInfo *MyFileInfo=NULL;
- struct FileIDBase *FileIDBase=NULL;
- char buffer[300],
- buffer2[300],
- path[256],
- *filename=NULL,
- **main_strip=NULL,
- **main_ziptemp=NULL;
- BOOL file_ok=FALSE,
- strip=FALSE;
- BPTR readfh=NULL,
- lock=NULL,
- output=NULL;
- long pos=0,
- pos1=0,
- len=0,
- stripped=0,
- merk=0,
- error=0;
-
- printf ("\nZIPCHECK/STRIP V1.0 ©1996 Joe Cool\n");
- lock = GetProgramDir();
- NameFromLock(lock, path, 200);
-
-
- if(!(FileIDBase = (struct FileIDBase *)OpenLibrary("FileID.library",6L)))
- {
- printf ("Couldn`t open FileID.library\n");
- exit (RETURN_FAIL);
- }
- if(!(MyFileInfo = (struct FI_FileInfo *)FIAllocFileInfo()))
- {
- printf ("Can't allocate FI_FileInfo!\n");
- exit (RETURN_FAIL);
- }
- if (argc==1)
- {
- printf("Usage: ZIPStrip <zip-Archive>\n\n");
- exit (RETURN_FAIL);
- }
-
- if(FIIdentifyFromName((struct FI_FileInfo *)MyFileInfo,argv[1]))
- {
- printf("\"%s\" is does not exist!\n\n",argv[1]);
- exit (RETURN_FAIL);
- }
-
- if (MyFileInfo->FI_ID!=74)
- {
- printf("Not a ZIP-Archive!\n\n");
- exit (RETURN_FAIL);
- }
- filename=strrchr(argv[1],'/');
- if (filename)
- {
- filename++;
- printf("Processing file: %s\n",filename);
- }
- else printf ("Processing file: %s\n",argv[1]);
-
- printf("Testing File.....\n");
-
- sprintf(buffer,"unzip -tqq %s >nil:",argv[1]);
- error = SystemTagList(buffer, NULL);
-
- if (error==0)
- {
- file_ok=TRUE;
- }
- else
- {
- file_ok=FALSE;
- }
-
- if (file_ok)
- {
- printf("ACDone!\n");
-
-
- printf("Adding comment...\n");
- readfh=Open("NIL:",MODE_NEWFILE);
- if (path[strlen(path)-1]==':')
- sprintf (buffer,"ZIP -z %s <\"%szipstrip.comment.add\"",argv[1],path);
- else
- sprintf (buffer,"ZIP -z %s <\"%s/zipstrip.comment.add\"",argv[1],path);
-
- Execute (buffer,NULL,readfh);
- Close (readfh);
-
- printf("ACDone!\n");
- printf("Stripping Files..\n");
-
- readfh=Open("t:zip.temp",MODE_NEWFILE);
- sprintf (buffer,"unzip -lqq \"%s\"",argv[1]);
- Execute (buffer,NULL,readfh);
- Close (readfh);
-
- lock = GetProgramDir();
- NameFromLock(lock, buffer, 200);
- if (buffer[strlen(buffer)-1]==':')
- sprintf(buffer2,"%szipstrip.list",buffer);
- else
- sprintf(buffer2,"%s/zipstrip.list",buffer);
- readfh=Open(buffer2,MODE_OLDFILE);
-
-
- for (pos=0;FGets(readfh,buffer,200);pos++)
- {
- main_strip=(char **) realloc(main_strip,(pos+1)*sizeof(char *));
- main_strip[pos]=NULL;
- len=strlen(buffer);
- main_strip[pos]=(char *) malloc ((len+1)*sizeof(char));
- if (main_strip[pos]!=NULL)
- strcpy(main_strip[pos],buffer);
- }
- Close(readfh);
- main_strip=(char **) realloc(main_strip,(pos+1)*sizeof(char *));
- main_strip[pos]=NULL;
-
-
- readfh=Open("t:zip.temp",MODE_OLDFILE);
-
-
-
- for (pos=0;FGets(readfh,buffer,300);pos++)
- {
- main_ziptemp=(char **) realloc(main_ziptemp,(pos+1)*sizeof(char *));
- main_ziptemp[pos]=NULL;
- len=strlen(buffer);
- main_ziptemp[pos]=(char *) malloc ((len+1)*sizeof(char));
- if (main_ziptemp[pos]!=NULL)
- strcpy(main_ziptemp[pos],buffer);
- }
- Close(readfh);
- main_ziptemp=(char **) realloc(main_ziptemp,(pos+1)*sizeof(char *));
- main_ziptemp[pos]=NULL;
-
-
-
- for (pos=0;main_ziptemp[pos]!=NULL;pos++ )
- {
- strip=FALSE;
- for (pos1=0;main_strip[pos1]!=NULL;pos1++)
- {
- if (strstr(main_ziptemp[pos],main_strip[pos1]))
- {
- strip=TRUE;
- merk=pos1;
- }
- }
- if (strip)
- {
- strcpy(buffer2,main_strip[merk]);
- buffer2[strlen(buffer2)-1]='\0';
- sprintf (buffer,"zip -d \"%s\" \"%s\"",argv[1],buffer2);
- readfh=Open("NIL:",MODE_OLDFILE);
- Execute (buffer,NULL,readfh);
- Close(readfh);
- stripped++;
- strip=FALSE;
- }
-
- }
- printf ("AC%d stripped!\n",stripped);
-
-
-
-
-
-
-
- }
-
-
-
-
- if (file_ok) printf("\nFile is OK!\n");
- else
- {
- printf("\nFile is corrupt!\n");
- exit (0);
- }
-
- if(MyFileInfo) FIFreeFileInfo((struct FI_FileInfo *)MyFileInfo);
- if(FileIDBase) CloseLibrary((struct Library *)FileIDBase);
-
-
-
- }
-