Пример #1
0
static int
varisset(char *name, int nulok)
{

	if (*name == '!')
		return backgndpidset();
	else if (*name == '@' || *name == '*') {
		if (*shellparam.p == NULL)
			return 0;

		if (nulok) {
			char **av;

			for (av = shellparam.p; *av; av++)
				if (**av != '\0')
					return 1;
			return 0;
		}
	} else if (is_digit(*name)) {
		char *ap;
		int num = atoi(name);

		if (num > shellparam.nparam)
			return 0;

		if (num == 0)
			ap = arg0;
		else
			ap = shellparam.p[num - 1];

		if (nulok && (ap == NULL || *ap == '\0'))
			return 0;
	}
	return 1;
}
Пример #2
0
static int32_t
varisset(const_cstring_t name, int32_t nulok)
{
    if (*name == '!')
        return backgndpidset();
    else if (*name == '@' || *name == '*')
    {
        if (*shellparam.p == NULL)
            return 0;
        if (nulok)
        {
            cstring_t* av;
            for (av = shellparam.p; *av; av++)
                if (**av != '\0')
                    return 1;
            return 0;
        }
    }
    else if (is_digit(*name))
    {
        cstring_t ap;
        intptr_t num;
        errno = 0;
        num = (intptr_t)strtol(name, NULL, 10);
        if (errno != 0 || num > shellparam.nparam)
            return 0;
        if (num == 0)
            ap = arg0;
        else
            ap = shellparam.p[num - 1];
        if (nulok && (ap == NULL || *ap == '\0'))
            return 0;
    }
    return 1;
}