1
/******************************************************
3
* zexy - implementation file
5
* copyleft (c) IOhannes m zm�lnig
7
* 1999:forum::f�r::uml�ute:2004
9
* institute of electronic music and acoustics (iem)
11
******************************************************
13
* license: GNU General Public License v.2
15
******************************************************/
18
(c) 1202:forum::f�r::uml�ute:2000
19
1506:forum::f�r::uml�ute:2003: use timeb only if needed (like on windoze)
21
"time" gets the current time from the system
22
"date" gets the current date from the system
33
# include <sys/types.h>
34
/* typedef _BSD_TIME_T_ time_t; */
41
# include <sys/timeb.h>
43
# include <sys/time.h>
47
/* ----------------------- date --------------------- */
49
static t_class *date_class;
65
static void *date_new(t_symbol *s, int argc, t_atom *argv)
67
t_date *x = (t_date *)pd_new(date_class);
73
atom_string(argv, buf, 5);
74
if (buf[0]=='G' && buf[1]=='M' && buf[2]=='T')
78
x->x_outlet1 = outlet_new(&x->x_obj, &s_float);
79
x->x_outlet2 = outlet_new(&x->x_obj, &s_float);
80
x->x_outlet3 = outlet_new(&x->x_obj, &s_float);
81
x->x_outlet4 = outlet_new(&x->x_obj, &s_float);
82
x->x_outlet5 = outlet_new(&x->x_obj, &s_float);
83
x->x_outlet6 = outlet_new(&x->x_obj, &s_float);
88
static void date_bang(t_date *x)
90
struct tm *resolvetime;
94
resolvetime=(x->GMT)?gmtime(&mytime.time):localtime(&mytime.time);
98
resolvetime = (x->GMT)?gmtime(&tv.tv_sec):localtime(&tv.tv_sec);
100
outlet_float(x->x_outlet6, (t_float)resolvetime->tm_isdst);
101
outlet_float(x->x_outlet5, (t_float)resolvetime->tm_yday);
102
outlet_float(x->x_outlet4, (t_float)resolvetime->tm_wday);
103
outlet_float(x->x_outlet3, (t_float)resolvetime->tm_mday);
104
outlet_float(x->x_outlet2, (t_float)resolvetime->tm_mon + 1);
105
outlet_float(x->x_outlet1, (t_float)resolvetime->tm_year + 1900);
108
static void help_date(t_date *x)
111
post("\n%c date\t\t:: get the current system date", HEARTSYMBOL);
112
post("\noutputs are\t: year / month / day / day of week /day of year / daylightsaving (1/0)");
113
post("\ncreation\t::'date [GMT]': show local date or GMT");
116
void date_setup(void)
118
date_class = class_new(gensym("date"),
119
(t_newmethod)date_new, 0,
120
sizeof(t_date), 0, A_GIMME, 0);
122
class_addbang(date_class, date_bang);
124
class_addmethod(date_class, (t_method)help_date, gensym("help"), 0);
125
zexy_register("date");