diff options
author | jb <jb@FreeBSD.org> | 2008-04-26 04:43:19 +0000 |
---|---|---|
committer | jb <jb@FreeBSD.org> | 2008-04-26 04:43:19 +0000 |
commit | ace3d24b37f446c59218c0e389d579c0b79fccc0 (patch) | |
tree | 608a132b7d1a6fc72b8f77085569926384fc9a71 /cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c | |
parent | fd0fbf31aa6a799810269382ebdba2d92e4d62b2 (diff) | |
download | FreeBSD-src-ace3d24b37f446c59218c0e389d579c0b79fccc0.zip FreeBSD-src-ace3d24b37f446c59218c0e389d579c0b79fccc0.tar.gz |
There are many places in libdtrace where errno can be set. When an
error is returned all the way back to the dtrace app, it's hard to
figure out where that error came from.
Add a couple of functions to get and set the error location which can
be optionally compiled into the library.
Diffstat (limited to 'cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c')
-rw-r--r-- | cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c index 5005f59..263f70c 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c @@ -25,6 +25,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" +#include <string.h> #include <strings.h> #include <dt_impl.h> @@ -138,12 +139,29 @@ dtrace_errno(dtrace_hdl_t *dtp) return (dtp->dt_errno); } +#if defined(sun) int dt_set_errno(dtrace_hdl_t *dtp, int err) { dtp->dt_errno = err; return (-1); } +#else +int +_dt_set_errno(dtrace_hdl_t *dtp, int err, const char *errfile, int errline) +{ + dtp->dt_errno = err; + dtp->dt_errfile = errfile; + dtp->dt_errline = errline; + return (-1); +} + +void dt_get_errloc(dtrace_hdl_t *dtp, const char **p_errfile, int *p_errline) +{ + *p_errfile = dtp->dt_errfile; + *p_errline = dtp->dt_errline; +} +#endif void dt_set_errmsg(dtrace_hdl_t *dtp, const char *errtag, const char *region, |