221 /* NOTE: Unfortunately older versions of ANSI C (e.g. C99) do not allow explicit identification of elements in initializers |
221 /* NOTE: Unfortunately older versions of ANSI C (e.g. C99) do not allow explicit identification of elements in initializers |
222 * e.g. {tv_sec = 1, tv_nsec = 300} |
222 * e.g. {tv_sec = 1, tv_nsec = 300} |
223 * They are therefore commented out. This however means that any change to the definition of IEC_TIMESPEC may require this |
223 * They are therefore commented out. This however means that any change to the definition of IEC_TIMESPEC may require this |
224 * macro to be updated too! |
224 * macro to be updated too! |
225 */ |
225 */ |
226 #define ld long double |
|
227 #define __time_to_timespec(sign,mseconds,seconds,minutes,hours,days) \ |
226 #define __time_to_timespec(sign,mseconds,seconds,minutes,hours,days) \ |
228 ((IEC_TIMESPEC){\ |
227 ((IEC_TIMESPEC){\ |
229 /*tv_sec =*/ ((long int) (((sign>=0)?1:-1)*((((ld)days*24 + (ld)hours)*60 + (ld)minutes)*60 + (ld)seconds + (ld)mseconds/1e3))), \ |
228 /*tv_sec =*/ ((long int) (((sign>=0)?1:-1)*((((long double)days*24 + (long double)hours)*60 + (long double)minutes)*60 + (long double)seconds + (long double)mseconds/1e3))), \ |
230 /*tv_nsec =*/ ((long int)(( \ |
229 /*tv_nsec =*/ ((long int)(( \ |
231 ((long double)(((sign>=0)?1:-1)*((((ld)days*24 + (ld)hours)*60 + (ld)minutes)*60 + (ld)seconds + (ld)mseconds/1e3))) - \ |
230 ((long double)(((sign>=0)?1:-1)*((((long double)days*24 + (long double)hours)*60 + (long double)minutes)*60 + (long double)seconds + (long double)mseconds/1e3))) - \ |
232 ((long int) (((sign>=0)?1:-1)*((((ld)days*24 + (ld)hours)*60 + (ld)minutes)*60 + (ld)seconds + (ld)mseconds/1e3))) \ |
231 ((long int) (((sign>=0)?1:-1)*((((long double)days*24 + (long double)hours)*60 + (long double)minutes)*60 + (long double)seconds + (long double)mseconds/1e3))) \ |
233 )*1e9))\ |
232 )*1e9))\ |
234 }) |
233 }) |
235 #undef ld |
|
236 |
234 |
237 |
235 |
238 |
236 |
239 |
237 |
240 /* NOTE: The following function was turned into a macro, so it could be used to initialize the initial value of TOD (TIME_OF_DAY) variables */ |
238 /* NOTE: The following function was turned into a macro, so it could be used to initialize the initial value of TOD (TIME_OF_DAY) variables */ |
248 ts.tv_nsec = (long int)((total_sec - ts.tv_sec)*1e9); |
246 ts.tv_nsec = (long int)((total_sec - ts.tv_sec)*1e9); |
249 |
247 |
250 return ts; |
248 return ts; |
251 } |
249 } |
252 */ |
250 */ |
253 #define ld long double |
|
254 #define __tod_to_timespec(seconds,minutes,hours) \ |
251 #define __tod_to_timespec(seconds,minutes,hours) \ |
255 ((IEC_TIMESPEC){\ |
252 ((IEC_TIMESPEC){\ |
256 /*tv_sec =*/ ((long int) ((((ld)hours)*60 + (ld)minutes)*60 + (ld)seconds)), \ |
253 /*tv_sec =*/ ((long int) ((((long double)hours)*60 + (long double)minutes)*60 + (long double)seconds)), \ |
257 /*tv_nsec =*/ ((long int)(( \ |
254 /*tv_nsec =*/ ((long int)(( \ |
258 ((long double)((((ld)hours)*60 + (ld)minutes)*60 + (ld)seconds)) - \ |
255 ((long double)((((long double)hours)*60 + (long double)minutes)*60 + (long double)seconds)) - \ |
259 ((long int) ((((ld)hours)*60 + (ld)minutes)*60 + (ld)seconds)) \ |
256 ((long int) ((((long double)hours)*60 + (long double)minutes)*60 + (long double)seconds)) \ |
260 )*1e9))\ |
257 )*1e9))\ |
261 }) |
258 }) |
262 #undef ld |
|
263 |
259 |
264 |
260 |
265 #define EPOCH_YEAR 1970 |
261 #define EPOCH_YEAR 1970 |
266 #define SECONDS_PER_MINUTE 60 |
262 #define SECONDS_PER_MINUTE 60 |
267 #define SECONDS_PER_HOUR (60 * SECONDS_PER_MINUTE) |
263 #define SECONDS_PER_HOUR (60 * SECONDS_PER_MINUTE) |