/*****************************************************************************
- * RRDtool 1.2rc2 Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2.99907080300 Copyright by Tobi Oetiker, 1997-2007
*****************************************************************************
* rrd_error.c Common Header File
*****************************************************************************
#define ERRBUFLEN 256
#define CTX (rrd_get_context())
-void
-rrd_set_error(char *fmt, ...)
+void rrd_set_error(
+ char *fmt,
+ ...)
{
- va_list argp;
+ va_list argp;
+
rrd_clear_error();
va_start(argp, fmt);
#ifdef HAVE_VSNPRINTF
va_end(argp);
}
-int
-rrd_test_error(void) {
+int rrd_test_error(
+ void)
+{
return CTX->rrd_error[0] != '\0';
}
-void
-rrd_clear_error(void){
+void rrd_clear_error(
+ void)
+{
CTX->rrd_error[0] = '\0';
}
-char *
-rrd_get_error(void){
+char *rrd_get_error(
+ void)
+{
return CTX->rrd_error;
}
operations on them... Then a single thread may use more than one
context. Using these functions would require to change each and
every function containing any of the non _r versions... */
-void
-rrd_set_error_r(struct rrd_context *rrd_ctx, char *fmt, ...)
+void rrd_set_error_r(
+ struct rrd_context *rrd_ctx,
+ char *fmt,
+ ...)
{
- va_list argp;
+ va_list argp;
+
rrd_clear_error_r(rrd_ctx);
va_start(argp, fmt);
#ifdef HAVE_VSNPRINTF
- vsnprintf((char *)rrd_ctx->rrd_error, rrd_ctx->len, fmt, argp);
+ vsnprintf((char *) rrd_ctx->rrd_error, rrd_ctx->len, fmt, argp);
+ rrd_ctx->rrd_error[rrd_ctx->len] = '\0';
#else
- vsprintf((char *)rrd_ctx->rrd_error, fmt, argp);
+ vsprintf((char *) rrd_ctx->rrd_error, fmt, argp);
#endif
va_end(argp);
}
-int
-rrd_test_error_r(struct rrd_context *rrd_ctx) {
+int rrd_test_error_r(
+ struct rrd_context *rrd_ctx)
+{
return rrd_ctx->rrd_error[0] != '\0';
}
-void
-rrd_clear_error_r(struct rrd_context *rrd_ctx) {
+void rrd_clear_error_r(
+ struct rrd_context *rrd_ctx)
+{
rrd_ctx->rrd_error[0] = '\0';
}
-char *
-rrd_get_error_r(struct rrd_context *rrd_ctx) {
- return (char *)rrd_ctx->rrd_error;
+char *rrd_get_error_r(
+ struct rrd_context *rrd_ctx)
+{
+ return (char *) rrd_ctx->rrd_error;
}
#endif
/* PS: Should we move this to some other file? It is not really error
related. */
-struct rrd_context *
-rrd_new_context(void) {
- struct rrd_context *rrd_ctx =
- (struct rrd_context *) malloc(sizeof(struct rrd_context));
+struct rrd_context *rrd_new_context(
+ void)
+{
+ struct rrd_context *rrd_ctx =
+ (struct rrd_context *) malloc(sizeof(struct rrd_context));
if (rrd_ctx) {
- rrd_ctx->len = 0;
- rrd_ctx->rrd_error = malloc(MAXLEN);
- rrd_ctx->lib_errstr = malloc(ERRBUFLEN);
- if (rrd_ctx->rrd_error && rrd_ctx->lib_errstr) {
- *rrd_ctx->rrd_error = 0;
- *rrd_ctx->lib_errstr = 0;
- rrd_ctx->len = MAXLEN;
- rrd_ctx->errlen = ERRBUFLEN;
- return rrd_ctx;
- }
- if (rrd_ctx->rrd_error) free(rrd_ctx->rrd_error);
- if (rrd_ctx->lib_errstr) free(rrd_ctx->lib_errstr);
- free(rrd_ctx);
+ rrd_ctx->rrd_error = malloc(MAXLEN + 10);
+ rrd_ctx->lib_errstr = malloc(ERRBUFLEN + 10);
+ if (rrd_ctx->rrd_error && rrd_ctx->lib_errstr) {
+ *rrd_ctx->rrd_error = 0;
+ *rrd_ctx->lib_errstr = 0;
+ rrd_ctx->len = MAXLEN;
+ rrd_ctx->errlen = ERRBUFLEN;
+ return rrd_ctx;
+ }
+ if (rrd_ctx->rrd_error)
+ free(rrd_ctx->rrd_error);
+ if (rrd_ctx->lib_errstr)
+ free(rrd_ctx->lib_errstr);
+ free(rrd_ctx);
}
return NULL;
}
-void
-rrd_free_context(struct rrd_context *rrd_ctx) {
+void rrd_free_context(
+ struct rrd_context *rrd_ctx)
+{
if (rrd_ctx) {
- if (rrd_ctx->rrd_error) free(rrd_ctx->rrd_error);
- if (rrd_ctx->lib_errstr) free(rrd_ctx->lib_errstr);
- free(rrd_ctx);
+ if (rrd_ctx->rrd_error)
+ free(rrd_ctx->rrd_error);
+ if (rrd_ctx->lib_errstr)
+ free(rrd_ctx->lib_errstr);
+ free(rrd_ctx);
}
}
#if 0
-void rrd_globalize_error(struct rrd_context *rrd_ctx) {
+void rrd_globalize_error(
+ struct rrd_context *rrd_ctx)
+{
if (rrd_ctx) {
- rrd_set_error(rrd_ctx->rrd_error);
+ rrd_set_error(rrd_ctx->rrd_error);
}
}
#endif