--- err.3.orig 2009-05-12 11:21:55.000000000 -0700 +++ err.3 2009-05-20 16:48:17.000000000 -0700 @@ -32,7 +32,7 @@ .\" From: @(#)err.3 8.1 (Berkeley) 6/9/93 .\" $FreeBSD: src/lib/libc/gen/err.3,v 1.20 2004/10/04 14:04:37 jkoshy Exp $ .\" -.Dd March 6, 1999 +.Dd May 20, 2008 .Dt ERR 3 .Os .Sh NAME @@ -49,6 +49,9 @@ .Nm warnx , .Nm vwarnx , .Nm err_set_exit , +#ifdef UNIFDEF_BLOCKS +.Nm err_set_exit_b , +#endif .Nm err_set_file .Nd formatted error messages .Sh LIBRARY @@ -59,6 +62,10 @@ .Fn err "int eval" "const char *fmt" "..." .Ft void .Fn err_set_exit "void (*exitf)(int)" +#ifdef UNIFDEF_BLOCKS +.Ft void +.Fn err_set_exit_b "void (^exitb)(int)" +#endif .Ft void .Fn err_set_file "void *vfp" .Ft void @@ -169,6 +176,24 @@ to perform any necessary cleanup; passing a null function pointer for .Va exitf resets the hook to do nothing. +#ifdef UNIFDEF_BLOCKS +The +.Fn err_set_exit_b +function is like +.Fn err_set_exit +except it takes a block pointer instead of a function pointer. +.Bd -ragged -offset indent +Note: The +.Fn Block_copy +function (defined in +.In Blocks.h ) +is used by +.Fn err_set_exit_b +to make a copy of the block, especially for the case when a stack-based +block might go out of scope when the subroutine returns. +.Ed +.Pp +#endif The .Fn err_set_file function sets the output stream used by the other functions. @@ -234,3 +259,8 @@ .Fn warnc functions first appeared in .Fx 3.0 . +#ifdef UNIFDEF_BLOCKS +The +.Fn err_set_exit_b +function first appeared in Mac OS X 10.6. +#endif