-function errno_str(ecode)
-%{
- char * ename[130];
- int ecode = THIS->ecode;
-
- ename[1]="EPERM";
- ename[2]="ENOENT";
- ename[3]="ESRCH";
- ename[4]="EINTR";
- ename[5]="EIO";
- ename[6]="ENXIO";
- ename[7]="E2BIG";
- ename[8]="ENOEXEC";
- ename[9]="EBADF";
- ename[10]="ECHILD";
- ename[11]="EAGAIN";
- ename[12]="ENOMEM";
- ename[13]="EACCES";
- ename[14]="EFAULT";
- ename[15]="ENOTBLK";
- ename[16]="EBUSY";
- ename[17]="EEXIST";
- ename[18]="EXDEV";
- ename[19]="ENODEV";
- ename[20]="ENOTDIR";
- ename[21]="EISDIR";
- ename[22]="EINVAL";
- ename[23]="ENFILE";
- ename[24]="EMFILE";
- ename[25]="ENOTTY";
- ename[26]="ETXTBSY";
- ename[27]="EFBIG";
- ename[28]="ENOSPC";
- ename[29]="ESPIPE";
- ename[30]="EROFS";
- ename[31]="EMLINK";
- ename[32]="EPIPE";
- ename[33]="EDOM";
- ename[34]="ERANGE";
- ename[35]="EDEADLK";
- ename[36]="ENAMETOOLONG";
- ename[37]="ENOLCK";
- ename[38]="ENOSYS";
- ename[39]="ENOTEMPTY";
- ename[40]="ELOOP";
- ename[41]="EWOULDBLOCK";
- ename[42]="ENOMSG";
- ename[43]="EIDRM";
- ename[44]="ECHRNG";
- ename[45]="EL2NSYNC";
- ename[46]="EL3HLT";
- ename[47]="EL3RST";
- ename[48]="ELNRNG";
- ename[49]="EUNATCH";
- ename[50]="ENOCSI";
- ename[51]="EL2HLT";
- ename[52]="EBADE";
- ename[53]="EBADR";
- ename[54]="EXFULL";
- ename[55]="ENOANO";
- ename[56]="EBADRQC";
- ename[57]="EBADSLT";
- ename[58]="EDEADLOCK";
- ename[59]="EBFONT";
- ename[60]="ENOSTR";
- ename[61]="ENODATA";
- ename[62]="ETIME";
- ename[63]="ENOSR";
- ename[64]="ENONET";
- ename[65]="ENOPKG";
- ename[66]="EREMOTE";
- ename[67]="ENOLINK";
- ename[68]="EADV";
- ename[69]="ESRMNT";
- ename[70]="ECOMM";
- ename[71]="EPROTO";
- ename[72]="EMULTIHOP";
- ename[73]="EDOTDOT";
- ename[74]="EBADMSG";
- ename[75]="EOVERFLOW";
- ename[76]="ENOTUNIQ";
- ename[77]="EBADFD";
- ename[78]="EREMCHG";
- ename[79]="ELIBACC";
- ename[80]="ELIBBAD";
- ename[81]="ELIBSCN";
- ename[82]="ELIBMAX";
- ename[83]="ELIBEXEC";
- ename[84]="EILSEQ";
- ename[85]="ERESTART";
- ename[86]="ESTRPIPE";
- ename[87]="EUSERS";
- ename[88]="ENOTSOCK";
- ename[89]="EDESTADDRREQ";
- ename[90]="EMSGSIZE";
- ename[91]="EPROTOTYPE";
- ename[92]="ENOPROTOOPT";
- ename[93]="EPROTONOSUPPORT";
- ename[94]="ESOCKTNOSUPPORT";
- ename[95]="EOPNOTSUPP";
- ename[96]="EPFNOSUPPORT";
- ename[97]="EAFNOSUPPORT";
- ename[98]="EADDRINUSE";
- ename[99]="EADDRNOTAVAIL";
- ename[100]="ENETDOWN";
- ename[101]="ENETUNREACH";
- ename[102]="ENETRESET";
- ename[103]="ECONNABORTED";
- ename[104]="ECONNRESET";
- ename[105]="ENOBUFS";
- ename[106]="EISCONN";
- ename[107]="ENOTCONN";
- ename[108]="ESHUTDOWN";
- ename[109]="ETOOMANYREFS";
- ename[110]="ETIMEDOUT";
- ename[111]="ECONNREFUSED";
- ename[112]="EHOSTDOWN";
- ename[113]="EHOSTUNREACH";
- ename[114]="EALREADY";
- ename[115]="EINPROGRESS";
- ename[116]="ESTALE";
- ename[117]="EUCLEAN";
- ename[118]="ENOTNAM";
- ename[119]="ENAVAIL";
- ename[120]="EISNAM";
- ename[121]="EREMOTEIO";
- ename[122]="EDQUOT";
- ename[123]="ENOMEDIUM";
- ename[124]="EMEDIUMTYPE";
- ename[125]="ECANCELED";
- ename[126]="ENOKEY";
- ename[127]="EKEYEXPIRED";
- ename[128]="EKEYREVOKED";
- ename[129]="EKEYREJECTED";
-
- if(ecode < 0 && ecode > -130)
- sprintf(THIS->__retvalue, "%s", ename[-(ecode)]);
- else if(ecode > 0 && ecode < 130)
- sprintf(THIS->__retvalue, "%s", ename[ecode]);
- else
- sprintf(THIS->__retvalue, "%s", "Error: invalid errno!");
-%}
+global _errno_table
+
+probe begin{
+ _errno_table[1] = "EPERM";
+ _errno_table[2] = "ENOENT";
+ _errno_table[3] = "ESRCH";
+ _errno_table[4] = "EINTR";
+ _errno_table[5] = "EIO";
+ _errno_table[6] = "ENXIO";
+ _errno_table[7] = "E2BIG";
+ _errno_table[8] = "ENOEXEC";
+ _errno_table[9] = "EBADF";
+ _errno_table[10]= "ECHILD";
+ _errno_table[11]= "EAGAIN";
+ _errno_table[12]= "ENOMEM";
+ _errno_table[13]= "EACCES";
+ _errno_table[14]= "EFAULT";
+ _errno_table[15]= "ENOTBLK";
+ _errno_table[16]= "EBUSY";
+ _errno_table[17]= "EEXIST";
+ _errno_table[18]= "EXDEV";
+ _errno_table[19]= "ENODEV";
+ _errno_table[20]= "ENOTDIR";
+ _errno_table[21]= "EISDIR";
+ _errno_table[22]= "EINVAL";
+ _errno_table[23]= "ENFILE";
+ _errno_table[24]= "EMFILE";
+ _errno_table[25]= "ENOTTY";
+ _errno_table[26]= "ETXTBSY";
+ _errno_table[27]= "EFBIG";
+ _errno_table[28]= "ENOSPC";
+ _errno_table[29]= "ESPIPE";
+ _errno_table[30]= "EROFS";
+ _errno_table[31]= "EMLINK";
+ _errno_table[32]= "EPIPE";
+ _errno_table[33]= "EDOM";
+ _errno_table[34]= "ERANGE";
+ _errno_table[35]= "EDEADLK";
+ _errno_table[36]= "ENAMETOOLONG";
+ _errno_table[37]= "ENOLCK";
+ _errno_table[38]= "ENOSYS";
+ _errno_table[39]= "ENOTEMPTY";
+ _errno_table[40]= "ELOOP";
+ _errno_table[41]= "EWOULDBLOCK";
+ _errno_table[42]= "ENOMSG";
+ _errno_table[43]= "EIDRM";
+ _errno_table[44]= "ECHRNG";
+ _errno_table[45]= "EL2NSYNC";
+ _errno_table[46]= "EL3HLT";
+ _errno_table[47]= "EL3RST";
+ _errno_table[48]= "ELNRNG";
+ _errno_table[49]= "EUNATCH";
+ _errno_table[50]= "ENOCSI";
+ _errno_table[51]= "EL2HLT";
+ _errno_table[52]= "EBADE";
+ _errno_table[53]= "EBADR";
+ _errno_table[54]= "EXFULL";
+ _errno_table[55]= "ENOANO";
+ _errno_table[56]= "EBADRQC";
+ _errno_table[57]= "EBADSLT";
+ _errno_table[58]= "EDEADLOCK";
+ _errno_table[59]= "EBFONT";
+ _errno_table[60]= "ENOSTR";
+ _errno_table[61]= "ENODATA";
+ _errno_table[62]= "ETIME";
+ _errno_table[63]= "ENOSR";
+ _errno_table[64]= "ENONET";
+ _errno_table[65]= "ENOPKG";
+ _errno_table[66]= "EREMOTE";
+ _errno_table[67]= "ENOLINK";
+ _errno_table[68]= "EADV";
+ _errno_table[69]= "ESRMNT";
+ _errno_table[70]= "ECOMM";
+ _errno_table[71]= "EPROTO";
+ _errno_table[72]= "EMULTIHOP";
+ _errno_table[73]= "EDOTDOT";
+ _errno_table[74]= "EBADMSG";
+ _errno_table[75]= "EOVERFLOW";
+ _errno_table[76]= "ENOTUNIQ";
+ _errno_table[77]= "EBADFD";
+ _errno_table[78]= "EREMCHG";
+ _errno_table[79]= "ELIBACC";
+ _errno_table[80]= "ELIBBAD";
+ _errno_table[81]= "ELIBSCN";
+ _errno_table[82]= "ELIBMAX";
+ _errno_table[83]= "ELIBEXEC";
+ _errno_table[84]= "EILSEQ";
+ _errno_table[85]= "ERESTART";
+ _errno_table[86]= "ESTRPIPE";
+ _errno_table[87]= "EUSERS";
+ _errno_table[88]= "ENOTSOCK";
+ _errno_table[89]= "EDESTADDRREQ";
+ _errno_table[90]= "EMSGSIZE";
+ _errno_table[91]= "EPROTOTYPE";
+ _errno_table[92]= "ENOPROTOOPT";
+ _errno_table[93]= "EPROTONOSUPPORT";
+ _errno_table[94]= "ESOCKTNOSUPPORT";
+ _errno_table[95]= "EOPNOTSUPP";
+ _errno_table[96]= "EPFNOSUPPORT";
+ _errno_table[97]= "EAFNOSUPPORT";
+ _errno_table[98]= "EADDRINUSE";
+ _errno_table[99]= "EADDRNOTAVAIL";
+ _errno_table[100]="ENETDOWN";
+ _errno_table[101]="ENETUNREACH";
+ _errno_table[102]="ENETRESET";
+ _errno_table[103]="ECONNABORTED";
+ _errno_table[104]="ECONNRESET";
+ _errno_table[105]="ENOBUFS";
+ _errno_table[106]="EISCONN";
+ _errno_table[107]="ENOTCONN";
+ _errno_table[108]="ESHUTDOWN";
+ _errno_table[109]="ETOOMANYREFS";
+ _errno_table[110]="ETIMEDOUT";
+ _errno_table[111]="ECONNREFUSED";
+ _errno_table[112]="EHOSTDOWN";
+ _errno_table[113]="EHOSTUNREACH";
+ _errno_table[114]="EALREADY";
+ _errno_table[115]="EINPROGRESS";
+ _errno_table[116]="ESTALE";
+ _errno_table[117]="EUCLEAN";
+ _errno_table[118]="ENOTNAM";
+ _errno_table[119]="ENAVAIL";
+ _errno_table[120]="EISNAM";
+ _errno_table[121]="EREMOTEIO";
+ _errno_table[122]="EDQUOT";
+ _errno_table[123]="ENOMEDIUM";
+ _errno_table[124]="EMEDIUMTYPE";
+ _errno_table[125]="ECANCELED";
+ _errno_table[126]="ENOKEY";
+ _errno_table[127]="EKEYEXPIRED";
+ _errno_table[128]="EKEYREVOKED";
+ _errno_table[129]="EKEYREJECTED";
+}
+
+function errno_str:string(e:long) {
+ if (e < 0 && e > -130)
+ return _errno_table[-e]
+ else if (e > 0 && e < 130)
+ return _errno_table[e]
+ else
+ return "null"
+}