xref: /netbsd-src/external/ibm-public/postfix/dist/src/util/allascii.c (revision 33881f779a77dce6440bdc44610d94de75bebefe)
1 /*	$NetBSD: allascii.c,v 1.3 2020/03/18 19:05:21 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 /*	Wietse Venema
36 /*	Google, Inc.
37 /*	111 8th Avenue
38 /*	New York, NY 10011, USA
39 /*--*/
40 
41 /* System library. */
42 
43 #include <sys_defs.h>
44 #include <ctype.h>
45 #include <string.h>
46 
47 /* Utility library. */
48 
49 #include "stringops.h"
50 
51 /* allascii_len - return true if string is all ASCII */
52 
allascii_len(const char * string,ssize_t len)53 int     allascii_len(const char *string, ssize_t len)
54 {
55     const char *cp;
56     int     ch;
57 
58     if (len < 0)
59 	len = strlen(string);
60     if (len == 0)
61 	return (0);
62     for (cp = string; cp < string + len
63 	 && (ch = *(unsigned char *) cp) != 0; cp++)
64 	if (!ISASCII(ch))
65 	    return (0);
66     return (1);
67 }
68