From owner-FreeBSD-tech-jp@jp.freebsd.org  Tue Jun 19 11:27:25 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id LAA04391;
	Tue, 19 Jun 2001 11:27:25 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from shiva.tri.asanuma.co.jp (shiva.tri.asanuma.co.jp [210.160.188.2])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id LAA04359;
	Tue, 19 Jun 2001 11:27:22 +0900 (JST)
	(envelope-from mori@tri.asanuma.co.jp)
Received: from yashoda.tri.asanuma.co.jp (yashoda.tri.asanuma.co.jp [172.16.57.11])
	by shiva.tri.asanuma.co.jp (Postfix) with ESMTP
	id EAA99542B; Tue, 19 Jun 2001 11:27:18 +0900 (JST)
Received: from kurishna.tri.asanuma.co.jp (kurishna.tri.asanuma.co.jp [172.16.57.2])
	by yashoda.tri.asanuma.co.jp (8.11.0/8.11.0) with ESMTP id f5J2RHx06295;
	Tue, 19 Jun 2001 11:27:18 +0900 (JST)
To: FreeBSD-users-jp@jp.FreeBSD.org, FreeBSD-tech-jp@jp.FreeBSD.org
References: <20010618.192417.109709964.aki@z.ai.bsdclub.org>
	<200106181056.TAA27220@sranhm.sra.co.jp>
	<80r8whe2ri.fsf@kurishna.tri.asanuma.co.jp>
Siganture-File: ~/.signature
MIME-Version: 1.0 (generated by REMI 1.14.2 - =?ISO-8859-4?Q?=22Hokuhoku-=D2?=
 =?ISO-8859-4?Q?shima=22?=)
Content-Type: text/plain; charset=ISO-2022-JP
From: Mori Kouji <mori@tri.asanuma.co.jp>
Date: 19 Jun 2001 11:27:17 +0900
In-Reply-To: <80r8whe2ri.fsf@kurishna.tri.asanuma.co.jp> (Mori Kouji's message of "19 Jun 2001 09:23:29 +0900")
Message-ID: <803d8xcigq.fsf@kurishna.tri.asanuma.co.jp>
Lines: 100
User-Agent: Nana-gnus/7.1.0.23 REMI/1.14.2 (=?ISO-8859-4?Q?Hokuhoku-=D2shi?=
 =?ISO-8859-4?Q?ma?=) Chao/1.14.1 (=?ISO-8859-4?Q?Rokujiz=F2?=) APEL/10.3
 Emacs/21.0.103 (i386--freebsd) MULE/5.0 (SAKAKI)
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: FreeBSD-tech-jp 3112
Subject: [FreeBSD-tech-jp 3112] Re: [FreeBSD-users-jp 62385] Re: lpc kterm
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org
X-Originator: mori@kurishna.tri.asanuma.co.jp

$B?9$G$9!#(Btech-jp $B$NJ}$K$b%a!<%k$rAw$j$^$9!#B3$-$O$=$A$i$NJ}$G!#(B

Mori Kouji <mori@tri.asanuma.co.jp> writes:

> FreeBSD 4.3 $B$N(B lpc $B$OJT=85!G=$r;}$C$F$*$j!"BPOCE*$K<B9T$7$?>l9g$K$O(B
> termcap $B$r$O$8$a$KFI$_$K9T$/$h$&$G$9!#$=$N8e$G(B printcap $B$rFI$`$N$G$9$,!"(B
> *cap $B$rFI$`%i%$%V%i%j72(B (cgetent(3) $B$J$I(B) $B$,>uBV$rJ];}$9$k$?$a$K(B
> termcap $B$rFI$s$@;~$N>pJs$,1L$l=P$F$7$^$&>l9g$,$"$k$N$G$7$g$&!#(B

cap database $B$rA`:n$9$k4X?t72(B getcap(3) $B$NOCBj$G$9!#(B

$BDL>o$O(B cgetent(3) $B$J$I$r;H$C$F%G!<%?%Y!<%9%U%!%$%k$+$i%(%s%H%j$r(B
$B8!:w$7$^$9$,!"(Bcgetset(3) $B$r;H$C$F4D6-JQ?t$J$I$+$i%(%s%H%j$rDI2C$7$?>l9g(B
($BI8=`$N(B /usr/share/misc/termcap $B$K4^$^$l$J$$C<Kv$r4D6-JQ?t(B TERMCAP $B$G(B
$BDI2C$9$k$h$&$J>u67(B)$B!"(Bcgetclose(3) $B$G%G!<%?%Y!<%9$rJD$8$F?7$7$$(B
$B%G!<%?%Y!<%9$r(B cgetent(3) $B$G3+$$$?;~$K0JA0$N(B cgetset(3) $B$N>pJs$,(B
$B>C$($:$K;D$C$F$$$F:.$6$C$F$7$^$&$H$$$&8=>]$,@8$8$^$9!#(B

$B$3$N$?$a!"(BFreeBSD-users-jp $B$G=P$?$h$&$K(B /etc/printcap $B$N%(%s%H%j$,6u$G(B
lpc $B$rBPOCE*$K<B9T$7!"$+$D(B TERMCAP $B$,@_Dj$5$l$F$$$k>l9g$K(B status all $B$G(B
TERMCAP $B$NC<KvL>$,%W%j%s%?$H$7$FI=<($5$l$k$H$$$&>c32$,H/@8$7$^$9!#(B

$B$3$N8=>]$r3NG'$9$k$?$a$N%5%s%W%k%W%m%0%i%`$H!"(Bcgetent() $B$G(B static $BJQ?t$r(B
$B=i4|2=$9$k$h$&$K$9$k=$@5$r$D$1$^$9!#$?$@$7!"(Btermcap $B$r8+$k%W%m%0%i%`$,(B
$B$I$N$h$&$K(B getcap(3) $B$r;HMQ$7$F$$$k$N$+D4::$7$F$$$J$$$N$G4{B8$N%W%m%0%i%`$G(B
$BF0$+$J$/$J$k$b$N$,$"$k$+$b$7$l$^$;$s!#(B

$B2?$+5$$E$$$?E@$,$"$l$P$*CN$i$;2<$5$$!#(B

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
  char *termcapdb[2] = {"/usr/share/misc/termcap", 0};
  char *printcapdb[2] = {"/etc/printcap", 0};
  char name[] = "foo";
  char ent[] = "foo:bar";
  char *buf, *XXX;
  int r;

  XXX = name;
  r = cgetent(&buf, termcapdb, XXX);
  if (r < 0) {
    printf("'%s' is not found in %s.\n", name, termcapdb[0]);
  } else {
    printf("'%s' is found in %s\n", name, termcapdb[0]);
  }
  cgetset(ent);
  cgetclose();

  buf = NULL;

  XXX = name;
  r = cgetent(&buf, printcapdb, XXX);
  if (r < 0) {
    printf("'%s' is not found in %s.\n", name, printcapdb[0]);
  } else {
    strtok(buf, ":");
    printf("'%s' is found in %s\n", name, printcapdb[0]);
  }
  cgetclose();
}

$B<B9T7k2L!#(B

$ ./a.out 
'foo' is not found in /usr/share/misc/termcap.
'foo' is found in /etc/printcap

$B=$@58e$N(B libc $B$r;H$C$?>l9g!#(B

$ ./a.out 
'foo' is not found in /usr/share/misc/termcap.
'foo' is not found in /etc/printcap.


libc $B$X$N%Q%C%A!#(B

Index: getcap.c
===================================================================
RCS file: /opt/cvs/FreeBSD/src/lib/libc/gen/getcap.c,v
retrieving revision 1.11.2.2
diff -u -r1.11.2.2 getcap.c
--- getcap.c	2001/01/15 06:48:09	1.11.2.2
+++ getcap.c	2001/06/19 01:40:03
@@ -166,6 +166,7 @@
 {
 	u_int dummy;
 
+	toprec = NULL;
 	return (getent(buf, &dummy, db_array, -1, name, 0, NULL));
 }
 

-- 
$B?9(B $B9@Fs(B	(MORI Kouji)
($B3t(B)$B^I>BAH(B $B5;=Q8&5f=j(B
E-mail: mori@tri.asanuma.co.jp
