倉田と申します。読むばっかりで、初めてお便りを出します。

もしかかて最近話題になっていたらごめんなさい。

ruby 1.4.2 で、組込関数の test ですけれど、引数を2個持つ cmd( =,<,> など)
について、unknown command と表示されて止まってしまいます。ソースをちょっと覗
いてみたら、以下(a)が該当する部分ではないかと思い、(b)のように修正した
らうまく動きました。ソース全部を見てるわけではないので、修正して良いものかど
うか また このような修正で問題ないのかどうか教えて下さい。


file.c :1522〜

(a) オリジナル

 switch (cmd) {
   case '-':
     if (st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino)
  return Qtrue;
     break;

   case '=':
     if (st1.st_mtime == st2.st_mtime) return Qtrue;
     break;

   case '>':
     if (st1.st_mtime > st2.st_mtime) return Qtrue;
     break;

   case '<':
     if (st1.st_mtime < st2.st_mtime) return Qtrue;
     break;
 }
    }
    /* unknown command */
    rb_raise(rb_eArgError, "unknown command ?%c", cmd);
    return Qnil;  /* not reached */
}



(b) 修正版

 switch (cmd) {
   case '-':
     return ((st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino) ? Qtrue
: Qfalse);
     break;

   case '=':
     return ((st1.st_mtime == st2.st_mtime) ? Qtrue : Qfalse);
     break;

   case '>':
     return ((st1.st_mtime > st2.st_mtime) ? Qtrue : Qfalse);
     break;

   case '<':
     return ((st1.st_mtime < st2.st_mtime) ? Qtrue : Qfalse);
     break;
 }
    }
    /* unknown command */
    rb_raise(rb_eArgError, "unknown command ?%c", cmd);
    return Qnil;  /* not reached */



---- 以上