int gf_asprintf (char **string_ptr, const char *format, ...) { va_list arg; int rv = 0; va_start (arg, format); rv = gf_vasprintf (string_ptr, format, arg); va_end (arg); return rv; }
void runner_argprintf (runner_t *runner, const char *format, ...) { va_list argva; char *arg = NULL; int ret = 0; va_start (argva, format); ret = gf_vasprintf (&arg, format, argva); va_end (argva); if (ret < 0) { runner->runerr = errno; return; } runner_insert_arg (runner, arg); }
static int gpprintf (struct gf_printer *gp, const char *format, ...) { va_list arg; char *str = NULL; int ret = 0; va_start (arg, format); ret = gf_vasprintf (&str, format, arg); va_end (arg); if (ret < 0) return ret; ret = gp->write (gp, str, ret); GF_FREE (str); return ret; }
int vasprintf (char **result, const char *format, va_list args) { return gf_vasprintf(result, format, args); }
int gf_event (int event, char *fmt, ...) { int ret = 0; #if (USE_EVENTS) int sock = -1; char eventstr[EVENTS_MSG_MAX] = ""; struct sockaddr_un server; va_list arguments; char *msg = NULL; size_t eventstr_size = 0; if (event < 0 || event >= EVENT_LAST) { ret = EVENT_ERROR_INVALID_INPUTS; goto out; } sock = socket(AF_UNIX, SOCK_STREAM, 0); if (sock < 0) { ret = EVENT_ERROR_SOCKET; goto out; } server.sun_family = AF_UNIX; strcpy(server.sun_path, EVENT_PATH); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { ret = EVENT_ERROR_CONNECT; goto out; } va_start (arguments, fmt); ret = gf_vasprintf (&msg, fmt, arguments); va_end (arguments); if (ret < 0) { ret = EVENT_ERROR_INVALID_INPUTS; goto out; } eventstr_size = snprintf(NULL, 0, "%u %d %s", (unsigned)time(NULL), event, msg); if (eventstr_size + 1 > EVENTS_MSG_MAX) { eventstr_size = EVENTS_MSG_MAX - 1; } snprintf(eventstr, eventstr_size+1, "%u %d %s", (unsigned)time(NULL), event, msg); if (sys_write(sock, eventstr, strlen(eventstr)) <= 0) { ret = EVENT_ERROR_SEND; goto out; } ret = EVENT_SEND_OK; out: sys_close(sock); GF_FREE(msg); #endif return ret; }