コード例 #1
0
static void
check_parms(pdc_core *pdc, const pdc_error_info *ei)
{
    const char *msg = ei->errmsg;
    const char *dollar;

    while ((dollar = strchr(msg, '$')) != (char *) 0)
    {
	if (pdc_isdigit(dollar[1]))
	{
	    int n = dollar[1] - '0';

	    if (ei->nparms < n || n < 1)
		pdc_panic(pdc, "illegal parameter '$%d' in error message %d",
				    n, ei->errnum);
	}
	else if (dollar[1] != '$')
	{
	    pdc_panic(pdc,
		"illegal '$' in error message %d", ei->errnum);
	}

	msg = dollar + 1;
    }
} /* check_parms */
コード例 #2
0
ファイル: pc_optparse.c プロジェクト: Vulcanior/IUP
/*
 * flags: PDC_INT_HEXADEC, PDC_INT_CASESENS
 */
int
pdc_get_keycode_num(pdc_core *pdc, const char *option, const char *i_keyword,
                    int flags, const pdc_keyconn *keyconn, int *o_num)
{
    static const char *fn = "pdc_get_keycode_num";
    char *keyword;
    int i, len, keycode;

    keyword = pdc_strdup_ext(pdc, i_keyword, 0, fn);
    len = (int) strlen(keyword);
    *o_num = -1;

    /* parse number */
    for (i = 0; i < len; i++)
    {
        if (pdc_isdigit(keyword[i]))
        {
            if (pdc_str2integer(&keyword[i], flags, o_num))
            {
                keyword[i] = 0;
            }
            else
            {
                pdc_set_errmsg(pdc, PDC_E_OPT_ILLINTEGER, option, &keyword[i],
                               0, 0);
            }
            break;
        }
    }

    if (flags & PDC_INT_CASESENS)
        keycode = pdc_get_keycode(keyword, keyconn);
    else
        keycode = pdc_get_keycode_ci(keyword, keyconn);

    if (keycode == PDC_KEY_NOTFOUND)
        pdc_set_errmsg(pdc, PDC_E_OPT_ILLKEYWORD, option, keyword, 0, 0);

    pdc_free(pdc, keyword);

    return keycode;
}