1 
2 /* Example dynamically-loaded Racket extension, but not a good one.
3 
4    For example extensions, see plt/pkgs/mzscheme/mzscheme/examples. */
5 
6 #include "escheme.h"
7 #include <time.h>
8 
sch_date(int argc,Scheme_Object ** argv)9 static Scheme_Object *sch_date(int argc, Scheme_Object **argv)
10 {
11   time_t clock;
12   struct tm *now;
13   char *str;
14 
15   if (argc)
16     scheme_wrong_count("date", 0, 0, argc, argv);
17 
18   time(&clock);
19   now = localtime(&clock);
20   str = asctime(now);
21 
22   /* Get rid of newline */
23   str[24] = 0;
24 
25   return scheme_make_string(str);
26 }
27 
scheme_reload(Scheme_Env * env)28 Scheme_Object *scheme_reload(Scheme_Env *env)
29 {
30   scheme_add_global("date", scheme_make_prim(sch_date), env);
31 
32   return scheme_void;
33 }
34 
scheme_initialize(Scheme_Env * env)35 Scheme_Object *scheme_initialize(Scheme_Env *env)
36 {
37   return scheme_reload(env);
38 }
39