| 42 | */ |
| 43 | |
| 44 | int snprintf0(char *buf, size_t bufsize, const char *fmt, ...) |
| 45 | { |
| 46 | int rc; |
| 47 | va_list ap; |
| 48 | |
| 49 | if (buf == NULL || bufsize == 0) { |
| 50 | logmsg(LOGMSG_ERROR, "snprintf0(%d): ERROR: bad buffer @%p(%zu)\n", |
| 51 | (int)getpid(), buf, bufsize); |
| 52 | return -1; |
| 53 | } |
| 54 | |
| 55 | if (fmt == NULL) { |
| 56 | logmsg(LOGMSG_ERROR, "snprintf0(%d): ERROR: NULL format\n", (int)getpid()); |
| 57 | return -1; |
| 58 | } |
| 59 | |
| 60 | va_start(ap, fmt); |
| 61 | rc = vsnprintf(buf, bufsize, fmt, ap); |
| 62 | va_end(ap); |
| 63 | buf[bufsize - 1] = '\0'; |
| 64 | return rc; |
| 65 | } |
| 66 | |
| 67 | /** Safe version of strcpy(), more reliable than strncpy(). |
| 68 | * |
no test coverage detected