Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
/* 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;
}
Ejemplo n.º 3
0
Archivo: cli_port.c Proyecto: 5HT/mumps
/*
 * --------------------------------------------------
 * 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;
	}
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
/* 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;
}
Ejemplo n.º 7
0
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;
}
Ejemplo n.º 8
0
long simple_strtol(const char *cp, char **endp, unsigned int base)
{
	return(STRTOL(cp, endp, base));
}