Subversion 1.6.16
Defines | Functions

Error creation and destruction

SVN error creation and destruction. More...

Defines

#define svn_error_create   (svn_error__locate(__FILE__,__LINE__), (svn_error_create))
 Wrapper macro to collect file and line information.
#define svn_error_createf   (svn_error__locate(__FILE__,__LINE__), (svn_error_createf))
 Wrapper macro to collect file and line information.
#define svn_error_wrap_apr   (svn_error__locate(__FILE__,__LINE__), (svn_error_wrap_apr))
 Wrapper macro to collect file and line information.
#define svn_error_quick_wrap   (svn_error__locate(__FILE__,__LINE__), (svn_error_quick_wrap))
 Wrapper macro to collect file and line information.
#define SVN_ERR(expr)
 A statement macro for checking error values.
#define SVN_ERR_W(expr, wrap_msg)
 A statement macro, very similar to SVN_ERR.
#define SVN_INT_ERR(expr)
 A statement macro, similar to SVN_ERR, but returns an integer.

Functions

svn_error_tsvn_error_create (apr_status_t apr_err, svn_error_t *child, const char *message)
 Create a nested exception structure.
svn_error_tsvn_error_createf (apr_status_t apr_err, svn_error_t *child, const char *fmt,...)
 Create an error structure with the given apr_err and child, with a printf-style error message produced by passing fmt, using apr_psprintf().
svn_error_tsvn_error_wrap_apr (apr_status_t status, const char *fmt,...)
 Wrap a status from an APR function.
svn_error_tsvn_error_quick_wrap (svn_error_t *child, const char *new_msg)
 A quick n' easy way to create a wrapped exception with your own message, before throwing it up the stack.
svn_error_tsvn_error_compose_create (svn_error_t *err1, svn_error_t *err2)
 Compose two errors, returning the composition as a brand new error and consuming the original errors.
void svn_error_compose (svn_error_t *chain, svn_error_t *new_err)
 Add new_err to the end of chain's chain of errors.
svn_error_tsvn_error_root_cause (svn_error_t *err)
 Return the root cause of err by finding the last error in its chain (e.g.
svn_error_tsvn_error_dup (svn_error_t *err)
 Create a new error that is a deep copy of err and return it.
void svn_error_clear (svn_error_t *error)
 Free the memory used by error, as well as all ancestors and descendants of error.
void svn_handle_error2 (svn_error_t *error, FILE *stream, svn_boolean_t fatal, const char *prefix)
 Very basic default error handler: print out error stack error to the stdio stream stream, with each error prefixed by prefix; quit and clear error iff the fatal flag is set.
void svn_handle_error (svn_error_t *error, FILE *stream, svn_boolean_t fatal)
 Like svn_handle_error2() but with prefix set to "svn: ".
void svn_handle_warning2 (FILE *stream, svn_error_t *error, const char *prefix)
 Very basic default warning handler: print out the error error to the stdio stream stream, prefixed by prefix.
void svn_handle_warning (FILE *stream, svn_error_t *error)
 Like svn_handle_warning2() but with prefix set to "svn: ".

Detailed Description

SVN error creation and destruction.


Define Documentation

#define SVN_ERR (   expr)
Value:
do {                                          \
    svn_error_t *svn_err__temp = (expr);        \
    if (svn_err__temp)                          \
      return svn_err__temp;                     \
  } while (0)

A statement macro for checking error values.

Evaluate expr. If it yields an error, return that error from the current function. Otherwise, continue.

The do { ... } while (0) wrapper has no semantic effect, but it makes this macro syntactically equivalent to the expression statement it resembles. Without it, statements like

   if (a)
     SVN_ERR (some operation);
   else
     foo;

would not mean what they appear to.

Definition at line 274 of file svn_error.h.

#define SVN_ERR_W (   expr,
  wrap_msg 
)
Value:
do {                                                      \
    svn_error_t *svn_err__temp = (expr);                    \
    if (svn_err__temp)                                      \
      return svn_error_quick_wrap(svn_err__temp, wrap_msg); \
  } while (0)

A statement macro, very similar to SVN_ERR.

This macro will wrap the error with the specified text before returning the error.

Definition at line 287 of file svn_error.h.

#define SVN_INT_ERR (   expr)
Value:
do {                                                           \
    svn_error_t *svn_err__temp = (expr);                         \
    if (svn_err__temp) {                                         \
      svn_handle_error2(svn_err__temp, stderr, FALSE, "svn: ");  \
      svn_error_clear(svn_err__temp);                            \
      return EXIT_FAILURE; }                                     \
  } while (0)

A statement macro, similar to SVN_ERR, but returns an integer.

Evaluate expr. If it yields an error, handle that error and return EXIT_FAILURE.

Definition at line 300 of file svn_error.h.


Function Documentation

void svn_error_clear ( svn_error_t error)

Free the memory used by error, as well as all ancestors and descendants of error.

Unlike other Subversion objects, errors are managed explicitly; you MUST clear an error if you are ignoring it, or you are leaking memory. For convenience, error may be NULL, in which case this function does nothing; thus, svn_error_clear(svn_foo(...)) works as an idiom to ignore errors.

void svn_error_compose ( svn_error_t chain,
svn_error_t new_err 
)

Add new_err to the end of chain's chain of errors.

The new_err chain will be copied into chain's pool and destroyed, so new_err itself becomes invalid after this function.

svn_error_t* svn_error_compose_create ( svn_error_t err1,
svn_error_t err2 
)

Compose two errors, returning the composition as a brand new error and consuming the original errors.

Either or both of err1 and err2 may be SVN_NO_ERROR. If both are not SVN_NO_ERROR, err2 will follow err1 in the chain of the returned error.

Since:
New in 1.6.
svn_error_t* svn_error_create ( apr_status_t  apr_err,
svn_error_t child,
const char *  message 
)

Create a nested exception structure.

Input: an APR or SVN custom error code, a "child" error to wrap, a specific message

Returns: a new error structure (containing the old one).

Note:
Errors are always allocated in a subpool of the global pool, since an error's lifetime is generally not related to the lifetime of any convenient pool. Errors must be freed with svn_error_clear(). The specific message should be NULL if there is nothing to add to the general message associated with the error code.

If creating the "bottommost" error in a chain, pass NULL for the child argument.

svn_error_t* svn_error_dup ( svn_error_t err)

Create a new error that is a deep copy of err and return it.

Since:
New in 1.2.
svn_error_t* svn_error_quick_wrap ( svn_error_t child,
const char *  new_msg 
)

A quick n' easy way to create a wrapped exception with your own message, before throwing it up the stack.

(It uses all of the child's fields.)

svn_error_t* svn_error_root_cause ( svn_error_t err)

Return the root cause of err by finding the last error in its chain (e.g.

it or its children). err may be SVN_NO_ERROR, in which case SVN_NO_ERROR is returned.

Since:
New in 1.5.
svn_error_t* svn_error_wrap_apr ( apr_status_t  status,
const char *  fmt,
  ... 
)

Wrap a status from an APR function.

If fmt is NULL, this is equivalent to svn_error_create(status,NULL,NULL). Otherwise, the error message is constructed by formatting fmt and the following arguments according to apr_psprintf(), and then appending ": " and the error message corresponding to status. (If UTF-8 translation of the APR error message fails, the ": " and APR error are not appended to the error message.)

void svn_handle_error ( svn_error_t error,
FILE *  stream,
svn_boolean_t  fatal 
)

Like svn_handle_error2() but with prefix set to "svn: ".

Deprecated:
Provided for backward compatibility with the 1.1 API.
void svn_handle_error2 ( svn_error_t error,
FILE *  stream,
svn_boolean_t  fatal,
const char *  prefix 
)

Very basic default error handler: print out error stack error to the stdio stream stream, with each error prefixed by prefix; quit and clear error iff the fatal flag is set.

Allocations are performed in the error's pool.

If you're not sure what prefix to pass, just pass "svn: ". That's what code that used to call svn_handle_error() and now calls svn_handle_error2() does.

Since:
New in 1.2.
void svn_handle_warning ( FILE *  stream,
svn_error_t error 
)

Like svn_handle_warning2() but with prefix set to "svn: ".

Deprecated:
Provided for backward compatibility with the 1.1 API.
void svn_handle_warning2 ( FILE *  stream,
svn_error_t error,
const char *  prefix 
)

Very basic default warning handler: print out the error error to the stdio stream stream, prefixed by prefix.

Allocations are performed in the error's pool.

Since:
New in 1.2.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines