2010-05-01から1ヶ月間の記事一覧

nkf の出力オプションを自動で判別したい

日本語を含むファイルやコマンド結果をターミナルで出力するとき、nkf の出力オプション -s, -w, -e を環境に応じて考えるのがめんどくさい。alias ででっちあげて、シェルの起動スクリプトへ。 case "$LANG" in *SJIS | *sjis | *PCK | *pck) alias c='nkf …

Mark から開始したときは、オリジナルの forward-word を使用、それ以外は単語の先頭に移動する

http://d.hatena.ne.jp/kitokitoki/20091128/p2 で、M-f が単語の先頭に移動できて快適だったけど、問題が。単語をコピーしようとすると、単語の先頭に移動するものだから、コピーした尻にスペースが入る。 Mark (C-space) から開始したときは、通常のforwar…

Convert::Binary::C で 詰まった C 共用体をバイナリ変換 (うまくいかない)

C の共用体のサイズは、サイズの大きいメンバが基準になってしまう。ネットワークで C の共用体のような使い方をしたいときがあるけど、データが詰まった状態になって欲しい。つまり、 struct packet_t { struct ip_hdr_t ip_hdr; union { struct tcp_hdr_t …

Convert::Binary::C で C 構造体をバイナリ変換 (可変長配列)

C の可変長配列をバイナリ変換する。tag で dimension (配列長)を指定する。 ヘッダファイル variable_array.h typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; #pragma pack(1)…

Convert::Binary::C で C 構造体をバイナリ変換 (固定長配列)

C の固定長配列をバイナリ変換する。 ヘッダファイル fixed_array.h #ifndef _FIXED_ARRAY_H_ #define _FIXED_ARRAY_H_ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; #pragma…

Convert::Binary::C で C 構造体をバイナリ変換 (共用体)

C 共用体をバイナリ変換する。 ヘッダファイル union.h #ifndef _UNION_H_ #define _UNION_H_ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; #pragma pack(1) struct top_t { …

Convert::Binary::C で C 構造体をバイナリ変換 (入れ子になった構造体)

入れ子になった C 構造体をバイナリ変換する。 ヘッダファイル sub_struct.h #ifndef SUB_STRUCT_H #define SUB_STRUCT_H typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; #prag…

Convert::Binary::C で C 構造体をバイナリ変換 (基本)

C の構造体の書き方で、バイナリ変換したい。組込み関数の pack と unpack でもできるけど直感的でない。 Convert::Binary::C を使うと C の構造体にハッシュをつっこんでバイナリ変換できる。 ヘッダファイル 以下のようなヘッダファイルにある構造体を使う…