SET_CONSTRAINT_HANDLER_S(3)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1

🌸 NAME

okay so this is the SET_CONSTRAINT_HANDLER_S(3) page from the Library Functions Manual β€” yes, the one with abort_handler_s and ignore_handler_s living in it, bestie β€” and it's all about:

  • set_constraint_handler_s
  • abort_handler_s
  • ignore_handler_s

...under the umbrella of runtime-constraint violation handling ✨


πŸ“š LIBRARY

Standard C Library (libc, -lc) 🫢


🧚 SYNOPSIS

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdlib.h>

constraint_handler_t
set_constraint_handler_s(constraint_handler_t handler);

πŸ’… Handler Prototype

typedef void
(*constraint_handler_t)(const char * restrict msg, void * restrict ptr,
    errno_t error);

🌈 Predefined Handlers

void
abort_handler_s(const char * restrict msg, void * restrict ptr,
    errno_t error);

void
ignore_handler_s(const char * restrict msg, void * restrict ptr,
    errno_t error);

πŸ”₯ DESCRIPTION

The set_constraint_handler_s() function sets the runtime-constraint violation handler to be handler. That's the whole main-character move of this function, ngl.

The runtime-constraint handler is the callback function invoked when a library function detects a runtime-constraint violation. It's giving "something went wrong and the library is calling a handler about it" energy.

The arguments are as follows:

  • msg β€” A pointer to a character string describing the runtime-constraint violation.
  • ptr β€” A NULL pointer. Literally a NULL pointer, bestie β€” that's the vibe.
  • error β€” If the function calling the handler has a return type declared as errno_t, the return value of the function is passed. Otherwise, a positive value of type errno_t is passed.

Only the most recent handler registered with set_constraint_handler_s() is called when a runtime-constraint violation occurs. Most recent, periodt. πŸ’…

The implementation has a default constraint handler that is used if no calls to the set_constraint_handler_s() function have been made. If the handler argument to set_constraint_handler_s() is a NULL pointer, the default handler becomes the current constraint handler. So yeah β€” NULL in that spot lowkey resets you to the default handler.

The abort_handler_s() and ignore_handler_s() are the standard-defined runtime-constraint handlers provided by the C library. They're the iconic predefined duo πŸŽ€

The abort_handler_s() function writes the error message including the msg to stderr and calls the abort(3) function. The abort_handler_s() is currently the default runtime-constraint handler. No cap β€” it's the default one right now.

The ignore_handler_s() simply returns to its caller. That's it. It's just like "okay bestie, message received, returning now" πŸ¦‹


🫢 RETURN VALUES

  • The set_constraint_handler_s() function returns a pointer to the previously registered handler, or NULL if none was previously registered.
  • The abort_handler_s() function does not return to its caller.
  • The ignore_handler_s() function returns no value.

πŸ‘‘ STANDARDS

The set_constraint_handler_s() function conforms to ISO/IEC 9899:2011 (β€œISO C11”) K.3.6.1.1. Standards-slay behavior only πŸ’–


πŸŽ€ AUTHORS

This manual page was written by Yuri Pankov <yuripv@yuripv.net>.


okay that's the whole page, bestie β€” brought to you by Debian, dated August 18, 2018, and filed under SET_CONSTRAINT_HANDLER_S(3) πŸ’–βœ¨

πŸ“¦ where this page comes from