void inc_day(dstime *t, int i) { t->day += i; if(t->day >= monthdays[t->month]) { inc_month(t, 1); t->day = 1; } }
static void do_range_limit_days_relative(timelib_sll *base_y, timelib_sll *base_m, timelib_sll *y, timelib_sll *m, timelib_sll *d, timelib_sll invert) { timelib_sll leapyear; timelib_sll month, year; timelib_sll days; do_range_limit(1, 13, 12, base_m, base_y); year = *base_y; month = *base_m; /* printf( "S: Y%d M%d %d %d %d %d\n", year, month, *y, *m, *d, days); */ if (!invert) { while (*d < 0) { dec_month(&year, &month); leapyear = timelib_is_leap(year); days = leapyear ? days_in_month_leap[month] : days_in_month[month]; /* printf( "I Y%d M%d %d %d %d %d\n", year, month, *y, *m, *d, days); */ *d += days; (*m)--; } } else { while (*d < 0) { leapyear = timelib_is_leap(year); days = leapyear ? days_in_month_leap[month] : days_in_month[month]; /* printf( "I Y%d M%d %d %d %d %d\n", year, month, *y, *m, *d, days); */ *d += days; (*m)--; inc_month(&year, &month); } } /* printf( "E: Y%d M%d %d %d %d %d\n", year, month, *y, *m, *d, days); */ }
static inline void inc_settime_month(struct UI *me) { inc_month(&me->settime); }
static void inc_quarter(struct tm *tm) { inc_month(tm); inc_month(tm); inc_month(tm); }