1 /*
2  * Copyright (c) 2012 by Farsight Security, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef MY_PRINT_STRING_H
18 #define MY_PRINT_STRING_H
19 
20 #include <ctype.h>
21 #include <stdio.h>
22 #include <stdint.h>
23 
24 static inline void
print_string(const void * data,size_t len,FILE * out)25 print_string(const void *data, size_t len, FILE *out)
26 {
27 	uint8_t *str = (uint8_t *) data;
28 	fputc('"', out);
29 	while (len-- != 0) {
30 		unsigned c = *(str++);
31 		if (isprint(c)) {
32 			if (c == '"')
33 				fputs("\\\"", out);
34 			else
35 				fputc(c, out);
36 		} else {
37 			fprintf(out, "\\x%02x", c);
38 		}
39 	}
40 	fputc('"', out);
41 }
42 
43 #endif /* MY_PRINT_STRING_H */
44