Back to index

php5  5.3.10
Defines | Functions
timelib.c File Reference
#include "timelib.h"
#include <ctype.h>
#include <math.h>

Go to the source code of this file.

Defines

#define TIMELIB_TIME_FREE(m)
#define TIMELIB_LLABS(y)   (y < 0 ? (y * -1) : y)

Functions

timelib_timetimelib_time_ctor (void)
timelib_rel_timetimelib_rel_time_ctor (void)
timelib_timetimelib_time_clone (timelib_time *orig)
timelib_rel_timetimelib_rel_time_clone (timelib_rel_time *rel)
void timelib_time_tz_abbr_update (timelib_time *tm, char *tz_abbr)
void timelib_time_dtor (timelib_time *t)
void timelib_rel_time_dtor (timelib_rel_time *t)
timelib_time_offsettimelib_time_offset_ctor (void)
void timelib_time_offset_dtor (timelib_time_offset *t)
timelib_tzinfotimelib_tzinfo_ctor (char *name)
timelib_tzinfotimelib_tzinfo_clone (timelib_tzinfo *tz)
void timelib_tzinfo_dtor (timelib_tzinfo *tz)
char * timelib_get_tz_abbr_ptr (timelib_time *t)
void timelib_error_container_dtor (timelib_error_container *errors)
signed long timelib_date_to_int (timelib_time *d, int *error)
void timelib_decimal_hour_to_hms (double h, int *hour, int *min, int *sec)
void timelib_dump_date (timelib_time *d, int options)
void timelib_dump_rel_time (timelib_rel_time *d)

Define Documentation

#define TIMELIB_LLABS (   y)    (y < 0 ? (y * -1) : y)

Definition at line 31 of file timelib.c.

#define TIMELIB_TIME_FREE (   m)
Value:
if (m) {             \
              free(m);      \
              m = NULL;     \
       }                    \

Definition at line 25 of file timelib.c.


Function Documentation

signed long timelib_date_to_int ( timelib_time d,
int error 
)

Definition at line 177 of file timelib.c.

{
       timelib_sll ts;

       ts = d->sse;

       if (ts < LONG_MIN || ts > LONG_MAX) {
              if (error) {
                     *error = 1;
              }
              return 0;
       }
       if (error) {
              *error = 0;
       }
       return (signed long) d->sse;
}

Here is the caller graph for this function:

void timelib_decimal_hour_to_hms ( double  h,
int hour,
int min,
int sec 
)

Definition at line 195 of file timelib.c.

{
       *hour = floor(h);
       *min =  floor((h - *hour) * 60);
       *sec =  (h - *hour - ((float) *min / 60)) * 3600;
}
void timelib_dump_date ( timelib_time d,
int  options 
)

Definition at line 202 of file timelib.c.

{
       if ((options & 2) == 2) {
              printf("TYPE: %d ", d->zone_type);
       }
       printf("TS: %lld | %s%04lld-%02lld-%02lld %02lld:%02lld:%02lld",
              d->sse, d->y < 0 ? "-" : "", TIMELIB_LLABS(d->y), d->m, d->d, d->h, d->i, d->s);
       if (d->f > +0.0) {
              printf(" %.5f", d->f);
       }

       if (d->is_localtime) {
              switch (d->zone_type) {
                     case TIMELIB_ZONETYPE_OFFSET: /* Only offset */
                            printf(" GMT %05d%s", d->z, d->dst == 1 ? " (DST)" : "");
                            break;
                     case TIMELIB_ZONETYPE_ID: /* Timezone struct */
                            /* Show abbreviation if wanted */
                            if (d->tz_abbr) {
                                   printf(" %s", d->tz_abbr);
                            }
                            /* Do we have a TimeZone struct? */
                            if (d->tz_info) {
                                   printf(" %s", d->tz_info->name);
                            }
                            break;
                     case TIMELIB_ZONETYPE_ABBR:
                            printf(" %s", d->tz_abbr);
                            printf(" %05d%s", d->z, d->dst == 1 ? " (DST)" : "");
                            break;
              }
       }

       if ((options & 1) == 1) {
              if (d->have_relative) {
                     printf("%3lldY %3lldM %3lldD / %3lldH %3lldM %3lldS", 
                            d->relative.y, d->relative.m, d->relative.d, d->relative.h, d->relative.i, d->relative.s);
                     if (d->relative.first_last_day_of != 0) {
                            switch (d->relative.first_last_day_of) {
                                   case 1:
                                          printf(" / first day of");
                                          break;
                                   case 2:
                                          printf(" / last day of");
                                          break;
                            }
                     }
                     if (d->relative.have_weekday_relative) {
                            printf(" / %d.%d", d->relative.weekday, d->relative.weekday_behavior);
                     }
                     if (d->relative.have_special_relative) {
                            switch (d->relative.special.type) {
                                   case TIMELIB_SPECIAL_WEEKDAY:
                                          printf(" / %lld weekday", d->relative.special.amount);
                                          break;
                                   case TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH:
                                          printf(" / x y of z month");
                                          break;
                                   case TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH:
                                          printf(" / last y of z month");
                                          break;
                            }
                     }
              }
       }
       printf("\n");
}

Definition at line 270 of file timelib.c.

{
       printf("%3lldY %3lldM %3lldD / %3lldH %3lldM %3lldS (days: %lld)%s", 
              d->y, d->m, d->d, d->h, d->i, d->s, d->days, d->invert ? " inverted" : "");
       if (d->first_last_day_of != 0) {
              switch (d->first_last_day_of) {
                     case 1:
                            printf(" / first day of");
                            break;
                     case 2:
                            printf(" / last day of");
                            break;
              }
       }
       printf("\n");
}

Definition at line 162 of file timelib.c.

{
       int i;

       for (i = 0; i < errors->warning_count; i++) {
              free(errors->warning_messages[i].message);
       }
       free(errors->warning_messages);
       for (i = 0; i < errors->error_count; i++) {
              free(errors->error_messages[i].message);
       }
       free(errors->error_messages);
       free(errors);
}

Here is the caller graph for this function:

Definition at line 154 of file timelib.c.

{
       if (!t->sse_uptodate) {
              timelib_update_ts(t, NULL);
       };
       return t->tz_abbr;
}

Here is the call graph for this function:

Definition at line 62 of file timelib.c.

{
       timelib_rel_time *tmp = timelib_rel_time_ctor();
       memcpy(tmp, rel, sizeof(timelib_rel_time));
       return tmp;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 41 of file timelib.c.

{
       timelib_rel_time *t;
       t = calloc(1, sizeof(timelib_rel_time));

       return t;
}

Here is the caller graph for this function:

Definition at line 86 of file timelib.c.

Here is the caller graph for this function:

Definition at line 49 of file timelib.c.

{
       timelib_time *tmp = timelib_time_ctor();
       memcpy(tmp, orig, sizeof(timelib_time));
       if (orig->tz_abbr) {
              tmp->tz_abbr = strdup(orig->tz_abbr);
       }
       if (orig->tz_info) {
              tmp->tz_info = orig->tz_info;
       }
       return tmp;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 33 of file timelib.c.

{
       timelib_time *t;
       t = calloc(1, sizeof(timelib_time));

       return t;
}

Here is the caller graph for this function:

Definition at line 80 of file timelib.c.

Here is the caller graph for this function:

Definition at line 91 of file timelib.c.

{
       timelib_time_offset *t;
       t = calloc(1, sizeof(timelib_time_offset));

       return t;
}

Here is the caller graph for this function:

Definition at line 99 of file timelib.c.

Here is the caller graph for this function:

void timelib_time_tz_abbr_update ( timelib_time tm,
char *  tz_abbr 
)

Definition at line 69 of file timelib.c.

{
       unsigned int i;
       
       TIMELIB_TIME_FREE(tm->tz_abbr);
       tm->tz_abbr = strdup(tz_abbr);
       for (i = 0; i < strlen(tz_abbr); i++) {
              tm->tz_abbr[i] = toupper(tz_abbr[i]);
       }
}

Here is the caller graph for this function:

Definition at line 114 of file timelib.c.

{
       timelib_tzinfo *tmp = timelib_tzinfo_ctor(tz->name);
       tmp->ttisgmtcnt = tz->ttisgmtcnt;
       tmp->ttisstdcnt = tz->ttisstdcnt;
       tmp->leapcnt = tz->leapcnt;
       tmp->timecnt = tz->timecnt;
       tmp->typecnt = tz->typecnt;
       tmp->charcnt = tz->charcnt;
       
       tmp->trans = (int32_t *) malloc(tz->timecnt * sizeof(int32_t));
       tmp->trans_idx = (unsigned char*) malloc(tz->timecnt * sizeof(unsigned char));
       memcpy(tmp->trans, tz->trans, tz->timecnt * sizeof(int32_t));
       memcpy(tmp->trans_idx, tz->trans_idx, tz->timecnt * sizeof(unsigned char));

       tmp->type = (ttinfo*) malloc(tz->typecnt * sizeof(struct ttinfo));
       memcpy(tmp->type, tz->type, tz->typecnt * sizeof(struct ttinfo));

       tmp->timezone_abbr = (char*) malloc(tz->charcnt);
       memcpy(tmp->timezone_abbr, tz->timezone_abbr, tz->charcnt);

       tmp->leap_times = (tlinfo*) malloc(tz->leapcnt * sizeof(tlinfo));
       memcpy(tmp->leap_times, tz->leap_times, tz->leapcnt * sizeof(tlinfo));

       return tmp;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 105 of file timelib.c.

{
       timelib_tzinfo *t;
       t = calloc(1, sizeof(timelib_tzinfo));
       t->name = strdup(name);

       return t;
}

Here is the caller graph for this function:

Definition at line 141 of file timelib.c.

Here is the caller graph for this function: