Remove time.string and time.fromstring builtins

They are of dubious value, and the C implementation uses #if.
This commit is contained in:
Lassi Kortela 2019-08-09 21:50:52 +03:00
parent 36e2057616
commit e19fe0b8bd
4 changed files with 0 additions and 59 deletions

View File

@ -328,26 +328,6 @@ static double todouble(value_t a, char *fname)
type_error(fname, "number", a); type_error(fname, "number", a);
} }
static value_t fl_time_string(value_t *args, uint32_t nargs)
{
argcount("time.string", nargs, 1);
double t = todouble(args[0], "time.string");
char buf[64];
timestring(t, buf, sizeof(buf));
return string_from_cstr(buf);
}
static value_t fl_time_fromstring(value_t *args, uint32_t nargs)
{
argcount("time.fromstring", nargs, 1);
char *ptr = tostring(args[0], "time.fromstring");
double t = parsetime(ptr);
int64_t it = (int64_t)t;
if ((double)it == t && fits_fixnum(it))
return fixnum(it);
return mk_double(t);
}
static value_t fl_path_cwd(value_t *args, uint32_t nargs) static value_t fl_path_cwd(value_t *args, uint32_t nargs)
{ {
if (nargs > 1) if (nargs > 1)
@ -502,8 +482,6 @@ static struct builtinspec builtin_info[] = {
{ "vector.alloc", fl_vector_alloc }, { "vector.alloc", fl_vector_alloc },
{ "time.now", fl_time_now }, { "time.now", fl_time_now },
{ "time.string", fl_time_string },
{ "time.fromstring", fl_time_fromstring },
{ "rand", fl_rand }, { "rand", fl_rand },
{ "rand.uint32", fl_rand32 }, { "rand.uint32", fl_rand32 },

View File

@ -78,38 +78,6 @@ double clock_now()
#endif #endif
} }
void timestring(double seconds, char *buffer, size_t len)
{
time_t tme = (time_t)seconds;
#if defined(LINUX) || defined(MACOSX) || defined(OPENBSD) || defined(FREEBSD)
char *fmt = "%c"; /* needed to suppress GCC warning */
struct tm tm;
localtime_r(&tme, &tm);
strftime(buffer, len, fmt, &tm);
#else
static char *wdaystr[] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
static char *monthstr[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
struct tm *tm;
int hr;
tm = localtime(&tme);
hr = tm->tm_hour;
if (hr > 12)
hr -= 12;
if (hr == 0)
hr = 12;
snprintf(buffer, len, "%s %02d %s %d %02d:%02d:%02d %s %s",
wdaystr[tm->tm_wday], tm->tm_mday, monthstr[tm->tm_mon],
tm->tm_year + 1900, hr, tm->tm_min, tm->tm_sec,
tm->tm_hour > 11 ? "PM" : "AM", "");
#endif
}
#if defined(LINUX) || defined(MACOSX) || defined(OPENBSD) || defined(FREEBSD) #if defined(LINUX) || defined(MACOSX) || defined(OPENBSD) || defined(FREEBSD)
extern char *strptime(const char *s, const char *format, struct tm *tm); extern char *strptime(const char *s, const char *format, struct tm *tm);
double parsetime(const char *str) double parsetime(const char *str)

View File

@ -1,6 +1,5 @@
uint64_t i64time(); uint64_t i64time();
double clock_now(); double clock_now();
void timestring(double seconds, char *buffer, size_t len);
double parsetime(const char *str); double parsetime(const char *str);
void sleep_ms(int ms); void sleep_ms(int ms);
void timeparts(int32_t *buf, double t); void timeparts(int32_t *buf, double t);

View File

@ -287,10 +287,6 @@
(assert (not (equal? (hash (iota 41)) (assert (not (equal? (hash (iota 41))
(hash (iota 42))))) (hash (iota 42)))))
(if (top-level-bound? 'time.fromstring)
(assert (let ((ts (time.string (time.now))))
(eqv? ts (time.string (time.fromstring ts))))))
(assert (equal? 0.0 (+ 0.0 0))) ; tests that + no longer does inexact->exact (assert (equal? 0.0 (+ 0.0 0))) ; tests that + no longer does inexact->exact
(assert (equal? 1.0 (* 1.0 1))) ; tests that * no longer does inexact->exact (assert (equal? 1.0 (* 1.0 1))) ; tests that * no longer does inexact->exact