FreeBSD初心者運用日記 このページをアンテナに追加

2008-03-20

[]global 08:01 global - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - global - FreeBSD初心者運用日記 global - FreeBSD初心者運用日記 のブックマークコメント

GNU GLOBAL は、ソースコードに索引付けを行うことで、大規模システムのハックやレビューを効率化するソフトウエアです。

GNU GLOBAL

[]/usr/src/usr.bin/yes/yes.c 06:08 /usr/src/usr.bin/yes/yes.c  - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - /usr/src/usr.bin/yes/yes.c  - FreeBSD初心者運用日記 /usr/src/usr.bin/yes/yes.c  - FreeBSD初心者運用日記 のブックマークコメント

C言語の勉強もかねて、システムコマンドのソースを探検してみたいと思います。

まず、一番簡単そうなyesコマンド。

コマンドのソースがおいてある場所を知るためにはwhereisコマンドを使います。

black:~$ whereis yes
yes: /usr/bin/yes /usr/share/man/man1/yes.1.gz /usr/src/usr.bin/yes

/usr/src/usr.bin/yesというディレクトリにyes.cというのがあります。

とりあえず見てみます。

・・・省略・・・
#ifndef lint
static const char copyright[] =
"@(#) Copyright (c) 1987, 1993\n\
        The Regents of the University of California.  All rights reserved.\n";
#endif /* not lint */

#ifndef lint
#if 0
static char sccsid[] = "@(#)yes.c       8.1 (Berkeley) 6/6/93";
#else
static const char rcsid[] = "$FreeBSD: src/usr.bin/yes/yes.c,v 1.5 2002/11/09 21:00:39 dwmalone Exp $";
#endif
#endif /* not lint */

#ifndef lintっていうのが何なのかよくわかりませんが、あまり重要でなさそうなので飛ばします。

まず、これ。

#include <err.h>
#include <stdio.h>

err.hを探してみます。

black:~$ sudo find / -type f -name err.h
/usr/include/openssl/err.h
/usr/include/err.h
/usr/src/crypto/openssl/crypto/err/err.h
/usr/src/include/err.h

うーん、複数あるようです。

たぶん、make実行したときに、どれかのerr.hを読んでいると思うのですが、、

今日はここまで。

次回、err.hがどこのディレクトリのものを読み込んでいるのか調べます。

makeについて調べたほうがよいかも。