static int read_config_file(serial_control_t *ctrl) { char mode[10], baudrate[20], bits[10], parity[10], stop[10]; if (read_conf_value("MODE", mode, tty_config) != 0) { error_printf("serial_config: get MODE failed\n"); return EXIT_FAILURE; } if (read_conf_value("BAUDRATE", baudrate, tty_config) != 0) { error_printf("serial_config: get BAUDRATE failed\n"); return EXIT_FAILURE; } if (read_conf_value("DATA_BITS", bits, tty_config) != 0) { error_printf("serial_config: get DATA_BITS failed\n"); return EXIT_FAILURE; } if (read_conf_value("PARITY", parity, tty_config) != 0) { error_printf("serial_config: get PARITY failed\n"); return EXIT_FAILURE; } if (read_conf_value("STOP_BITS", stop, tty_config) != 0) { error_printf("serial_config: get STOP_BITS failed\n"); return EXIT_FAILURE; } if ((strcmp(mode, "RAW") == 0)||(strcmp(mode, "raw") == 0)) { ctrl->mode = RAW_MODE; } else { ctrl->mode = NORMAL_MODE; } ctrl->speed = STRTOL(baudrate); ctrl->bits = STRTOL(bits); ctrl->parity = STRTOL(parity); ctrl->stop = STRTOL(stop); debug_printf("read_config_file -> %s\n", tty_config); debug_printf("----------------------------------\n"); debug_printf("serial_config: MODE=%s\n", mode); debug_printf("serial_config: BAUDRATE=%d\n", ctrl->speed); debug_printf("serial_config: DATA_BITS=%d\n", ctrl->bits); debug_printf("serial_config: PARITY=%s\n", parity); debug_printf("serial_config: STOP_BITS=%d\n", ctrl->stop); debug_printf("----------------------------------\n"); return EXIT_SUCCESS; }
/* extract_subst_tail: extract substitution tail from the command buffer */ int extract_subst_tail(int *flagp, long *np) { char delimiter; *flagp = *np = 0; if ((delimiter = *ibufp) == '\n') { rhbufi = 0; *flagp = GPR; return 0; } else if (extract_subst_template() == NULL) return ERR; else if (*ibufp == '\n') { *flagp = GPR; return 0; } else if (*ibufp == delimiter) ibufp++; if ('1' <= *ibufp && *ibufp <= '9') { STRTOL(*np, ibufp); return 0; } else if (*ibufp == 'g') { ibufp++; *flagp = GSG; return 0; } return 0; }
/* * -------------------------------------------------- * Convert string to number. * * Return: * TRUE - OK * FALSE - Could not convert to number * -------------------------------------------------- */ boolean_t cli_str_to_num(char *str, int4 *dst) { long result; int save_errno, base; save_errno = errno; errno = 0; if (cli_is_dcm(str)) base = 10; else base = 16; result = STRTOL(str, NULL, base); if ( #if INT_MAX < LONG_MAX (INT_MIN > result || INT_MAX < result) || /* outside INT range */ #endif (ERANGE == errno && (LONG_MIN == result || LONG_MAX == result)) || (0 == result && 0 != errno)) { /* out of range or other error */ *dst = 0; errno = save_errno; return FALSE; } else { *dst = (int4)result; errno = save_errno; return TRUE; } }
static bool toarith(VALUE * v) { if (v->type == string) { arith_t i; char *e; /* Don't interpret the empty string as an integer. */ /* Currently does not worry about overflow or int/long differences. */ i = STRTOL(v->u.s, &e, 10); if ((v->u.s == e) || *e) return 0; free(v->u.s); v->u.i = i; v->type = integer; } return 1; }
int main(int argc, char **argv, char **envp) { void (*signals[SIGNALS_NUMBER])(); uint32_t signum = DEFAULT_SIGNAL; /* constructor of signal raisers */ if(argc == 2) signum = STRTOL(argv[1], NULL, 10); signals_ctor(signals); FPRINTF(STDERR, "signal #%u will be used\n", signum); /* provoke the signal */ if(signum < SIGNALS_NUMBER) signals[signum](); /* not reached if the signal handler invoked */ FPRINTF(STDERR, "FAILED on signal #%u\n", signum); return ERRCOUNT; }
/* parse an entry reference string into routine, label & offset */ void lref_parse(unsigned char *label_ref, mstr* routine, mstr* label, int* offset) { unsigned char ch, *c, *c1; int i, label_len; error_def (ERR_RUNPARAMERR); routine->addr = label->addr = (char *)label_ref; *offset = 0; label_len = STRLEN((const char *)label_ref); for (i = 0, c = label_ref; i < label_len; i++) { ch = *c++; if (ch == '^' || ch == '+') { label->len = i; if (ch == '+') { *offset = (int)STRTOL((const char *)c, (char**)&c1, 10); if (c == c1 ||*c1 != '^') rts_error(VARLSTCNT(1) ERR_RUNPARAMERR); c = c1 + 1; } routine->addr = (char *)c; routine->len = INTCAST(label_ref + label_len - c); break; } } if (routine->addr == (char *)label_ref) { routine->len = label_len; routine->addr = (char *)label_ref; label->len = 0; } if (!is_ident(routine)) rts_error(VARLSTCNT(1) ERR_RUNPARAMERR); if (label->len && !is_ident(label)) rts_error(VARLSTCNT(1) ERR_RUNPARAMERR); routine->len = routine->len > MAX_MIDENT_LEN ? MAX_MIDENT_LEN : routine->len; label->len = label->len > MAX_MIDENT_LEN ? MAX_MIDENT_LEN : label->len; }
int main() { int argc; wchar_t **argv = CommandLineToArgvW(GetCommandLineW(), &argc); #else int main(int argc, char *argv[]) { #endif // _WIN32 is_fast = false; is_verbose = false; iterations = 15; depth = 1; max_depth = INT_MAX; #ifdef _WIN32 is_pause = !getenv("PROMPT"); #endif // _WIN32 int i; for (i = 1; i < argc && argv[i][0] == L'-'; i++) { #ifdef _WIN32 // do not pause if any options are given is_pause = false; #endif // _WIN32 int num_optargs = 0; for (int j = 1; argv[i][j]; j++) { switch (argv[i][j]) { case 'f': is_fast = true; break; case 'i': if (i < argc - 1) { iterations = STRTOL(argv[i + ++num_optargs], nullptr, 10); // strtol will return 0 on fail if (iterations == 0) { std::cerr << "There should be a positive number after -i option." << std::endl; PrintInfo(); return 1; } } break; case 'd': if (i < argc - 1) { max_depth = STRTOL(argv[i + ++num_optargs], nullptr, 10); // strtol will return 0 on fail if (max_depth == 0) { std::cerr << "There should be a positive number after -d option." << std::endl; PrintInfo(); return 1; } } break; case 'q': std::cout.setstate(std::ios::failbit); is_verbose = false; break; case 'v': std::cout.clear(); is_verbose = true; break; case '-': if (STRCMP(argv[i] + j + 1, "fastmode") == 0) { j += 7; argv[i][j + 1] = 'f'; } else if (STRCMP(argv[i] + j + 1, "iteration") == 0) { j += 8; argv[i][j + 1] = 'i'; } else if (STRCMP(argv[i] + j + 1, "max_depth") == 0) { j += 8; argv[i][j + 1] = 'd'; } else if (STRCMP(argv[i] + j + 1, "quiet") == 0) { j += 4; argv[i][j + 1] = 'q'; } else if (STRCMP(argv[i] + j + 1, "verbose") == 0) { j += 6; argv[i][j + 1] = 'v'; } else if (STRCMP(argv[i] + j + 1, "keep-exif") == 0) { j += 9; Jpeg::keep_exif = true; } else { #ifdef _WIN32 char mbs[64] = { 0 }; WideCharToMultiByte(CP_ACP, 0, argv[i] + j + 1, -1, mbs, sizeof(mbs) - 1, nullptr, nullptr); std::cerr << "Unknown option: " << mbs << std::endl; #else std::cerr << "Unknown option: " << argv[i] + j + 1 << std::endl; #endif // _WIN32 PrintInfo(); return 1; } break; default: std::cerr << "Unknown option: " << (char)argv[i][j] << std::endl; PrintInfo(); return 1; } } i += num_optargs; } if (i == argc) { std::cerr << "No file path provided." << std::endl; PrintInfo(); return 1; } std::cout << std::fixed; std::cout.precision(2); // support multiple input file do { if (IsDirectory(argv[i])) { // directory TraverseDirectory(argv[i], ProcessFile); } else { // file ProcessFile(argv[i]); } } while (++i < argc); PauseIfNotTerminal(); return 0; }
long simple_strtol(const char *cp, char **endp, unsigned int base) { return(STRTOL(cp, endp, base)); }