X-Git-Url: http://git.osdn.net/view?p=chnosproject%2FCHNOSProject.git;a=blobdiff_plain;f=CHNOSProject%2Fc2wiki%2Fc2wiki%2Fmain.c;h=8de35448358d860663cbfb6d2e89e4778c5600ae;hp=f4cba725b2d87d06f457afd941031171aede9bdb;hb=7a28226a9c530061e476e59c15ce6df725432960;hpb=1596f48601bac2f8d6bc0440ff33228c85aee660 diff --git a/CHNOSProject/c2wiki/c2wiki/main.c b/CHNOSProject/c2wiki/c2wiki/main.c index f4cba72..8de3544 100644 --- a/CHNOSProject/c2wiki/c2wiki/main.c +++ b/CHNOSProject/c2wiki/c2wiki/main.c @@ -7,15 +7,20 @@ // #include +#include #include "chnlib.h" int main(int argc, const char * argv[]) { - FILE *fp; + FILE *fp, *outfile; CHNLIB_String *line; CHNLIB_UIPArray *root, *wordlist; + int files; int i, i_max; int level, recording; + time_t now; + struct tm *pnow; + char s[1024]; CHNLIB_Environment_SetCurrentWorkingDirectory(argv[0]); @@ -24,63 +29,73 @@ int main(int argc, const char * argv[]) return 0; } - fp = fopen(argv[1], "rb"); - if(fp == NULL){ - printf("fopen error. Abort.\n"); - return 1; - } - + //解析用リストの初期化 wordlist = CHNLIB_UIPArray_Initialize(); CHNLIB_UIPArray_AppendLast(&wordlist, 1, CHNLIB_String_Initialize("{")); CHNLIB_UIPArray_AppendLast(&wordlist, 2, CHNLIB_String_Initialize("}")); CHNLIB_UIPArray_AppendLast(&wordlist, 3, CHNLIB_String_Initialize("//")); - root = CHNLIB_UIPArray_Initialize(); - for(;;){ - line = CHNLIB_ReadLine(fp); - if(line == NULL){ - break; - } - CHNLIB_UIPArray_GetSeparatedStringByUIPArray(&root, wordlist, line); - } + outfile = fopen("out.txt", "wb"); - fclose(fp); + now = time(NULL); + pnow = localtime(&now); + strftime(s, sizeof(s), "-%G/%m/%d %T 現在\n", pnow); + fputs(s, outfile); - i_max = CHNLIB_UIPArray_GetNumberOfDatas(root); - fp = fopen("out.txt", "wb"); - - recording = False; - level = 0; - for(i = 0; i < i_max; i++){ - switch(CHNLIB_UIPArray_GetData32ByIndex(root, i)){ - case 1: //"{" - if(level == 0){ - fprintf(fp, "***%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i - 1))); - recording = True; - } else if(recording){ - recording = False; - fprintf(fp, "\n"); - } - level++; - break; - case 2: //"}" - if(recording){ - recording = False; - fprintf(fp, "\n"); + for(files = 1; files < argc; files++){ + fp = fopen(argv[files], "rb"); + if(fp != NULL){ + //ファイルの読み込み + fprintf(outfile, "**%s\n", CHNLIB_Environment_GetFilenameFromPath(argv[files])); + root = CHNLIB_UIPArray_Initialize(); + for(;;){ + line = CHNLIB_ReadLine(fp); + if(line == NULL){ + break; } - level--; - break; - case 3: //"//" - if(recording){ - i++; - fprintf(fp, "%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i))); + CHNLIB_UIPArray_GetSeparatedStringByUIPArray(&root, wordlist, line); + } + fclose(fp); + + i_max = CHNLIB_UIPArray_GetNumberOfDatas(root); + recording = False; + level = 0; + for(i = 0; i < i_max; i++){ + switch(CHNLIB_UIPArray_GetData32ByIndex(root, i)){ + case 1: //"{" + if(level == 0){ + fprintf(outfile, "***%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i - 1))); + recording = True; + } else if(recording){ + recording = False; + fprintf(outfile, "\n"); + } + level++; + break; + case 2: //"}" + if(recording){ + recording = False; + fprintf(outfile, "\n"); + } + level--; + break; + case 3: //"//" + if(recording){ + i++; + fprintf(outfile, "%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i))); + } + break; } - break; + } + + CHNLIB_UIPArray_FreeSelectedAll(&root); + } else{ + printf("Can't open file [%s].\n", argv[files]); } } - fflush(fp); - fclose(fp); + fclose(outfile); + return 0; }