MCPcopy Create free account
hub / github.com/eggert/tz / my_snprintf

Function my_snprintf

zdump.c:872–901  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

870#if !HAVE_SNPRINTF
871# include <stdarg.h>
872ATTRIBUTE_FORMAT((printf, 3, 4)) static int
873my_snprintf(char *s, size_t size, char const *format, ...)
874{
875 int n;
876 va_list args;
877 char const *arg;
878 char *cp;
879 size_t arglen, slen;
880 char buf[1024];
881 va_start(args, format);
882 if (strcmp(format, "%s") == 0) {
883 arg = va_arg(args, char const *);
884 arglen = strlen(arg);
885 } else {
886 n = vsprintf(buf, format, args);
887 if (n < 0) {
888 va_end(args);
889 return n;
890 }
891 arg = buf;
892 arglen = n;
893 }
894 slen = arglen < size ? arglen : size - 1;
895 cp = s;
896 cp = mempcpy(cp, arg, slen);
897 *cp = '\0';
898 n = arglen <= INT_MAX ? arglen : -1;
899 va_end(args);
900 return n;
901}
902# define snprintf my_snprintf
903#endif
904

Callers

nothing calls this directly

Calls 1

mempcpyFunction · 0.85

Tested by

no test coverage detected