int main(void) { uint32_t date; uint64_t real; printf("Scanned %d", scan_arrowy(3, 0, 0)); _getch(); system("CLS"); date = scan_date(); printf("Scanned %d/%d/%d", date_day(date), date_month(date), date_year(date)); _getch(); system("CLS"); real = scan_real(18, 1); printf("%d,%d", real_whole(real), real_decimal(real)); _getch(); system("CLS"); return 0; }
static inline int date_settime(FAR struct nsh_vtbl_s *vtbl, FAR const char *name, FAR char *newtime) { struct timespec ts; struct tm tm; FAR char *token; FAR char *saveptr; long result; int ret; /* Only this date format is supported: MMM DD HH:MM:SS YYYY */ /* Get the month abbreviation */ token = strtok_r(newtime, " \t",&saveptr); if (token == NULL) { goto errout_bad_parm; } tm.tm_mon = date_month(token); if (tm.tm_mon < 0) { goto errout_bad_parm; } /* Get the day of the month. NOTE: Accepts day-of-month up to 31 for all months */ token = strtok_r(NULL, " \t",&saveptr); if (token == NULL) { goto errout_bad_parm; } result = strtol(token, NULL, 10); if (result < 1 || result > 31) { goto errout_bad_parm; } tm.tm_mday = (int)result; /* Get the hours */ token = strtok_r(NULL, " \t:", &saveptr); if (token == NULL) { goto errout_bad_parm; } result = strtol(token, NULL, 10); if (result < 0 || result > 23) { goto errout_bad_parm; } tm.tm_hour = (int)result; /* Get the minutes */ token = strtok_r(NULL, " \t:", &saveptr); if (token == NULL) { goto errout_bad_parm; } result = strtol(token, NULL, 10); if (result < 0 || result > 59) { goto errout_bad_parm; } tm.tm_min = (int)result; /* Get the seconds */ token = strtok_r(NULL, " \t:", &saveptr); if (token == NULL) { goto errout_bad_parm; } result = strtol(token, NULL, 10); if (result < 0 || result > 61) { goto errout_bad_parm; } tm.tm_sec = (int)result; /* And finally the year */ token = strtok_r(NULL, " \t", &saveptr); if (token == NULL) { goto errout_bad_parm; } result = strtol(token, NULL, 10); if (result < 1900 || result > 2100) { goto errout_bad_parm; } tm.tm_year = (int)result - 1900; /* Convert this to the right form, then set the timer */ ts.tv_sec = mktime(&tm); ts.tv_nsec = 0; ret = clock_settime(CLOCK_REALTIME, &ts); if (ret < 0) { nsh_output(vtbl, g_fmtcmdfailed, name, "clock_settime", NSH_ERRNO); return ERROR; } return OK; errout_bad_parm: nsh_output(vtbl, g_fmtarginvalid, name); return ERROR; }