This is smsPrint.c in view mode; [Download] [Up]
#include "../sms.h" #define USAGE "Usage: smsPrint [-t type-format][-i initial-time][-e end-time][-f first-trajectory][-l last-trajectory] <smsFile>" main (int argc, char *argv[]) { SMSHeader *pSmsHeader; char *pData; SMS_DATA smsData; int iError, i, j, iFormat = 1, iFirstFrame = 0, iLastFrame = -1, iFirstTraj = 0, iLastTraj = -1; float fInitialTime = 0, fEndTime = 0; for (i=1; i<argc-1; i++) { if (*(argv[i]++) == '-') { switch (*(argv[i]++)) { case 't': if (sscanf(argv[i],"%d", &iFormat) < 1) quit("Invalid format"); break; case 'i': if (sscanf(argv[i],"%f", &fInitialTime) < 0) quit("Invalid initialTime"); break; case 'e': if (sscanf(argv[i],"%f", &fEndTime) < 0) quit("Invalid EndTime"); break; case 'f': if (sscanf(argv[i],"%d", &iFirstTraj) < 0) quit("Invalid FirstTraj"); break; case 'l': if (sscanf(argv[i],"%d", &iLastTraj) < 0) quit("Invalid LastTraj"); break; default: quit(USAGE); } } } if (argc <= 1) quit(USAGE); if((iError = readSmsFile(argv[argc-1], &pSmsHeader)) < 0) { if(iError == SMS_NOPEN) quit("cannot open file"); if(iError == SMS_RDERR) quit("read error"); if(iError == SMS_NSMS) quit("not an SMS file"); if(iError == SMS_MALLOC) quit("cannot allocate memory"); quit("error"); } pData = (char *) pSmsHeader + pSmsHeader->iHeadBSize; printf("HEADER INFORMATION:\n"); printf("Number of records = %d\n", pSmsHeader->nRecords); printf("Frame rate = %d\n", pSmsHeader->iFrameRate); printf("Number of trajectories = %d\n", pSmsHeader->nTrajectories); printf("Number of stochastic coefficients = %d\n", pSmsHeader->nStochasticCoeff); printf("Format = %d\n", pSmsHeader->iFormat); printf("Stochastic type = %d\n", pSmsHeader->iStochasticType); printf("Original sampling rate = %.0f\n", pSmsHeader->fOriginalSRate); if (pSmsHeader->nTextCharacters > 0) { printf("\nANALISIS ARGUMENTS:\n"); printf("%s\n", pSmsHeader->pChTextCharacters); } iFirstFrame = MIN (pSmsHeader->nRecords - 1, fInitialTime * pSmsHeader->iFrameRate); if (fEndTime > 0) iLastFrame = MIN (fEndTime * pSmsHeader->iFrameRate, pSmsHeader->nRecords); else iLastFrame = pSmsHeader->nRecords; if (iFirstTraj > 0) iFirstTraj = MIN (pSmsHeader->nTrajectories, iFirstTraj); if (iLastTraj >= 0) iLastTraj = MIN (pSmsHeader->nTrajectories, iLastTraj); else iLastTraj = pSmsHeader->nTrajectories; if (iFormat == 2) { printf("\n Fr. sec. "); for(j = iFirstTraj; j < iLastTraj; j++) printf("Traj %2d ", j); printf("\n"); } pData = pData + iFirstFrame * pSmsHeader->iRecordBSize; for(i = iFirstFrame; i < iLastFrame; i++) { setSmsRecord (pSmsHeader, pData, &smsData); printf("\n#%3d {%1.3f}: ", i, (float) i / pSmsHeader->iFrameRate); if (iFormat != 2) printf("\ndet: "); if (iFormat != 3 && (pSmsHeader->iFormat == FORMAT_HARMONIC || pSmsHeader->iFormat == FORMAT_INHARMONIC)) for(j = iFirstTraj; j < iLastTraj; j++) printf("%5.0f[%2.0f] ", smsData.pFFreqTraj[j], smsData.pFMagTraj[j]); else for(j = iFirstTraj; j < iLastTraj; j++) printf("%.0f[%.0f, %.0f] ", smsData.pFFreqTraj[j], smsData.pFMagTraj[j], smsData.pFPhaTraj[j]); if (iFormat != 2 && pSmsHeader->iStochasticType != STOC_NONE) { printf("\n"); printf("stocg: %.0f\n", *(smsData.pFStocGain)); printf("stocc: "); for(j = 0; j < smsData.nCoeff; j++) printf("%1.3f ", smsData.pFStocCoeff[j]); } pData += pSmsHeader->iRecordBSize; } exit(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.