/***********************************************************
"lnpfx.exe" main script
【2005/11/18 更新】
引数に指定された文字列を標準入力から取得したテキストの
各行頭に追加、または各行頭から削除するコンソール・アプリ
引数
p1: 各行頭に追加または削除する文字列
(必ず""で囲む。)
("を指定するのは不可)
オプション
(なし): p1に指定された文字列を行頭に追加
/r: p1に指定された文字列を行頭から削除
使用上の注意
出力されるテキストの改行コードは自動的にCRLF形式
に変換されます。
同梱の実行ファイルは[実行ファイル自動作成]で作りました。
***********************************************************/
/******************************/
/* 実行ファイル作成オプション */
/******************************/
#packopt name "lnpfx"
#runtime "hsp3cl"
/******************/
/* 定数マクロなど */
/******************/
#define PREFIX_REMOVE "r"
/******************/
/* 汎用モジュール */
/******************/
#include "gm_stdio.hsp"
#include "gm_crlf.hsp"
#include "gm_record_str.hsp"
#include "gm_cmdline.hsp"
#include "gm_quote.hsp"
#include "gm_rm_fix.hsp"
/**************/
/* メイン処理 */
/**************/
/* 処理対象データを取得 */
if is_stdin_redirected() { // 標準入力がリダイレクトされている
; input buf,,0
/*
input命令を使うと受け取るデータが大きいとき
システムエラー(error 1)が発生して落ちる。
bufのサイズを十分に確保していてもダメ。
*/
input2 buf
}
else {
end // 標準入力がリダイレクトされていなければ終了
}
conv_crlf buf,TYPE_CRLF // 改行コードをCRLFに変換
/* 引数とオプションに従ってデータを加工 */
i = 0
p1 = getarg(i)
rmquot p1,TYPE_DQUOTE
if p1="" {
goto *@f // 引数が指定されていなければそのまま出力して終了
}
notesel buf
repeat notemax
noteget linestr,cnt
if chkopt(PREFIX_REMOVE) {
rm_prefix linestr,p1
}
else {
linestr = p1+linestr
}
noteadd linestr,cnt,1
loop
*@
/* 出力 */
mes2 buf
end
|