/* * call-seq: * time <=> other_time => -1, 0, +1 * time <=> numeric => -1, 0, +1 * * Comparison---Compares <i>time</i> with <i>other_time</i> or with * <i>numeric</i>, which is the number of seconds (possibly * fractional) since epoch. * * t = Time.now #=> Wed Apr 09 08:56:03 CDT 2003 * t2 = t + 2592000 #=> Fri May 09 08:56:03 CDT 2003 * t <=> t2 #=> -1 * t2 <=> t #=> 1 * t <=> t #=> 0 */ static VALUE time_cmp(time1, time2) VALUE time1, time2; { struct time_object *tobj1, *tobj2; GetTimeval(time1, tobj1); if (TYPE(time2) == T_DATA && RDATA(time2)->dfree == time_free) { GetTimeval(time2, tobj2); if (tobj1->tv.tv_sec == tobj2->tv.tv_sec) { if (tobj1->tv.tv_usec == tobj2->tv.tv_usec) return INT2FIX(0); if (tobj1->tv.tv_usec > tobj2->tv.tv_usec) return INT2FIX(1); return INT2FIX(-1); } if (tobj1->tv.tv_sec > tobj2->tv.tv_sec) return INT2FIX(1); return INT2FIX(-1); } return Qnil; }