、第第 : : 信に等 : 既 . 等第 : 既島 : 信等第に第 : に : 物をを物等を既第 : 物 : 3 等第をををす Subject: xshisen 1.36 ( 1 / 2 ) Message-ID: く vr6zqa4n9xz.fsf@pppOOI.st.rim.or.」 p> 作者 . こばやしまさおきさん X11 ー E て新川乍するパズルゲームの最新版です。 Subject: dash 0.01 ( 1 / 1 ) Message-lD. く 4h15ni$550@vcpgw.vcp ・ cpg ・ sony. co. 作者岡田伸也さん 簡単なキー操作で、ディレクトリの移重丿、ファイル を対象とするコマンドを実行するプログラムです。 Subject: vwm 0.13 Message-ID. く 4h17r1$Isr@fse3.aist-nara.ac.jp> 作者 . 原ーさん メモリ使用量が少ないウインドウ・マネージャーです。 Subject: autoFo Ⅱ ow ー 960226 ー *. test article checker. Message-lD: く 4h1tgf$dio@pony.nomad fo 「 us. or. 」 p > 作者 . 原田功さん テスト用のニュースグループに投稿された記事の内容 をチェックし、結果を投稿するツールの最新版てす。 Subject: [FreeBSD] jp-file-l. 0 ( 1 / 1 ) Message-ID. く 4h3i6f$svi@nikko.utsunomiya-u.ac.」 p> 作者倪永茂さん FreeBSD 2. IR の file コマンドの日本語版です。 Subject: RATS vl. 05 to vl. 05a diff Message-ID. く 4h4d53$3g6@contrabass.cdc.dnp. CO. 作者黒江明彦さん テキストおよびバイナリファイルのアーカイノヾ RATS のバグ修正パッチです。 Subject: gn 1.34 ( 1 / 7 ) Message-lD. く DnKLp2.99A@gw.omronsoft.co.jp> 作者山下康成さん 多くの OS で同オ ) インターフェイスから利用できる、 NNTP 対応の軽い NetNews リーダー gn の最新版で す。 Subject: xbmkanji. sty (March-2-1996 version Message-ID. く 4h8i5r$k0e@kudpc.kudpc.kyoto-u.ac. 作者安岡孝ーさん 102 X の bdf ファイルや xbm ファイルを、日本語 I の外字として使うためのスタイルファイルの去 i, 版です。 Subject: cvs 」 apanese patch Message-lD. く KOMA. 96Mar3165602@pafu-pafu.osk . threewebnet. or. 」 p> イ乍者 N. Komazaki さん バージョン管理システム CVS で、扱う漢字コードを 綣ーするためのパッチです。 Subject: txt2ps [version 0.82 ] Message-ID: く HATAKEYA. 96Ma「3184722@ShiZuka. otsl.oki. co.jp> 作者畠山袢欠さん プレーンテキストに EPS ファイルを挿入して、 Post- Script ファイルに変換するツールの肄版です。 Subject: shellscript for Automatic EchO ー newsmil- lor. sh Message-ID: く 960304140532. M0115590 @marie. ii 」 net. or. 」 p> 作者松田浩平さん テスト用のニュースグループにキ齬高された記事に対し、 才高者にメールで自重加勺に返事を出すプログラムです。 Subject: Zaddin/Zlink vl 41 zaddin141. tar. gz ( 1 / 1 ) Message-lD: く 4hfaOt$mur@yama11.yz.yamagata-u. ac. 」 p> 作者小笠原博之さん シャープの ZAURUS のパソコンリンク機能を利用 し、 PC とのあいだでファイルを転送するプログラムで す。 Subject: Fep Bridge ver. 1.20 (part 1 of 2 ) Message-ID: く TAMY 96Mar7005101@azusa.proc. flab. fujitsu. co. 」 p> 作者田宮豊さん MS-DOS/Windows 用のかな漢字変換システムを使 ったかな漢字変換サーバーを、 UNIX ー E で提供するプロ グラムです。 Subject: kinput2-wnn-egg-key-1.01. patch. gz Message-lD. く G440604.96Mar7194220@eccー as50. komaba. ecc. u-tokyo. ac. 」 p> 作者 TAGA Nayuta さん UNIX MAGAZINE 1996.5
第 = 等に等ダ勢に W 第信等第島既島 : 物等をに島 3 第を : 等第 : 信勢第第第 : 既新 : 島 : を第第第第島第第 kinput2 のⅥⅲⅡモードで、 Egg と同しキーバインド を使うためのノヾッチです。 Subject: Unofficial patch for dvi2ps-1.91j 十 VFlib- 2.21 Message-ID: く KURATl.96Mar8133416@data.osk. threewebnet. or. 」 p> 作者創也修さん TbX の dvi → PostScript 変換フィルタ dvi2ps 1.91j をベクトルフォント対応にするパッチです。 Subject: mathlib VO. 96 forlntel fpu. Message-lD. く HAG 旧旧 A. 96Mar9201354@anes.med. osaka-u ac. 」 p> 作者萩平哲さん i387 以降のコプロセッサを対象とした、アセンプラで 書かれた gcc 用の面寅算ライプラリです。 Subject. BBS Host Program annbbs Ver4.60 1 / 5 Message-lD: く SUZU.96Mar10004514@mikan.snow. tv-asahi. CO. 」 p> 作者鈴 *t 専史さん 日本語 BBS ホストプログラム annbbs の去辭斤版です。 Subject. 16X16 JIS 1978 , 1983 , 1990 Kanji Font Ver0. 96 Patch Message-lD: く 4i03nb$ijt@kudpc.kudpc.kyoto-u.ac. 作者安岡孝ーさん 1978 年版および 1983 年版、 1990 年版の JIS 漢字の 16 ドットフォントを去版にするパッチです。 Subject: FreeBSD lpr text filter japanese patch Message-ID. く 4i6r01$14re@panther.asahi-net.or.」 p> 作者 . 山口志儀夫さん FreeBSD で、日本語 EUC のテキストを ESC/P プ リンタに出力するためのフィルタです。 Subject: skkfep 0.83 ( 1 / 2 ) Message-ID: く 4i84kn$46他Yam215. yz. yamagata-u. ac 作者伊藤彰則さん GNU Emacs 用の SKK に似た、 UNIX 用かな漢字 変換システム skkfep の去斤版てす。 Subject: gnup10t-3.5 十 3.1.2. bugfix. patch Message-ID: く 4i88dd$ipO@ayame.ipc.chiba-u.ac.jp> 作者山賀正人さん グラフ作成ツール gnuplot で、 PostScript の印刷を よりきれいにするパッチのバグ修正パッチです。 Subject:lSO-2022- 」 P patch for tin ー 1.30 beta 950824 Message-lD: く 4iakht$h14@news.cc.nagoya-u.ac.」 p> 作者市川周ーさん ニュースリーダー tin 1.300 の日本言群レヾッチです。 Subject: penta-editer0.55 for X11 Message-lD. く KIMURA 96Mar16201328@yoci.e. dendai ac. 」 p> 作者勝将さん X11 ーヒでカくノヾズルゲームのマッフ作成工デイタです。 Subject: smms Ve 「 . 1 9 Message-lD. く 4iisqc$f6k@fse3.aist-nara.ac.jp> 作者佐藤哲さん . forward ファイルを簡単に作成できるプログラムで す。 Sub. 」 ect: fast random generator Message-lD. ぐ ZUMO. 96Mar19183739@galois.kk. info. kanagawa-u. ac. 」 p> 作者出正尚さん 高速な擬イ以乱数生成関数です。 Subject: 16X16 JIS X 0208-1996 Old-style Kanji Font ( 1 。 f5 ) Message-lD: く 4im953$ldd@kudpc.kudpc.kyoto-u.ac. 作者安岡孝ーさん 公開レビューカ絲冬ったばかりの 1996 年版の JIS 漢字 の 16 ドットフォントです。 Subject: TATEGAKI PAGER vtp VI. 3. Message-lD. <lNETNEWS-1-18-1.01333@niftyserve イ乍者深井美晴さん 日本語文縦書き表示ツールの去斤版です。 , , 信第 : 第をに : 信信信 : 島等を勢 : 既 ' , 等島等第信第信 : 物 : : をす麕信信等を第 : 等を第 : 第信を信 : を信 UNIX MAGAZINE 1996.5 103
カ占処理を並列しておこなうため、発信者の↑帯にが含ま Subject: egg-mix-0320 Message-lD: く NISIMURA. 96Mar20160447@aqua.cc. れている行と送付先の情剌切ゞ含まれている行が、かならす kyushu-u ac. 」 p> しも並んで言求されているとはかぎりません。 作者西村武司さん 醋処理のプロセス ID をもとにして、発信者と送付先 Mule 上の日本語入力システム Egg で、日本語入力の に関する情報を取り出して、それを並べて表示するだけの 途中て英単語などが入力できるプログラムです。 簡単なものですが、メールの送伺況を確認するのにきわ めて便利なツールといえます ・今月の *. sources. * タイジェスト ただし、このツー、でサートして 0 、る 0d0 、 ail の Newsgroups. alt. sources,comp os.linux. setup, ログの形式は IDA 版 sendmail のものなので、 send- de. comp. OS. unlX mai レヾージョン 8 のログは扱えません。 Sub 」 ect: Linux: Show Disk Partitioning in readable なお、たんに発信元のメールアドレスと送付先のメー form ルアドレスを関係づけて表示するだけであれは、日本で Message-lD: く 4h6fgk$sq4@Iuxor.mch.sni de> 作られた fromto という Perl スクリプトが、 sendmail 作者 : Martin Kraemer さん のバージョンを間わす使えます。 LinuxOS のハードディスクのノヾーティション情報を、 分かりやすく図示してくれるツールです。シェル・スクリ Newsgroups: gnu. emacs. sources プトでできていて、指定されたディスクの本のサイズや Subject: Dot-mode ()i redO' emulation Message-lD. く bii91hlgh12.fsf@neuromancer.sbil.co. パーティション構成を調べ、各パーティションのサイズ uk> やプロック数、何に使用されているか (Linux のファイ イ乍者」 ames Gillespie さん ルシステム、スワップ、 MS-DOS 領域など ) をルバし、 GNU Emacs において、ⅵの、、 . " ( 再度実行 ) コマン その大きさに比例した形でパーティションの図を描いて ドをエミュレーションする Emacs Lisp プログラムです。 くれます。 GNU Emacs では、キーポードマクロを使えばやりた パーティション情報自体は fdisk コマンドて得られま い竹喋を繰り返しておこなうことかできますが、その竹喋 すが、たんなる数字と文字の羅列にすぎないので、ディ をマクロに当求するための「開始」と「終了」窈ぐをし スク本の構成が一 -- - 、目瞭然とはいきません。このツール て、そのあとで区しの孑をすることになるので、冗長 を利用すれば、ディスクがどう使われていて、どのよう な感しは否めません。 な割合でパーティション分割をしているかが、目で石忍 キーを押すだけで直前におこ ⅵの . であれは、 できます。 なった竹喋を簡単に繰り返せますから、 GNU Emacs の シェル・スクリプトの大部分は awk スクリプトで、 キーポードマクロにくらべて手軽に使えます。そのため、 awk のさまざまな機能を駆使しているので、 awk の勉強 このようなエミュレーションが作られたのでしようね。 にもなるのではないでしようか。 Newsgroups: alt. sources,comp. mail. sendmail,comp. lang. perl misc Sub, 」 ect: parse. syslog. display sendmail message processl ng Message-lD. く 4heu94$cvk@hustle.rahul.net> 作者 . Rahul Dhesi さん 電子メールの酉占医システムである sendmail のログを 整理して、誰から誰に電子メールか送付されたかを表示す るための Perl スクリプトです。 sendmail のログには発 信者と送付先の情報か書き込まれていますが、 sendmail 第、いを 4 新す新 , いを、等を : イ第等をす、信 3 等を : を . 信 : をに :. 物等を :. 信等にに信等を・を 4 等をすを等を 104 UNIX MAGAZINE 1996.5
連載 /UNIX Communication Notes— ファイルがまとめてあるのなら、 ごく て Mew のインストール方法や使い方について触れないことに み方を知らない人が多い」と嘆いていた。そこで、今回はあえ 和彦君と話す機会も多い。あるとき、彼が「 GNU lnfo の読 同し大学に勤めていることもあって、 Mew の作者の山本 という行を j 助日する。 * Mew: (mew. jis) . A11 about Mew イルなら、 る。 /usr/local/mule/info/dir がディレクトリ・ファ 3. lnfi 。のディレクトリ・ファイルに Mew の言当を j 助日す とすればよい。 # cp info/mew. Jis . 土Ⅱ fo * /usr/local/mule/info ニュース 簡単である ) 。 した。 lnfo を読みながら勉強してはしい ( 夫際のところ、 20 符号化して、既存のニュースシステムに悪景を与えない らを tar コマンドで 1 つにまとめ、さらに uuencode で は、いったん別々のファイルに褓内される。そして、それ の記事に含まれている文字情報や画像、音声などのデータ が専用のアプリケーションを使って記事を作成すると、そ メディア情報の交換ができるようになっていた。ューサー て記事のボディ部に独自フォーマットを利用し、マルチ マンドでは、現在の Usenet ニュースと同し機構を用い けでない。たとえは、 NeXT に付属していたニュースコ とはいえ、ニュースをマルチメディア化した例がないわ いる。 ルを uuencode コマンドで符号化して送るガ去をとって ルチメディア情報を送る場合には、従来どおり情報ファイ の世界は、依然として文字中心の文化のままのようだ。マ ニュース MIME 化された記事ははとんど流れていない。 しかし、現在のニュースを眺めているかぎりでは、 育旨性か咼い。 事も MIME の構造を利用してマルチメディア化できる可 ほは準拠している。したがって、ニュースで交換される記 ニュースで使われるデータフォーマットも、 RFC822 に セージ交換サーピスに、ニュース (Usenet など ) がある。 電子メールと並んで多くのユーサーカリ用しているメッ ようにしていた。受信側では、ボディ部にある uuencode されたファイルを自重加勺にローカルに展開し、それを順次 表示していくイ督はみになっていた。このツールは、 NeXT どうしでのニュースの交換をⅱ斛是としていたため、 MIME の Content-Type のようにヘッダを拡張して内容の不リ を表示したりはせす、各部分かオ褓内されるファイルの刻長 子だけにもとづいて内容を表していた。それもあって一殳 にはあまり普及せす、 NeXT ューサーのあいだで細々と 使われている。 以前、私か勤めていた大阪大判青報処理教育センターで は、 NeXTstation を大量に導入したため、センター内部 てマルチメディア・ニュースシステムの運用をおこなって ☆ ディアイゞ進展することを期待したい。 換できて・商な環境であった。今後、 表現が豊かになるのはもちろん、よりスムーズに清幸ゞ交 いた。当時の経験からいえば、文字だけのニュースよりも ュースのマルチメ ter Text Messages, STD 11 , RFC822, August [ 2 ] D. Crocker, St 佖れ d 佖 for the Fo ロれ可 ARPA ん - net Message Bodies, RFC1521 , September 1993 for S. ec イⅵれ 9 れ d Descrtbing the お 0 ロれ観可んた lnternet Mail E e れ s れり P 佖 0 れ e : Mechanisms [ 1 ] N. Borenstein and N. Freed, MIME ひイ祠 t ゆ社叩 ose [ 文献 ] ( やまぐち・すぐる奈良先端科 ! 判支術大完大学 ) マルチメディア通信について角見する予定である。 次回は、 IP マルチキャストの機能を用いた実時間型の 1982 UNIX MAGAZINE 1996.5
GNUS 4 では文字化けはするがハングアップはしなかっ た、ニュースリーダー側で自重加勺に変換するなどして対処 できないか、 WinVN ではその対処がなされている、と いったフォローがきました。 去も匠は数多くのニュースリーダーカ発ささまざ まな環境で NetNews の読み書きができるようになって います。メールリーダーやニュースリーダーをはしめと するネットワーク関連のアプリケーションは、単独で使 用するアプリケーションとは異なり、ほかのアプリケー ションとの親和生を確認する必要がありますね。 Newsgroups: . rec. animation,fj. soc. copyright Subject: Maru(C)check Report 960307 Subject: Maru(C)check Report 960308 WWW のホームページで、著イ去違反と思われる画 像や音声データを掲載しているところのレポートです。 WWW での画像データの無断複製間題については以 前から議論がおこなわれていますが、 こで報告されて いるホームページなどを見ると、実際に間題があるホーム ページはどのようなもので、どのくらいの問題があるか、 当事者がどのように著イ褊去をとらえているか、というこ とを再認識させられます。 このあと、ネットワーク・サービスプロバイダの契約 匏頁の話題に発展しました。 Newsgroups: 月 . soc. smoking,fi. news. usage Sub 」 ect. lnternet Service provider 企業の立場を越えて自由に意見を述べるのがよいと考 えるので、巧に投稿するときは、企業のアカウントを使 わすに、ネットワーク・サービスプロバイダなどの個人 アカウントを使いましよう、という提案記事です。 これに対して、では以前から個人の発言は戸斤属糸騰哉 とは関係ないとみなされる傾向か強い、会社の資源をいっ さい使わすに開発したフリー・ソフトウェアを孑齬哥すると きなどは、プロバイダの個人アカウントのほうがいいと思 うことはある、自山な立場であるかどうかは発言者個人が 決めること、勝手な思込みによる提案はよけいなお世話で ある、関係ない話を . soc. smoking にクロスポストする 意図がよく分からない、といったフォローがきました。 今回の提案に対しては否定的な意見が多かったのです が、いろいろな事情で会社のアカウントとプロバイダの 個人アカウントを使い分けている人もいるようですね。 Newsgroups ・巧 announce,fj. net. misc . net. providers ほか Subject: Re: Protest Manifesto against the "Ethic Guideline" by ENC and MITI/ 「イ侖王里綱令頁」へのキ義 声明 通産省および電子ネットワーク 1 辧義会の「倫工嚊畍頁」発 表に対する長連動の経過報告のお知らせ記事です。釜過 報告は以下の URL に掲載されているそうです。 http://www.toyama-u.ac.jp/-ogura/another-world/ censor/netrinl. html ・今月のニュースグループの変化 ( 新設 ) . OS. ms-windows. prograrnmmg : MS-Windows のプログラミングについて . windows. openwin : OpenWindows について . sys. mac. advocacy : Mac と他機種の上交について . rec. music. winds : 吹奏楽について 」・ rec ・ gardens : 園芸について ・今月の . sources Subject: Romanized Thai to PostScript Message-lD. く KA 乙 96Feb23002220@maczuka.mac- zuka. hitachi. ibaraki. jp> Sub. 」 ect: Romanized Thai to Thai Converter Message-lD. く KAZ 96M2r10162156@maczuka.ma ー czuka. hitachi. ibaraki. 」 p> 作者伊藤ー光さん ローマ字表記のタイ語テキストを、 PostScript および 本来のタイ文字テキストに変換するツールです。 Subject: temp-buf-fix fo 「 htm12LaTeX version 4. OC Message-ID. <IS 印 DA. 96Feb23101135@ⅱ on. isl. intec. CO. 」 p> 作者石田茂さん HTML ソーステキストを I*TFfX ソーステキストに変 換するフィルタのバグ修正パッチです。 Sub. 」 ect. zview. 可ーー Zaurus Data Viewer/Extracter on PerI/Tk Message-ID. く 24041.825145698@ru n. cs ony. co. 作者河野真治さん シャープの ZAURUS の画像データなどを表小するツ ールです。 物帑を物い、物煢新等新物ダを第 33 物 : 等霊等等いををを物い 3 をを物す UNIX MAGAZINE 1996.5 101
表 2 クライアントの種類を示す値 syslog 関数の引数には、この表に挙げた値と表 1 の重 LOG-AUTH LOG-AUTHPRIV L OG-CRON LOG-DAEMON LOG-FTP LOG-KERN LOG-LPR LOG-MAIL LOG-NEWS LOG-SYSLOG LOG-USER LOG-UUCP LOG-LOCALO —LOG-LOCAL7 ューサー認証をおこなうプログラム (login 、 su 、 getty など ) LOG-AUTH と同様た、が、限られたユーサーに対してのみ情報を公開したいプログラム cron などのクロックデーモン 特定の不鶤頁か割り当てられていない通常のデーモン FTP 関連のプログラム カーネル プリンタの操作に関連するプログラム (lpr や lpd など ) 電子メールを処理するプログラム 電子ニュースを処理するプログラム syslog のサーノヾープロセス syslogd ューサープロセスとして重川乍するプログラム 任意のプログラムに割り当てることができる UUCP 関連のプログラム 要度を示す値とを論理和 (l) で結んで指定します。たと えは、不鶤頁が LOG-LOCALO で LOG-WARNING の メッセージを出力したいときは、 sys10g(LOG_LOCALO ー LOG—WARNING, " メッセージ " ) とします。種類を指定しなかった場合は、 LOG-USER が指定されたものとみなされます ( 実際には、もうすこ し複雑なイはみになっています。これについては、もう すこしあとで説明します ) 。 vsyslog 関数 以降では、 syslog に関するその他の関数について紹 介します。ます、 sysl 。 g 関数とたいへんよく似ている vsyslog 関数をとりあげましよう。これは、 vsyslog ( 〃ロ 0 ロ t リ , message, 0 四 s ) という形式で使います。 to ロでは、 syslog 関数の場合と同様に優先度を 指定します。次の message も、 syslog 関数と同しくメ ッセージのフォーマット文字列を指定するためのもので す。ただし、フォーマット文字列に埋め込むための値を 指定するガ去が異なります。 syslog 関数では、 printf と同様に埋め込む値をフ ォーマット文字列の後ろに並べて指定しました。しか し、 vsyslog 関数で指定する引数は 1 つだけで、引 数の個数が決まらない関数を自分で作成するときに使 う、、 va 」 ist" という型の値を指定します。 vsyslog 関数 を利用すれば、可変長引数を扱うような関数を書いた場 148 合、それぞれの引数を角斤せすにそのまま渡すことがで きます。 なんらかのメッセージを表示させる必要があるとき は、メッセージの前にどの関数でそれを発行したのかを 示したい場合を考えてみましよう。これをそのまま実現 すると、いつでも syslog 関数を 2 回呼び出さなけれは なりません。しかし、これをまとめて実行する関数を定 義しておけは、 1 回の関数呼出しで 2 行のメッセージを 出力できます。これを実現する関数は、たとえば次のよ うになります。 #include く varargs . h> #include く syslog. h> VOid mess(pri, func, fmt, va—alist) int char char va_dcl prl ; *func; *fmt ; va—list ap; va—start (ap) ; syslog(pri, "Message from function %s" func) ; vsyslog(pri, fmt , (p) ; va—end(ap) ; 最初の syslog 関数の呼出しで関数名を出力したあ と、 mess 関数に渡された残りの引数を使って本来のメッ セージを出力しています。 vsyslog 関数がないときは、 vspr ⅲ tf 関数を用いて文字列を作成しておき、たとえば さきはどのプログラムの va-start(ap) —va-end(ap) の 部分を次のように変更すれば、これを実現することがで きます。 UNIX MAGAZINE 1996.5
表 1 syslogd の第 1 引数に指定できる値 値 LOG-EMERG LOG -ALERT LOG-CRIT L 0 G-ERR LOG-WARNING LOG-NOTICE LOG-INFO LOG-DEBUG パニック状態 即座に正さなけれは・ならない状態 危険な状態 工ラー ワーニング・メッセージ 処理したほうがよい状態 インフォメーション デバッグ用のメッセージ た値にもとづいてどのような処理をおこなうかを決め などがあります。 ・別のマシン上の syslogd への転送 ・ファイルへの出力 ・ログインしているすべてのユーザーの端末への出力 特定ューサーの端末への出力 ・システムのコンソーノレ , の出力 さきほども説明したように、処理には、 ます。 クルードしておき、 syslog ライプラリ関数を呼び出すだ い方はいたって簡単で、 syslog. h ヘッダファイルをイン ト用ライプラリ関数について説明しておきましよう。使 こで、デーモン・プログラムか利用するクライアン クライアント用ライプラリ関数 けです。 UNIX MAGAZINE 1996.5 埋め込む値 (parameter 、 s) を指定することもできます。 ように、フォーマット用の文字列 (message) とそこに の引数にはたんなる文字列だけではなく、 printf 関数の 次の引数 message は、出力するメッセージです。 LOG-DEBUG メッセージカイ更利かもしれません。 以降の値でしよう。プログラム作成時には、とくに の性質にもよりますが、実際に使う値は LOG-ERR 値を選んで関数を呼び出します。作成するプログラム メッセージを出力する場合は、このなかから適当な 度の高い順に並べてあります ) 。 れには、表 1 に示す 8 つの値が用意されています ( 重要 ッセージの重要度を示す値を記号定数で指定します。 という形式で使います。最初の引数の加には、メ syslog ( 〃 0 ロ t リ , message, 〃 ar 佖 me 7 、 s . syslog ライプラリ関数は、 LJN Ⅸ流プログラミング 67 このときのフォーマット用文字列は printf のものと同 しですが、現在のエラーメッセージは、、 % m " という記 号で表すことができます。このメッセージは、その時点 の大域変数 errno の値にもとづいて perror 関数から出 力される文字列、つまり、 strerror (errno) で得られる文字列です。システムコールが失敗した場 ロ、 errno 変数にはその理由を示す値が設定されます。 したがって、この機能はシステムコールの失敗によるメ ッセージを出力する際に便利です。フォーマット用文字 列の末尾が改行文字で終っていない場合には、自動的に 改行文字が加えられます。 ここで指定した文字列は syslogd に渡される時点で、 月日時 : 分 : 秒ホスト名プログラム名 : 文字列 という形式に変換されます。最後の、、文字列 " の部分が、 引数として指定した文字列です。この前に、日時とメッ セージを発行したプログラムかカ作しているマシンのホ スト名、プログラム名カ咐けられます。、プログラム名 " は、パスの部分を除いた名前です。 main 関数の第 2 引 数、 argv の先頭要素 (argv[O]) がそのまま使われるわけ ではありません。 優先度 syslog ライプラリ関数を使えば syslog システムを利 147 れたものとみなされます。 えません。この値を指定すると、 LOG-USER カ甘旨定さ CAL7 を指定します。ただし、 LOG-KERN だけは使 合は、 LOG-USER や LOG-LOCALO—LOG-LO- 作成するプログラムにとくに一致する種類がない場 があります。 クライアントの種類を示す値には、表 2 に挙げたもの れます。 ライアントからのメッセージなのかを示す値から構成さ は、この重要度を示す値 ( レベル ) と、どんな不鶤頁のク 要度を示す値を指定すると書きました。優先度を表す値 さきはど、 sysl 。 g ライプラリ関数の第 1 引数には、重 ておきましよう。 る前に、 syslog システムにとって重要な優先度の話をし つかの関数が用意されています。それらについて説明す 用できますが、より細かく制御したい場合に備えていく
連載 / IJN Ⅸの道具箱ーの echo ”く LI> Be10ng is echo ”く L 工 > You didn't else : $FORM_j ob" echo " く LI> Job is echo " く LI> You are in: if [ $FORM_country JP' ] ; then input your belong. $FORM-be10ng' echo "Foreign Country" else else echO "miSS echo "East Japan "ej" ] ; then elif [ $FORM_10ca1e echo "West Japan "wj " ] ; then if [ $FORM_10ca1e EOF く UL> く L 工 > Usua11y use : cat くく EOF if if if if [ ! ー 2 "$FORM_gs" ] ; then echo " く LI> GhostScript" [ ! ー 2 "$FORM—ppp" ] ; then echO " く LI> PPP(Point—To—Point P て 0t0C01 ) " [ ! ー 2 " $FORM—mew" ] ; then echO ”く L 工 > mew' [ ! ー 2 " $FORM_www" ] ; then echo " く LI> WWW(Wor1d Wide Web) ” echO " く /UL>" cat くく EOF く LI> Non—interesting topics : く UL> EOF if if if if if if if if if if if f i if echo " く LI> NEWS/OS" then then then then then then then [ ! ー 2 "$FORM_ngs " ] ; then echo " く LI> GhostScript' [ ! ー 2 "$FORM—nppp' ] ; then echo " く LI> PPP(Point—To—Point Protoc01) ” [ ! —z " $FORM_nmew" ] ; then echo " く LI> mew' [ ! —z " $FORM_nwww" ] ; then echo " く LI> WWW(Wor1d Wide Web) ” e ChO e ChO "$FORM_bsd" ] ; " く LI> BSD/OS" "$FORM_fre" ] ; " く LI> FreeBSD" "$FORM_sos" ] ; echo ”く LI> SunOS" echo " く LI> S01aris" echo ”く LI> Linux" echO " く /UL> " echo " く LI> Topics is echo " く LI> Message is cat くく EOF く /UL> く /BODY> く /HTML> EOF echo " く L 工 > Digita1 UNIX" [ ! —z "$FORM_etc" ] ; then echo " く LI> Other OS" echO " く /UL>" cat くく EOF く LI> lnteresting topics : く UL> EOF 64 $FORM—topics " $FORM—message" UNIX MAGAZINE 1996.5
く /BODY> く /HTML> # ! /bin/sh リスト 2 アンケート里 CGI スクリプト eval ( $CGIPARSE —form' eval ( $CGIPARSE —init ( CGIPARSE=/var/www/bin/cgiparse 連載 / UN Ⅸの道具箱ー VALUE="Send"> く TITLE> TOOL BOX READERS く TEXTAREA NAME="message" ROWS=" 10 " COLS="80" >Message : く LI> その他、感想でも何でも書いて下さい : く BR > く /TEXTAREA> く TEXTAREA NAME="topicsl' ROWS="5" COLS="8()" >Topics : く LI> これから扱って欲しい話題をあげてください : く BR > く INPUT TYPE="CHECKBOX" NAME="nwww"> WWW く INPUT TYPE="CHECKBOX" NAME="nmew" > mew く INPUT TYPE="CHECKBOX" NAME="nppp't > PPP く INPUT TYPE="CHECKBOX" NAME="ngs " > Ghostscript く LI> 面白くなかった内容は ? ( 複数回答可 ) : く BR> く INPUT TYPE="CHECKBOX" NAME="www"> WWW く INPUT TYPE="CHECKBOX" NAME="mew"> mew く INPUT TYPE="CHECKBOX" NAME="ppp"> PPP く INPUT TYPE="CHECKBOX" NAME="gs " > Ghostscript く LI> 興味を持った内容は ? ( 複数回答可 ) : く BR> く UL> 連載に関するアンケートにお答え下さい。 く H2 > 読者アンケートく / H2 > く HR> く /UL> く INPUT TYPE="CHECKBOX" NAME="etc"> Other く INPUT TYPE="CHECKBOX" NAME="osf"> Digita1 UNIX く HR> 御協力ありがとうございました。 く HR> く /FORM> く INPUT TYPE="RESET" VALUE="Reset " > く EM> よろしいですか ? く /EM>: く INPUT TYPE="SUBMIT" く HR> く /UL> く /TEXTAREA> く ADDRESS> monkey@saruyama ・ nara—u. ac . jp 1996 . 4.18 く /ADDRESS> く P> Your answer is as f0110WS : く /P> く UL> EOF if [ ! -z echO echO else l'$FORM_name " ] ; then " く L 工 > " く LI> Name is : $FORM_name " You didn' t input your name . echo Content echo cat くく EOF く HTML> く HEAD> く /TITLE> く /HEAD > く BODY> —type : text/html QUESTIONARE : f i echO echo ANSWER " く LI> Age " く LI> Sex $FORM-sex 1 S 1 S 1n TOP SECRET! ! " く HI > Thank you for your answer ! く / HI > く HR> UNIX MAGAZINE 1996.5 echo ・ echo ・ if [ ! —z "$FORM_be10ng" ] ; esac * ) echo "NeutraI" ・ then 63
char buf [ 1024 ] ; va—start (ap) ; syslog(pri, "Message from func) ; vsprintf (buf , fmt , (p) ; syslog(pri, buf) ; va—end(ap) ; function ただし、このプログラムでは、、 % m " の処理はおこな えません。 %m も正しく処理したい場合は、もうすこし 複雑なプログラムが必要です。 上の例はヘッダファイルとして varargs. h を用いた関 数ですが、最近のシステムでは stdarg. h を利用して可 変長引数を処理するものもあります。こちらの場合は、 mess(pri, func, fmt) void #include く syslog. h> #include く stdarg. h> 次のようになります。 int char char prl; *func; *fmt ; va—list ap, va—start (ap, syslog(pri, func) ; vsyslog(pri, va—end(ap) ; fmt , (p) ; "Message from fmt) ; function 可変長引数の処理はシステムごとに異なることもある ので、この関数と同様な働きをするものを作成するとき は、かなら $varargs や stdarg のオンライン・マニュ アルを参照してください。 vsysl 。 g のオンライン・マニュ アルにも、例に挙げた関数とよく似たものか紹介されて いることもあります。 UNIX MAGAZINE 1996.5 ます。ここで指定した値は、 syslog 関数の実行時に出力 最初の引数 name には、通常はプログラム名を指定し openlog(name, 0 厩 0 れ s , / 佖 c の 叩 enlog は、次の形式で利用します。 す。 なかったときのデフォルト値を設定するために利用しま 処理方法をより細かく制御したり、とくに種類を指定し は、 syslog や vsyslog によって送られるメッセージの 次は、 openlog 関数と closelog 関数です。 openlog openlog 関数と closelog 関数 LJN Ⅸ流プログラミング 67 されるメッセージの先頭に名前として付けられるからで す。なんらかの理由でプログラム名以外のものを出力し たい場合は、異なる文字列を指定してもかまいません。 こはあくまでメッセージを出力したプログラ ムを識別するためのフィールドです。それ以外の値を出 力したいときは、メッセージ自体に含める去を考えた はうがよいでしよう。 メッセージの先頭に付けるプログラム名は変えたくな いが、メッセージの出力方法を変更するために openlog 関数を呼び出すケースも考えられます。この場合は、自 分自身のプログラム名をこの引数に指定します。 main 関数に渡されるプログラム名をそのまま渡すのではな く、パス名を除いたファイル名の部分を渡さなければほ かの出力との整合生がとれません。これには、次のよう myname * argv ; if ( (myname = strrchr (*argv **argv; char argc ; int main(argc , argv) *myname ; char #include く syslog. h> #include く string. > #include く stdio . h> なコードカ陏効です。 openlog (myname , myname 十十 ; } else { 149 結んで指定します。 えるための引数です。表 3 に挙げるような値を論理和で 次の引数叩。れ s は、 syslog や vsyslog の重川を変 用するかどうかは、それぞれに判断してください。 ムでかならすこうなるとはかぎりません。この機能を利 だし、明文化されていない機能なので、すべてのシステ NULL を渡すとプログラム名が用いられるようです。た マニュアルには書かれていませんが、最初の引数に ものです。 ラム名を渡すために使っていましたが、それを流用した ままでは、おもに Usage 出力をおこなう関数にプログ このコードは、これまでも何回か登場しています。い