Esempio n. 1
0
long
getmntoptnum(mntoptparse_t mp, const char *opt)
{
	char *ep;
	long rv;
	void (*fun)(int, const char *, ...) = NULL;
	const char *val = getmntoptstr(mp, opt);

	if (val == NULL) {
		if (getmnt_silent == 0)
			errx(1, "Missing %s argument", opt);
		else
			return -1;
	}

	errno = 0;
	rv = strtol(val, &ep, 0);

	if (*ep)
		fun = errx;

	if (errno == ERANGE && (rv == LONG_MAX || rv == LONG_MIN))
		fun = err;

	if (fun) {
		if (getmnt_silent != 0)
			return -1;
		(*fun)(1, "Invalid %s argument `%s'", opt, val);
	}
	return rv;
}
Esempio n. 2
0
static char*
egetmntoptstr(mntoptparse_t mp, const char *k)
{
    const char *v;
    char *p;

    v = getmntoptstr(mp, k);
    if (v == NULL)
        return NULL;

    p = strdup(v);
    if (p == NULL)
        err(1, NULL);

    return p;
}