[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:96856] Re: エンディアンの変換について


ねむいですと申します。
こういう技もありますよということで。

> > > > % cd /usr/src/linux
> > > > % find . -type f -print | xargs grep -l le32_to_cpu
> > > > 
> > > > こんなかんじ?
> > > 
> > > それは最後の手段ですな。
> > 
> >  うぅん、塩兄ちゃんったらなかなか GNU products の作法に慣れ
> > てくれないんだからぁ。
> >  最近は machine speed も速いし type 数も大差ないので、いき
> > なり
> > 	grep -r cpu_to_be32 /usr/src/linux
> > でおっけーなのでは?

あまり語られていないのですが、死ぬほど便利な技が
ありますので、知らない人のために念のためご紹介しておきます。
ctagsという、ソースコードのシンボルを解析するコマンドを
使用するんですが、

(1)まず、以下の内容で$HOME/bin/dirtagsというファイルを作ってください。
# ------------ ここから ------------
#!/bin/sh
cd $1
ctags *
# ------------ ここまで ------------

(2)実行許可属性を与えて、パスを通しておいてください。
$ chmod u+x $HOME/bin/dirtags
$ export PATH="$PATH:$HOME/bin"
(ぐらいかな?)

(3)次に、ソースコードのあるディレクトリに移動してください。
(今回の例では、/usr/src/linuxかな?)
$ cd /usr/src/linux

(4)おもむろに次の2つのコマンドを実行し、シンボルのデータベースを作成します。
$ find * -type d -exec dirtags {} \;
$ ctags --file-scope=no -R

(5)あとは、vimなどのタグジャンプ機能を使えば、かなり自由に
シンボルの旅が楽しめます。
$ vim
しておいて、
:set tags=./tags (「:」から入力してエンター)
:tj cpu_to_be32
などで、「該当ソースコード」の「定義部」に場所にジャンプできます。
(:tj以外にも、ソースコードを読んでいる最中にC-]すると、
カーソル下の単語の定義部にジャンプできます。
また、ジャンプした位置がスタックになっていて、C-tやC-oでばんばん戻れます。)

(6)$HOME/.vimrcに、以下の記述を書いておくと、もっと幸せになれますです。
set tags=/usr/src/linux/tags

(7)おまけですが、/usr/include以下もすべてデータベース化するとかも
いいですよね。

ctagsなどの使い方の詳細はvim-5.7やctagsのソースについているドキュメント
(vim-5.7ではvim-5.7/src/ctags/FAQに記載あり)、vimのヘルプ
(tagがキーワードかな?)を読んでください。

> > # やはり BSD 出身の方は ancient UNIX の文化に縛られ続けて
> > #おいでですか? :-)
> 
> んー、昔覚えた方法がそのまま癖になってるだけなのです。
> 致命的なデメリットがない限りはわざわざ新しい方法を「調べて」
> 「覚えて」「適応しなおす」ほどのこともないというだけのことでしょう。
> 部分的修正はしてるんですけどね。

で、ちょっと質問なんですが、ここで紹介した技ってプログラミングを
生業とする人はけっこう知っておいてもいい知識だと思いますが、
知名度はいかほどなんでしょうか?
# "dirtags"という文字列は前述のFAQでは紹介されているそのままなんですが、
# MLやGoogleの検索では引っかかりませんでした。
# BSDの人には釈迦に説法なのかなぁ?

こういう死ぬほど便利なんだけど案外知られていない技ってのが
未発掘のままゴロゴロしてるのかなぁ?と思ったりしてます。

/*
 *    "ねむいです (nemuidesu)" <nemu _at_ tmail.plala.or.jp>
 *    http://nemuidesu.dip.jp/~nemuidesu/
 *    座右の銘:「例外のないルールはない。」(<- 再帰してまふ)
 */

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: