MUSASHI C source: xtmkheader.c


0001: /*============================================================================*/ 
0002: /* 変更履歴                                                                   */ 
0003: /*----------------------------------------------------------------------------*/ 
0004: /* 1.0 : 新しいAPIに対応                                                      */ 
0005: /*============================================================================*/ 
0006: #include <musashi.h
0007: #include <stdlib.h> 
0008:  
0009: #include <xtmkheaderHelp.h> 
0010: struct mssComHelp comHelp={ 
0011:   "xtmkheader",   /* コマンド名       */                                     
0012:   "1.0",          /* バージョン       */ 
0013:   HELPT,          /* コマンドタイトル */ 
0014:   HELPS,          /* 要約             */ 
0015:   HELPE,          /* 利用例           */ 
0016:   HELPR,          /* 参照コマンド     */ 
0017:   HELPA,          /* 作者情報         */ 
0018:   HELPB,          /* バグレポート情報 */                                       
0019:   HELPH           /* ホームページ     */ 
0020: }; 
0021:  
0022: extern struct mssGlobalVariables mssGV; 
0023:  
0024: int main(int argc, char *argv[]){ 
0025: /*============================================================================*/ 
0026: /* オプション宣言&定義                                                       */ 
0027: /*============================================================================*/ 
0028: /*----------------------------------------------------------------------------*/ 
0029: /* 新項目名                                                                   */ 
0030: /*----------------------------------------------------------------------------*/ 
0031:   MssOptSLS optFNM={ 
0032:     OSLS,   /* オプションタイプ                                             */ 
0033:     "a",    /* キーワード(複数文字は不可)                                   */ 
0034:     0,      /* 0:オプション, 1:必須, 2:XMLtableでのみ必須(txtでは無視)      */ 
0035:     NULL,   /* デフォルト(文字列)                                           */ 
0036:     MssFieldMaxCnt, /* カンマで区切られる要素数の最大値                     */ 
0037:     1,      /* 各要素の文字列長の最小値                                     */ 
0038:     MssFieldNameMaxLen,/* 各要素の文字列長の最大値                          */ 
0039:     0,      /* 1:要素にコロンを指定できる,0:不可  ex) aaaa:xxxxx            */ 
0040:     FNMT,   /* このオプションのタイトル(Helpで表示)                         */ 
0041:     FNMC    /* このオプションのコメント(Helpで表示)                         */ 
0042:   }; 
0043:  
0044: /*----------------------------------------------------------------------------*/ 
0045: /* タイトル                                                                   */ 
0046: /*----------------------------------------------------------------------------*/ 
0047:   MssOptSTR optTIT={ 
0048:     OSTR,   /* オプションタイプ                                             */ 
0049:     "l",    /* キーワード(複数文字は不可)                                   */ 
0050:     0,      /* 0:オプション, 1:必須, 2:XMLtableでのみ必須(txtでは無視)      */ 
0051:     NULL,   /* デフォルト                                                   */ 
0052:     0,      /* 文字列の最小長                                               */ 
0053:     MssTitleMaxLen,/* 文字列の最大長                                        */ 
0054:     TITT,   /* このオプションのタイトル(Helpで表示)                         */ 
0055:     TITC    /* このオプションのコメント(Helpで表示)                         */ 
0056:   }; 
0057:  
0058: /*----------------------------------------------------------------------------*/ 
0059: /* コメント                                                                   */ 
0060: /*----------------------------------------------------------------------------*/ 
0061:   MssOptSTR optCOM={ 
0062:     OSTR,   /* オプションタイプ                                             */ 
0063:     "c",    /* キーワード(複数文字は不可)                                   */ 
0064:     0,      /* 0:オプション, 1:必須, 2:XMLtableでのみ必須(txtでは無視)      */ 
0065:     NULL,   /* デフォルト                                                   */ 
0066:     0,      /* 文字列の最小長                                               */ 
0067:     MssCommentMaxLen,/* 文字列の最大長                                      */ 
0068:     COMT,   /* このオプションのタイトル(Helpで表示)                         */ 
0069:     COMC    /* このオプションのコメント(Helpで表示)                         */ 
0070:   }; 
0071:  
0072: /*----------------------------------------------------------------------------*/ 
0073: /* 出力ファイル                                                               */ 
0074: /*----------------------------------------------------------------------------*/ 
0075:   MssOptOTF optOTF={ 
0076:     OOTF,   /* オプションタイプ                                             */ 
0077:     "o",    /* キーワード(複数文字は不可)                                   */ 
0078:     0,      /* 0:オプション, 1:必須                                         */ 
0079:     OTFT,   /* このオプションのタイトル(Helpで表示)                         */ 
0080:     OTFC    /* このオプションのコメント(Helpで表示)                         */ 
0081:   }; 
0082:  
0083: /*----------------------------------------------------------------------------*/ 
0084: /* 圧縮出力                                                                   */ 
0085: /*----------------------------------------------------------------------------*/ 
0086:   MssOptFLG optZIP={ 
0087:     OFLG,   /* オプションタイプ                                             */ 
0088:     "z",    /* キーワード(複数文字は不可)                                   */ 
0089:     0,      /* デフォルト(基本的には0) 常にonにしたいときは1にする          */ 
0090:     ZIPT,   /* このオプションのタイトル(Helpで表示)                         */ 
0091:     ZIPC    /* このオプションのコメント(Helpで表示)                         */ 
0092:   }; 
0093:  
0094: /*----------------------------------------------------------------------------*/ 
0095: /* オプションをまとめる                                                       */ 
0096: /*----------------------------------------------------------------------------*/ 
0097:   void *opt[]={&optFNM,&optTIT,&optCOM,&optOTF,&optZIP,NULL}; 
0098:  
0099: /*============================================================================*/ 
0100: /* 変数宣言&定義                                                             */ 
0101: /*============================================================================*/ 
0102:   struct mssHeader *hdo; /*出力ファイル用<head>タグ格納構造体*/ 
0103:   struct mssFPW    *fpw; /*出力ファイル構造体*/ 
0104:  
0105: /*----------------------------------------------------------------------------*/ 
0106: /* 前処理                                                                     */ 
0107: /*----------------------------------------------------------------------------*/ 
0108:   mssInit(argc,argv,&comHelp);       /* シグナル処理などの初期化              */ 
0109:   mssHelpDoc(opt,&comHelp,argc,argv);/* ヘルプ                                */ 
0110:   mssSetOption(opt,argc,argv);       /* コマンドオプションの設定              */ 
0111:  
0112: /*----------------------------------------------------------------------------*/ 
0113: /*出力ヘッダーの作成と出力                                                    */ 
0114: /*----------------------------------------------------------------------------*/ 
0115:   /*出力ヘッダーの初期化*/ 
0116:   hdo=mssInitSetHeader(optTIT.str,optCOM.str,MssXmlDefVer,MssXmlDefEnc,MssXtDefVer); 
0117:  
0118:   /*新項目名の追加*/ 
0119:   mssAddFieldsByStrList(hdo->flds,optFNM.strList,optFNM.cnt); 
0120:  
0121:   /*標準出力オープン+ヘッダーの出力*/ 
0122:   fpw=mssOpenFPW(optOTF.str,optZIP.set,0); 
0123:   mssWriteHeader(hdo, fpw); 
0124:  
0125: /*----------------------------------------------------------------------------*/ 
0126: /*メインルーチン                                                              */ 
0127: /*----------------------------------------------------------------------------*/ 
0128:  
0129: /*----------------------------------------------------------------------------*/ 
0130: /*フッター出力&終了処理                                                       */ 
0131: /*----------------------------------------------------------------------------*/ 
0132:   mssWriteFooter(fpw);    /* フッターの出力             */ 
0133:   mssCloseFPW(fpw);       /* 出力ファイルのクローズ     */ 
0134:   mssFreeHeader(hdo);     /* 出力ヘッダ領域開放         */ 
0135:   mssFreeOption(opt);     /* オプション領域開放         */ 
0136:   mssShowEndMsg();        /* 完了メッセージ             */ 
0137:   mssEnd(mssExitSuccess); /* 終了                       */ 
0138:   return(0);              /* to avoid warning message   */ 
0139: }