text: /* See LICENSE file for copyright and license details. */
  #include "common.h"
  
  
  #ifndef __SIGRTMIN
  # ifdef __linux__
  #  define __SIGRTMIN 32
  # endif
  #endif
  
  #ifndef __SIGRTMAX
  # ifdef __linux__
  #  define __SIGRTMAX (_NSIG - 1)
  # endif
  #endif
  
  
  const char *
  get_errno_name(int err)
  {
  	static char buf[3 * sizeof(err) + 2];
  
  #define X(N) if (err == N) return #N;
  	LIST_ERRNOS(X)
  
  #ifdef ALSO_ERESTARTSYS
  	X(ERESTARTSYS)
  #endif
  #ifdef ALSO_ERESTARTNOINTR
  	X(ERESTARTNOINTR)
  #endif
  #ifdef ALSO_ERESTARTNOHAND
  	X(ERESTARTNOHAND)
  #endif
  #ifdef ALSO_ERESTART_RESTARTBLOCK
  	X(ERESTART_RESTARTBLOCK)
  #endif
  
  #undef X
  
  	sprintf(buf, "%i", err);
  	return buf;
  }
  
  
  const char *
  get_signum_name(int sig)
  {
  	static char buf[3 * sizeof(sig) + 2];
  	int above_low, below_high;
  
  #define X(N) if (sig == N) return #N;
  	LIST_SIGNUMS(X)
  #undef X
  
  	if (__SIGRTMIN <= sig && sig <= __SIGRTMAX) {
  		above_low = sig - __SIGRTMIN;
  		below_high = __SIGRTMAX - sig;
  		if (!above_low)
  			return "__SIGRTMIN";
  		if (!below_high)
  			return "__SIGRTMAX";
  		if (above_low <= below_high)
  			sprintf(buf, "__SIGRTMIN+%i", above_low);
  		else
  			sprintf(buf, "__SIGRTMAX-%i", below_high);
  		return buf;
  	}
  
  	sprintf(buf, "%i", sig);
  	return buf;
  }
  