diff options
author | mukesh agrawal <quiche@google.com> | 2016-04-11 15:52:52 -0700 |
---|---|---|
committer | mukesh agrawal <quiche@google.com> | 2016-04-12 15:38:28 -0700 |
commit | e31290e1c2eebf70c5ab22091a9520c7a001161e (patch) | |
tree | 3d1f33366130537c9327c54e2cd572e0ee58455c /service | |
parent | 94e8f71b884e11abb8c46e69467af96f17d6423e (diff) |
wifi service: add utility to check printability
When logging data, it's useful to know whether or not
the data is plain ASCII. (If so, we can print the
data raw. Otherwise, we need to base64 encode the data.)
To meet this need: add a utility method to check if a byte
buffer contains (only) printable ASCII.
BUG=27554392
TEST=unit tests
Change-Id: If818bc378c6f146e7517f6ae4bb36b4b5bb8db48
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/util/StringUtil.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/util/StringUtil.java b/service/java/com/android/server/wifi/util/StringUtil.java new file mode 100644 index 000000000..813b85b95 --- /dev/null +++ b/service/java/com/android/server/wifi/util/StringUtil.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wifi.util; + +/** Basic string utilities */ +public class StringUtil { + static final byte ASCII_PRINTABLE_MIN = ' '; + static final byte ASCII_PRINTABLE_MAX = '~'; + + /** Returns true if-and-only-if |byteArray| can be safely printed as ASCII. */ + public static boolean isAsciiPrintable(byte[] byteArray) { + if (byteArray == null) { + return true; + } + + for (byte b : byteArray) { + switch (b) { + // Control characters which actually are printable. Fall-throughs are deliberate. + case 0x07: // bell ('\a' not recognized in Java) + case '\f': // form feed + case '\n': // new line + case '\t': // horizontal tab + case 0x0b: // vertical tab ('\v' not recognized in Java) + continue; + } + + if (b < ASCII_PRINTABLE_MIN || b > ASCII_PRINTABLE_MAX) { + return false; + } + } + + return true; + } +} |