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