[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:15378] Re: Printing on emacs
-
From:Hiroshi Futami
-
Date:Wed, 18 Sep 2002 00:31:15 +0900 (JST)
- Subject: [plamo:15378] Re: Printing on emacs
- From: Hiroshi Futami <futami@xxxxxxxxxxxx>
- Date: Wed, 18 Sep 2002 00:31:53 +0900 (JST)
ふたみなのです。
From: Keiichi Suzuki <keiichi@nanap.org>
Subject: [plamo:15371] Re: Printing on emacs
Date: 17 Sep 2002 11:28:02 +0900
> ;; 手元に Plamo 2.2 の lpr はありませんので,確認はしていません
> ;; が, unix 系の一般的なコマンドとして。 m(_ _)m
Plamo で稼働している lpr のソースが何処にあるのか探せなかったので、
どうせ BSD 由来だろうということで、NetBSD-1.6H のソースで調べました。
コマンドライン引数は、getopt()で処理されます。lpr.c の場合は、
while ((c = getopt(argc, argv,
":#:1:2:3:4:C:J:P:T:U:cdfghi:lmnprstvw:")) != -1) {
switch (c) {
(中略)
case 'P': /* specifiy printer name */
printer = optarg;
break;
となっています。ということで、
lpr -Phoge foo.txt
であろうが、
lpr -P hoge foo.txt
であろうが、printer という変数には hoge が代入されます。この後に、
if (printer == NULL && (printer = getenv("PRINTER")) == NULL)
printer = DEFLP;
chkprinter(printer);
とあるので、Pオプションが指定されておらず、環境変数 PRINTER が定義されて
いないと、デフォルトのプリンター(lp)が使われますが、Pで指定している場合
は chkprinter() で /etc/printcap のエントリとの整合性等をチェックします。
# GNU ツールの場合ですと、getopt()ではなくて、getopt_long()を使っている
# のですが、基本的な動作は同じです。
lpr -P foo.txt
とタイプすると、lpr: lpr.c: unknown printer になります。
参考までに、4.2BSD の場合はこんなソースになっていました。
while (argc > 1 && argv[1][0] == '-') {
argc--;
arg = *++argv;
switch (arg[1]) {
case 'P': /* specifiy printer name */
if (arg[2])
printer = &arg[2];
else if (argc > 1) {
argc--;
printer = *++argv;
}
break;
-- ふ
- References
-
- [plamo:15322] Printing on emacs, MOUE Kiyoshi
- [plamo:15371] Re: Printing on emacs, Keiichi Suzuki
[検索ページ]
[メール一覧]
Plamo ML 公開システム