2020-09-30 17:12:29 +02:00

194 lines
3.7 KiB
C

#include "wstune.h"
#define WSTUNEVER "0.3"
#define COMMAND_LINE_LEN 128
#define FILE_NAME_LEN 40
#define FAKE_IT 1
#define ERR fprintf(stderr
VOID wsTuneUsage(VOID);
CHAR *szProgname; /* so all parts of the program will know the name */
INT nMode;
/* main()
*
* parses command line args
*/
INT _CRTAPI1 main(INT argc,CHAR **argv)
{
CHAR szBaseName[24];
CHAR szFileWSP[24];
CHAR szFileWSR[24];
CHAR szFileTMI[24];
CHAR szFileDAT[24];
CHAR szVar[24];
CHAR szTemp[24];
CHAR *szNull;
CHAR *vargv[8];
BOOL fVerbose = FALSE;
BOOL fOutPut = FALSE;
BOOL fNoReduce = FALSE;
BOOL fNoDump = TRUE;
INT cArgCnt = 0;
ConvertAppToOem( argc, argv );
szProgname = *argv; // argv will soon be clobbered
nMode = 0; // default flags set
while (--argc && (**(++argv) == '-' || **argv=='/'))
{
while(*(++(*argv))) switch (**argv)
{
case '?':
wsTuneUsage();
break;
case 'f':
case 'F':
nMode |= FAKE_IT;
break;
case 'V':
case 'v':
fVerbose = TRUE;
break;
case 'O':
case 'o':
fOutPut = TRUE;
break;
case 'N':
case 'n':
fNoDump = FALSE;
break;
case 'D':
case 'd':
fNoReduce = TRUE;
break;
default: ERR,"%s: Unrecognized switch: %c\n",
szProgname,**argv);
return(-1);
}
}
/* any files */
if (argc <1)
{
wsTuneUsage();
return(-1);
}
/* now we go to work -- walk through the file names on the command line */
while (argc--)
{
strcpy (szBaseName, *(argv++));
printf("%s: using \042%s\042\n",szProgname,szBaseName);
if (szNull = strchr(szBaseName, '.')) {
*szNull = '\0';
}
/* WSREDUCE file.WSP */
sprintf(szTemp, "wsReduce");
vargv[0] = szTemp;
sprintf(szFileWSP, "%s.WSP", szBaseName);
vargv[1] = szFileWSP;
if (!(nMode & FAKE_IT)){
if(!fNoReduce){
if ((wsReduceMain(2, vargv))!=NO_ERROR){
ERR,"Unable to call wsreduce for %s\n", vargv[1]);
return(FALSE);
}
}
}
if(fNoDump){
/* WSPDUMP /V /Ffile.WSP /Tfile.TMI /Rfile.WSR > file.DT */
sprintf(szTemp,"%s", "wspDump");
sprintf(szVar, "%s", "/V");
sprintf(szFileWSP, "/F%s.WSP", szBaseName);
sprintf(szFileTMI, "/T%s.TMI", szBaseName);
sprintf(szFileWSR, "/R%s.WSR", szBaseName);
cArgCnt = 5;
if (fOutPut) {
sprintf(szFileDAT, "/D%s.DT", szBaseName);
vargv[5] = szFileDAT;
cArgCnt = 6;
}
vargv[0] = szTemp;
vargv[1] = szVar;
vargv[2] = szFileWSP;
vargv[3] = szFileTMI;
vargv[4] = szFileWSR;
if(!(nMode & FAKE_IT)){
if ((wspDumpMain (cArgCnt, vargv))!=NO_ERROR) {
ERR,"Unable to dump random data\n");
return(FALSE);
}
}
/* wspdump /Ffile.wsp /Tfile.tmi > file.DN */
vargv[1] = szFileWSP;
vargv[2] = szFileTMI;
cArgCnt = 3;
if (fOutPut) {
sprintf(szFileDAT, "/D%s.DN", szBaseName);
vargv[3] = szFileDAT;
cArgCnt = 4;
}
vargv[4] = NULL;
vargv[5] = NULL;
if (!(nMode & FAKE_IT)){
if ((wspDumpMain(cArgCnt, vargv))!=NO_ERROR ){
ERR,"Unable to dump sequential data\n");
return(FALSE);
}
}
}
}
}
/*
*
* VOID wsTuneUsage (VOID)
*
*
* Effects:
*
* Prints out usage message, and exits with an error.
*
* Returns:
*
* Exits with ERROR.
*/
VOID wsTuneUsage(VOID)
{
fprintf(stdout,"\nUsage: %s [/O] [/D] [/N] [?] moduleName.WSP\n", szProgname);
fprintf(stdout," /O Dump analysis data to file (*.DT tuned *.DN not tuned)\n");
fprintf(stdout," /D Dump analysis data only\n");
fprintf(stdout," /N Analyize bitstring data, don't dump any data\n");
fprintf(stdout," /? Causes this usage message to be displayed.\n");
exit(ERROR);
}