xref: /netbsd-src/external/ibm-public/postfix/dist/src/util/allascii.c (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1 /*	$NetBSD: allascii.c,v 1.2 2017/02/14 01:16:48 christos Exp $	*/
2 
3 /*++
4 /* NAME
5 /*	allascii 3
6 /* SUMMARY
7 /*	predicate if string is all ASCII
8 /* SYNOPSIS
9 /*	#include <stringops.h>
10 /*
11 /*	int	allascii(buffer)
12 /*	const char *buffer;
13 /*
14 /*	int	allascii_len(buffer, len)
15 /*	const char *buffer;
16 /*	ssize_t	len;
17 /* DESCRIPTION
18 /*	allascii() determines if its argument is an all-ASCII string.
19 /*
20 /*	Arguments:
21 /* .IP buffer
22 /*	The null-terminated input string.
23 /* .IP len
24 /*	The string length, -1 to determine the length dynamically.
25 /* LICENSE
26 /* .ad
27 /* .fi
28 /*	The Secure Mailer license must be distributed with this software.
29 /* AUTHOR(S)
30 /*	Wietse Venema
31 /*	IBM T.J. Watson Research
32 /*	P.O. Box 704
33 /*	Yorktown Heights, NY 10598, USA
34 /*--*/
35 
36 /* System library. */
37 
38 #include <sys_defs.h>
39 #include <ctype.h>
40 #include <string.h>
41 
42 /* Utility library. */
43 
44 #include "stringops.h"
45 
46 /* allascii_len - return true if string is all ASCII */
47 
48 int     allascii_len(const char *string, ssize_t len)
49 {
50     const char *cp;
51     int     ch;
52 
53     if (len < 0)
54 	len = strlen(string);
55     if (len == 0)
56 	return (0);
57     for (cp = string; cp < string + len
58 	 && (ch = *(unsigned char *) cp) != 0; cp++)
59 	if (!ISASCII(ch))
60 	    return (0);
61     return (1);
62 }
63