C

続々々々アレ

fopen(3) の第二引数を "rb" にした理由が判った。"rb+" だとユーザに書き込み権限の無いファイルがオープンできないからだ。これ書いてると情け無くなるね。 結局、最初に "rb+" で fopen(3) して、エラーだったら "rb" で fopen(3) する様にした。つーか、…

元プログラム

こんな感じでした。 typedef struct hoge_tag { unsigned char *name; unsigned short type; void *p; } hoge_t; enum { TYPE_STR = 0, TYPE_INT, TYPE_MASK = 0x7f, TYPE_RO = 0x80, }; static const hoge_t hoge_tbl[] = { { "hoge", TYPE_STR, ... }, { "…

続駄目プログラマ養成講座

あー、また今日もやっちったよ。もう駄目ぽ。自壊、自粛、自刃。 元プログラムで「あー、リードオンリーの場合の処理してねーや」とか思って修正したソースが…。 while (p type & TYPE_RO)) { switch (p->type & TYPE_MASK) { ... } p++; /* リードオンリー…

駄目プログラマ養成講座

あー、久々にやっちまった感じが…。こんなのをやるたびに豆腐の角に頭ぶつけて氏にたくなるね。自戒、自壊、十戒。 #include enum { HOGE_A, HOGE_B, HOGE_C, HOGE_D, HOGE_E, HOGE_OTHER, HOGE_MAX }; static const char *hoge[HOGE_MAX] = { "A", "B", "C"…