#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#define rOK 0
#define rNG -1
#define BUFFER_SIZE 1024
void makeOutfileName(char*, char*);
static char sccsid[] = "@(#)fixlog 1.0 2006/02/07";
int main(int argc, char* argv[])
{
FILE* fp;
FILE* fp2;
char buffer[BUFFER_SIZE];
char workbuf[BUFFER_SIZE];
char* wk_str;
char* wk_str2;
int wk_char;
char workFile[64];
int flg=0;
int chkflg=0;
long bkup;
if(argc > 2 ) {
printf("Usage : %s FixEngine logfile (..._FIX)\n", argv[0]);
printf(" : %s < FixEngine logfile (..._FIX)\n", argv[0]);
return(rNG);
}
if(argc == 2 && !strcmp(argv[1], "-h") ){
printf("Usage : %s FixEngine logfile (..._FIX)\n", argv[0]);
printf(" : %s < FixEngine logfile (..._FIX)\n", argv[0]);
return(rNG);
}
if(argc == 1){
fp = stdin;
} else{
if ( (fp = fopen(argv[1], "r")) == NULL ) {
printf("Error : %s open() failed.\n", argv[1]);
return(rNG);
}
}
if(argc == 1){
fp2 = stdout;
} else {
makeOutfileName(argv[1], workFile);
printf("output file : [%s]\n", workFile);
if ( (fp2 = fopen(workFile, "w")) == NULL ) {
printf("Error : %s open() failed.\n", workFile);
return(rNG);
}
}
while(fgets(buffer, BUFFER_SIZE, fp)){
if ( strstr(buffer, "-----------" ) ) {
fprintf(fp2, "\n%s", buffer);
continue;
}
if ( strstr(buffer, "DIRECTION" ) ) {
fputs(buffer, fp2);
continue;
}
if ( strstr(buffer, "DATA:" ) ) {
continue;
}
/*****************************************************************************
bufferの中身は、
0050: 30 36 30 32 30 35 2d 32 32 3a 33 32 3a 33 39 01 : 060205-22:32:39
こんな感じなので、
":" を2個とばして、そのあとの文字の先頭にポインタをもっていき、
行末の余白と改行を削除して、ファイルに出力する
*****************************************************************************/
wk_str=strchr(buffer, ':');
wk_str2=strchr(++wk_str, ':');
++wk_str2;
strcpy(workbuf, ++wk_str2);
wk_str=strchr(workbuf, '\n');
*wk_str=NULL;
/******************
if ( wk_str=strstr(workbuf, " ") ) {
*wk_str=NULL;
}
******************/
fputs(workbuf, fp2);
}
fclose(fp);
fclose(fp2);
}
void makeOutfileName(char* argv, char* workFile)
{
char* ptr;
if ( (ptr=strrchr(argv, '/')) != NULL ) {
strcpy(workFile, ++ptr);
} else {
strcpy(workFile, argv);
}
strcat(workFile, ".log");
return ;
}
最終更新:2007年07月19日 09:59