RAISECOND(3)

πŸ“¦
version 2022.10.16 Β· 2 versions
, in opensuse-leap 16.0

🌸 NAME 🌸

okay so bestie, welcome to raisecond(3) from SchilyΒ΄s LIBRARY FUNCTIONS β€” this page is all about raisecond(), and its whole job is literally: raises a condition. πŸ’…


✨ SYNOPSIS ✨

you pull in the header like this, no cap:

#include <schily/sigblk.h>

void
raisecond(signame, arg2)
     char *signame;
     long arg2;

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so here's the tea: raisecond() causes the condition signame to be signalled on the stack, in each frame in order from the most recent (top of stack) to the oldest. πŸ’…

Each frame is checked for a condition handler for signame or, if one is not found in the frame, for any_other. If a handler is found, it is called with signame and with arg1, established in the call to handlecond(), and arg2, from this call. 🫢

If a handler is not found, the process is repeated in the next older stack frame. If raise() reaches the end of the stack without finding a handler, it prints "Condition not caught: condition_name" on stderr and the process is suspended via abort(). 😭

not cute, but that's the rule: no handler at the end of the stack means that exact message on stderr and then abort() suspends the process. πŸ’€

If the handler returns TRUE, raisecond() returns. Otherwise it continues just as if it had not found the handler. periodt. ✨


πŸŽ€ RETURNS πŸŽ€

none β€” literally none. no return value, no little gift, nada. πŸŽ€


🌈 NOTES 🌈

handlecond() and raisecond() are frequently used with the subroutines longjmp() and setjmp(). iykyk πŸŒ€

Routines that call raisecond() can choose to ignore the result; however, they should anticipate the condition in order to ensure a reasonable outcome to the program. fr fr β€” anticipating the condition is the whole vibe check. πŸ’–


mwah! πŸ’– this iconic page comes from SchilyΒ΄s LIBRARY FUNCTIONS, dated 2022/09/09, and it's the RAISECOND(3) manual page by Joerg Schilling β€” slay and goodbye! 🫢

πŸ“¦ where this page comes from