/*                               p e r r o r                               */

#include "stdiolib.h"

/*LINTLIBRARY*/

void perror F1(register CONST char *, s)

{
#define MAXDIGS	11			/* maximum digits in unknown */
  static char unknown[] = {'U','n','k','n','o','w','n',' ',
		           'e','r','r','o','r',' ',
		           '0','0','0','0','0','0','0','0','0','0','0',0};
  int errnum;				/* error number */
  char *errdesc;			/* error description */

#ifdef QDOS
  if (!(errnum = errno))
    return;
#else
  errnum = errno;
#endif

  if (__Zerr != NULL)
    (void) FFLUSH(__Zerr);

  if (s != NULL && *s != 0) {
    (void) __iowrite(STDERR_FILENO, (char *) s, strlen(s));
    (void) __iowrite(STDERR_FILENO, ": ", 2);
  }
  if (errnum > 0 && errnum < sys_nerr)
    errdesc = sys_errlist[errnum];
  else {
    errdesc = &unknown[sizeof(unknown)-MAXDIGS-1];
    if (errnum < 0) {
      *errdesc++ = '-';
      errnum = -errnum;
    }
    *__utoa(errdesc, (unsigned) errnum, 1) = 0;
    errdesc = &unknown[0];
  }
  (void) __iowrite(STDERR_FILENO, errdesc, strlen(errdesc));
  (void) __iowrite(STDERR_FILENO, "\n", 1);
}
