Exemplo n.º 1
0
const char *
mach_error_type(mach_error_t err)
{
    int sub, system;

    __mach_error_map_compat( &err );

    sub = err_get_sub(err);
    system = err_get_system(err);

    if (system > err_max_system
            ||  sub >= errors[system].max_sub ) return( "(?/?)" );
    return( errors[system].subsystem[sub].subsys_name );
}
Exemplo n.º 2
0
/* Return a string describing the errno code in ERRNUM.  */
char *
strerror_l (int errnum, locale_t loc)
{
  int system;
  int sub;
  int code;
  const struct error_system *es;
  extern void __mach_error_map_compat (int *);

  __mach_error_map_compat (&errnum);

  system = err_get_system (errnum);
  sub = err_get_sub (errnum);
  code = err_get_code (errnum);

  if (system > err_max_system || ! __mach_error_systems[system].bad_sub)
    {
      free (last_value);
      if (__asprintf (&last_value, "%s%X",
		      translate ("Error in unknown error system: ", loc),
		      errnum) == -1)
	last_value = NULL;

      return last_value;
    }

  es = &__mach_error_systems[system];

  if (sub >= es->max_sub)
    return (char *) translate (es->bad_sub, loc);

  if (code >= es->subsystem[sub].max_code)
    {
      free (last_value);
      if (__asprintf (&last_value, "%s%s %d",
		      translate ("Unknown error ", loc),
		      translate (es->subsystem[sub].subsys_name, loc),
		      errnum) == -1)
	last_value = NULL;

      return last_value;
    }

  return (char *) translate (es->subsystem[sub].codes[code], loc);
}
Exemplo n.º 3
0
/* Return a string describing the errno code in ERRNUM.  */
char *
_strerror_internal (int errnum, char *buf, size_t buflen)
{
  int system;
  int sub;
  int code;
  const struct error_system *es;
  extern void __mach_error_map_compat (int *);

  __mach_error_map_compat (&errnum);

  system = err_get_system (errnum);
  sub = err_get_sub (errnum);
  code = err_get_code (errnum);

  if (system > err_max_system || ! __mach_error_systems[system].bad_sub)
    {
      const char *unk = _("Error in unknown error system: ");
      const size_t unklen = strlen (unk);
      char *p = buf + buflen;
      *--p = '\0';
      p = _itoa (errnum, p, 16, 1);
      return memcpy (p - unklen, unk, unklen);
    }

  es = &__mach_error_systems[system];

  if (sub >= es->max_sub)
    return (char *) es->bad_sub;

  if (code >= es->subsystem[sub].max_code)
    {
      const char *unk = _("Unknown error ");
      const size_t unklen = strlen (unk);
      char *p = buf + buflen;
      size_t len = strlen (es->subsystem[sub].subsys_name);
      *--p = '\0';
      p = _itoa (errnum, p, 16, 1);
      *p-- = ' ';
      p = memcpy (p - len, es->subsystem[sub].subsys_name, len);
      return memcpy (p - unklen, unk, unklen);
    }

  return (char *) _(es->subsystem[sub].codes[code]);
}
Exemplo n.º 4
0
const char *
mach_error_string_int(mach_error_t	err,
                      boolean_t		* diag)
{
    int sub, system, code;

    __mach_error_map_compat( &err );

    sub = err_get_sub(err);
    system = err_get_system(err);
    code = err_get_code(err);

    *diag = TRUE;

    if (system > err_max_system) return( "(?/?) unknown error system" );
    if (sub >= errors[system].max_sub) return( errors[system].bad_sub );
    if (code >= errors[system].subsystem[sub].max_code) return ( NO_SUCH_ERROR );

    *diag = mach_error_full_diag;
    return( errors[system].subsystem[sub].codes[code] );
}