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: }