1540cc17fSKonstantin Belousov.\" Copyright 2018 Yuri Pankov <yuripv@yuripv.net> 2540cc17fSKonstantin Belousov.\" 3540cc17fSKonstantin Belousov.\" Redistribution and use in source and binary forms, with or without 4540cc17fSKonstantin Belousov.\" modification, are permitted provided that the following conditions 5540cc17fSKonstantin Belousov.\" are met: 6540cc17fSKonstantin Belousov.\" 1. Redistributions of source code must retain the above copyright 7540cc17fSKonstantin Belousov.\" notice, this list of conditions and the following disclaimer. 8540cc17fSKonstantin Belousov.\" 2. Redistributions in binary form must reproduce the above copyright 9540cc17fSKonstantin Belousov.\" notice, this list of conditions and the following disclaimer in the 10540cc17fSKonstantin Belousov.\" documentation and/or other materials provided with the distribution. 11540cc17fSKonstantin Belousov.\" 12540cc17fSKonstantin Belousov.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 13540cc17fSKonstantin Belousov.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14540cc17fSKonstantin Belousov.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 15540cc17fSKonstantin Belousov.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 16540cc17fSKonstantin Belousov.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17540cc17fSKonstantin Belousov.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 18540cc17fSKonstantin Belousov.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 19540cc17fSKonstantin Belousov.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 20540cc17fSKonstantin Belousov.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 21540cc17fSKonstantin Belousov.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 22540cc17fSKonstantin Belousov.\" SUCH DAMAGE. 23540cc17fSKonstantin Belousov.\" 24540cc17fSKonstantin Belousov.Dd August 18, 2018 25540cc17fSKonstantin Belousov.Dt SET_CONSTRAINT_HANDLER_S 3 26540cc17fSKonstantin Belousov.Os 27540cc17fSKonstantin Belousov.Sh NAME 28540cc17fSKonstantin Belousov.Nm set_constraint_handler_s , 29540cc17fSKonstantin Belousov.Nm abort_handler_s , 30540cc17fSKonstantin Belousov.Nm ignore_handler_s 31540cc17fSKonstantin Belousov.Nd runtime-constraint violation handling 32540cc17fSKonstantin Belousov.Sh LIBRARY 33540cc17fSKonstantin Belousov.Lb libc 34540cc17fSKonstantin Belousov.Sh SYNOPSIS 35540cc17fSKonstantin Belousov.Fd #define __STDC_WANT_LIB_EXT1__ 1 36540cc17fSKonstantin Belousov.In stdlib.h 37540cc17fSKonstantin Belousov.Ft constraint_handler_t 38540cc17fSKonstantin Belousov.Fo set_constraint_handler_s 39540cc17fSKonstantin Belousov.Fa "constraint_handler_t handler" 40540cc17fSKonstantin Belousov.Fc 41540cc17fSKonstantin Belousov.Ss Handler Prototype 42540cc17fSKonstantin Belousov.Ft typedef void 43540cc17fSKonstantin Belousov.Fo (*constraint_handler_t) 44540cc17fSKonstantin Belousov.Fa "const char * restrict msg" 45540cc17fSKonstantin Belousov.Fa "void * restrict ptr" 46540cc17fSKonstantin Belousov.Fa "errno_t error" 47540cc17fSKonstantin Belousov.Fc 48540cc17fSKonstantin Belousov.Ss Predefined Handlers 49540cc17fSKonstantin Belousov.Ft void 50540cc17fSKonstantin Belousov.Fo abort_handler_s 51540cc17fSKonstantin Belousov.Fa "const char * restrict msg" 52540cc17fSKonstantin Belousov.Fa "void * restrict ptr" 53540cc17fSKonstantin Belousov.Fa "errno_t error" 54540cc17fSKonstantin Belousov.Fc 55540cc17fSKonstantin Belousov.Ft void 56540cc17fSKonstantin Belousov.Fo ignore_handler_s 57540cc17fSKonstantin Belousov.Fa "const char * restrict msg" 58540cc17fSKonstantin Belousov.Fa "void * restrict ptr" 59540cc17fSKonstantin Belousov.Fa "errno_t error" 60540cc17fSKonstantin Belousov.Fc 61540cc17fSKonstantin Belousov.Sh DESCRIPTION 62540cc17fSKonstantin BelousovThe 63540cc17fSKonstantin Belousov.Fn set_constraint_handler_s 64540cc17fSKonstantin Belousovfunction sets the runtime-constraint violation handler to be 65540cc17fSKonstantin Belousov.Fa handler . 66540cc17fSKonstantin Belousov.Pp 67540cc17fSKonstantin BelousovThe runtime-constraint handler is the callback function invoked when a library 68540cc17fSKonstantin Belousovfunction detects a runtime-constraint violation. 69540cc17fSKonstantin Belousov.Pp 70540cc17fSKonstantin BelousovThe arguments are as follows: 71540cc17fSKonstantin Belousov.Bl -tag -width "error" 72540cc17fSKonstantin Belousov.It Fa msg 73540cc17fSKonstantin BelousovA pointer to a character string describing the runtime-constraint violation. 74540cc17fSKonstantin Belousov.It Fa ptr 75540cc17fSKonstantin BelousovA 76540cc17fSKonstantin Belousov.Dv NULL 77540cc17fSKonstantin Belousovpointer. 78540cc17fSKonstantin Belousov.It Fa error 79540cc17fSKonstantin BelousovIf the function calling the handler has a return type declared as 80540cc17fSKonstantin Belousov.Vt errno_t , 81540cc17fSKonstantin Belousovthe return value of the function is passed. 82540cc17fSKonstantin BelousovOtherwise, a positive value of type 83540cc17fSKonstantin Belousov.Vt errno_t 84540cc17fSKonstantin Belousovis passed. 85540cc17fSKonstantin Belousov.El 86540cc17fSKonstantin Belousov.Pp 87540cc17fSKonstantin BelousovOnly the most recent handler registered with 88540cc17fSKonstantin Belousov.Fn set_constraint_handler_s 89540cc17fSKonstantin Belousovis called when a runtime-constraint violation occurs. 90540cc17fSKonstantin Belousov.Pp 91540cc17fSKonstantin BelousovThe implementation has a default constraint handler that is used if no calls to 92540cc17fSKonstantin Belousovthe 93540cc17fSKonstantin Belousov.Fn set_constraint_handler_s 94540cc17fSKonstantin Belousovfunction have been made. 95540cc17fSKonstantin BelousovIf the 96540cc17fSKonstantin Belousov.Fa handler 97540cc17fSKonstantin Belousovargument to 98540cc17fSKonstantin Belousov.Fn set_constraint_handler_s 99540cc17fSKonstantin Belousovis a 100540cc17fSKonstantin Belousov.Dv NULL 101540cc17fSKonstantin Belousovpointer, the default handler becomes the current constraint handler. 102540cc17fSKonstantin Belousov.Pp 103540cc17fSKonstantin BelousovThe 104540cc17fSKonstantin Belousov.Fn abort_handler_s 105540cc17fSKonstantin Belousovand 106540cc17fSKonstantin Belousov.Fn ignore_handler_s 107540cc17fSKonstantin Belousovare the standard-defined runtime-constraint handlers provided by the C library. 108540cc17fSKonstantin Belousov.Pp 109540cc17fSKonstantin BelousovThe 110540cc17fSKonstantin Belousov.Fn abort_handler_s 111540cc17fSKonstantin Belousovfunction writes the error message including the 112540cc17fSKonstantin Belousov.Fa msg 113540cc17fSKonstantin Belousovto 114540cc17fSKonstantin Belousov.Dv stderr 115540cc17fSKonstantin Belousovand calls the 116540cc17fSKonstantin Belousov.Xr abort 3 117540cc17fSKonstantin Belousovfunction. 118540cc17fSKonstantin BelousovThe 119540cc17fSKonstantin Belousov.Fn abort_handler_s 120540cc17fSKonstantin Belousovis currently the default runtime-constraint handler. 121540cc17fSKonstantin Belousov.Pp 122540cc17fSKonstantin BelousovThe 123540cc17fSKonstantin Belousov.Fn ignore_handler_s 124540cc17fSKonstantin Belousovsimply returns to its caller. 125540cc17fSKonstantin Belousov.Sh RETURN VALUES 126540cc17fSKonstantin BelousovThe 127540cc17fSKonstantin Belousov.Fn set_constraint_handler_s 128540cc17fSKonstantin Belousovfunction returns a pointer to the previously registered handler, or 129540cc17fSKonstantin Belousov.Dv NULL 130540cc17fSKonstantin Belousovif none was previously registered. 131540cc17fSKonstantin Belousov.Pp 132540cc17fSKonstantin BelousovThe 133540cc17fSKonstantin Belousov.Fn abort_handler_s 134540cc17fSKonstantin Belousovfunction does not return to its caller. 135540cc17fSKonstantin Belousov.Pp 136540cc17fSKonstantin BelousovThe 137540cc17fSKonstantin Belousov.Fn ignore_handler_s 138540cc17fSKonstantin Belousovfunction returns no value. 139540cc17fSKonstantin Belousov.Sh STANDARDS 140540cc17fSKonstantin BelousovThe 141540cc17fSKonstantin Belousov.Fn set_constraint_handler_s 142540cc17fSKonstantin Belousovfunction conforms to 143540cc17fSKonstantin Belousov.St -isoC-2011 144540cc17fSKonstantin BelousovK.3.6.1.1. 145540cc17fSKonstantin Belousov.Sh AUTHORS 146540cc17fSKonstantin BelousovThis manual page was written by 147540cc17fSKonstantin Belousov.An Yuri Pankov Aq Mt yuripv@yuripv.net . 148