Esempio n. 1
0
void					p_openscope(t_pars *e, t_lex **node)
{
	if (e->step == PBEGIN)
		add_err(e, SCOPEMISS, (*node)->value);
	e->scope++;
	if (e->scope > 2)
		add_err(e, SCOPEMISS, (*node)->value);
}
Esempio n. 2
0
static void
scan_cb (int si, int sni)
{
    put_err_service (aa_service_name (aa_service (si)), ERR_DEPEND, 0);
    add_err (": ");
    add_err (aa_service_name (aa_service (sni)));
    end_err ();
    add_to_list (&ga_depend, si, 0);
    check_essential (si);
}
Esempio n. 3
0
static void				p_perlin(t_pars *e, t_lex **node)
{
	(*node) = (*node)->next;
	if (!*node)
		add_err(e, BADARG, "");
	else if ((*node)->token_type != VALUE)
		add_err(e, BADARG, (*node)->value);
	else
		e->cur->perlin = atof((*node)->value);
}
Esempio n. 4
0
void					p_reflection(t_pars *e, t_lex **node)
{
	double		reflection;

	if (!(*node)->next)
		add_err(e, BADARG, "");
	else
		*node = (*node)->next;
	reflection = atof((*node)->value);
	if (reflection < 0 || reflection > 1)
		add_err(e, BADARG, (*node)->value);
	else
		e->cur->reflection = reflection;
}
Esempio n. 5
0
void					p_refraction(t_pars *e, t_lex **node)
{
	double		refraction;

	if (!(*node)->next || (*node)->next->token_type != VALUE)
	{
		add_err(e, BADARG, "");
		return ;
	}
	*node = (*node)->next;
	refraction = atof((*node)->value);
	if (refraction < 0)
		add_err(e, BADARG, (*node)->value);
	else
		e->cur->refraction = refraction;
}
Esempio n. 6
0
void					p_plane_value(t_pars *e, t_lex **node)
{
	t_point	p;

	if (e->substep != SSBEGIN)
	{
		add_err(e, UNKOBJ, (*node)->value);
		return ;
	}
	p.z = atof((*node)->value);
	e->cur->coord = p;
}
Esempio n. 7
0
void					p_plane_word(t_pars *e, t_lex **node)
{
	char		*tmp;

	if (check(e, node))
		return ;
	tmp = (*node)->value;
	if (!strcmp(tmp, "pigment"))
		e->substep = SSPIGMENT;
	else if (!strcmp(tmp, "texture"))
		e->substep = SSTEXTURE;
	else if (!strcmp(tmp, "finish"))
		e->substep = SSFINISH;
	else if (!strcmp(tmp, "damier"))
		e->substep = SSDAMIER;
	else if (!strcmp(tmp, "end"))
		p_limit(e, node);
	else if (!strcmp(tmp, "perlin"))
		p_perlin(e, node);
	else
		add_err(e, UNKOBJ, tmp);
}
Esempio n. 8
0
static int
add_service (const char *name, void *data)
{
    int si = -1;
    int type;
    int r;

    type = aa_get_service (name, &si, 1);
    if (type < 0)
        r = type;
    else
        r = aa_mark_service (mode, si, type == AA_SERVICE_FROM_MAIN, no_wants, autoload_cb);
    if (r < 0)
    {
        if (r == -ERR_UNKNOWN)
        {
            put_err_service (name, ERR_UNKNOWN, 1);
            add_name_to_ga (name, &ga_unknown);
        }
        else if (r == -ERR_IO)
        {
            /* ERR_IO from aa_get_service() means we don't have a si (it is
             * actually set to the return value); but from aa_mark_service()
             * (e.g. to read "needs") then we do */
            if (si < 0)
            {
                put_err_service (name, ERR_IO, 1);
                add_name_to_ga (name, &ga_io);
            }
            else
            {
                int e = errno;

                put_err_service (name, ERR_IO, 0);
                add_err (": ");
                add_err (strerror (e));
                end_err ();

                add_to_list (&ga_failed, si, 0);
                check_essential (si);
            }
        }
        else if (r == -ERR_ALREADY_UP)
        {
            if (!(mode & AA_MODE_IS_DRY))
                put_title (1, name, errmsg[-r], 1);
            ++nb_already;
            r = 0;
        }
        else
        {
            aa_service *s = aa_service (si);
            const char *msg = aa_service_status_get_msg (&s->st);
            int has_msg;

            has_msg = s->st.event == AA_EVT_ERROR && s->st.code == -r && !!msg;
            put_err_service (name, -r, !has_msg);
            if (has_msg)
            {
                add_err (": ");
                add_err (msg);
                end_err ();
            }

            add_to_list ((r == -ERR_DEPEND) ? &ga_depend : &ga_failed, si, 0);
            check_essential (si);
        }
    }
    else
        r = 0;

    return r;
}