string.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. #include "common/string.h"
  19. #include <stdarg.h>
  20. #include <stdio.h>
  21. #include <stdlib.h>
  22. void hex_buf_print(FILE *fp, const void *buf, int32_t buf_len,
  23. const char *fmt, ...)
  24. {
  25. int32_t i, j = 0;
  26. va_list ap;
  27. const uint8_t *b = buf;
  28. va_start(ap, fmt);
  29. vfprintf(fp, fmt, ap);
  30. va_end(ap);
  31. for (i = 0; i < buf_len; i++) {
  32. const char *suffix = " ";
  33. if (++j == 8) {
  34. suffix = "\n";
  35. j = 0;
  36. }
  37. fprintf(fp, "%02x%s", b[i], suffix);
  38. }
  39. }
  40. // vim: ts=4:sw=4:tw=79:et