str.c
上传用户:xiaozhuqw
上传日期:2009-11-15
资源大小:1338k
文件大小:1k
源码类别:

网络

开发平台:

Unix_Linux

  1. /*
  2.  * zebra string function
  3.  *
  4.  * these functions are just very basic wrappers around exiting ones and
  5.  * do not offer the protection that might be expected against buffer
  6.  * overruns etc
  7.  */
  8. #include <zebra.h>
  9. #include "str.h"
  10. #ifndef HAVE_SNPRINTF
  11. /*
  12.  * snprint() is a real basic wrapper around the standard sprintf()
  13.  * without any bounds checking
  14.  */
  15. int
  16. snprintf(char *str, size_t size, const char *format, ...)
  17. {
  18.   va_list args;
  19.   va_start (args, format);
  20.   return vsprintf (str, format, args);
  21. }
  22. #endif
  23. #ifndef HAVE_STRLCPY
  24. /*
  25.  * strlcpy is a safer version of strncpy(), checking the total
  26.  * size of the buffer
  27.  */
  28. size_t
  29. strlcpy(char *dst, const char *src, size_t size)
  30. {
  31.   strncpy(dst, src, size);
  32.   return (strlen(dst));
  33. }
  34. #endif
  35. #ifndef HAVE_STRLCAT
  36. /*
  37.  * strlcat is a safer version of strncat(), checking the total
  38.  * size of the buffer
  39.  */
  40. size_t
  41. strlcat(char *dst, const char *src, size_t size)
  42. {
  43.   /* strncpy(dst, src, size - strlen(dst)); */
  44.   /* I've just added below code only for workable under Linux.  So
  45.      need rewrite -- Kunihiro. */
  46.   if (strlen (dst) + strlen (src) >= size)
  47.     return -1;
  48.   strcat (dst, src);
  49.   return (strlen(dst));
  50. }
  51. #endif