summaryrefslogtreecommitdiffstats
path: root/src/appl/telnet/libtelnet/parsetos.c
blob: eb34ddf43b933901f432464670cc03ecf0540e65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/*
 * The routine parsetos() for UNICOS 6.0/6.1 systems.  This
 * is part of UNICOS 7.0 and later.
 */
#include <stdio.h>
#include <sys/types.h>
#include <netdb.h>
#include <errno.h>


#define	MIN_TOS	0
#define	MAX_TOS	255

int
parsetos(name, proto)
char	*name;
char	*proto;
{
	register char	*c;
	int		tos;
	struct tosent	*tosp;

	tosp = gettosbyname(name, proto);
	if (tosp) {
		tos = tosp->t_tos;
	} else {
		for (c = name; *c; c++) {
			if (*c < '0' || *c > '9') {
				errno = EINVAL;
				return (-1);
			}
		}
		tos = (int)strtol(name, (char **)NULL, 0);
	}
	if (tos < MIN_TOS || tos > MAX_TOS) {
		errno = ERANGE;
		return (-1);
	}
	return (tos);
}