-private ERRINFO errinfo[] ={
-/* no error */ ERR_IGNORE,
-/* EPERM */ ERR_IGNORE,
-/* ENOENT */ ERR_IGNORE,
-/* ESRCH */ ERR_IGNORE,
-/* EINTR */ ERR_CATCH,
-/* EIO */ ERR_CATCH,
-/* ENXIO */ ERR_CATCH,
-/* E2BIG */ ERR_CATCH,
-/* ENOEXEC */ ERR_CATCH,
-/* EBADF */ ERR_IGNORE,
-/* ECHILD */ ERR_CATCH,
-/* EAGAIN */ ERR_CATCH,
-/* ENOMEM */ ERR_CATCH,
-/* EACCES */ ERR_CATCH,
-/* EFAULT */ ERR_CATCH,
-/* ENOTBLK */ ERR_CATCH,
-/* EBUSY */ ERR_CATCH,
-/* EEXIST */ ERR_CATCH,
-/* EXDEV */ ERR_CATCH,
-/* ENODEV */ ERR_CATCH,
-/* ENOTDIR */ ERR_CATCH,
-/* EISDIR */ ERR_CATCH,
-/* EINVAL */ ERR_CATCH,
-/* ENFILE */ ERR_CATCH,
-/* EMFILE */ ERR_CATCH,
-/* ENOTTY */ ERR_IGNORE,
-/* ETXTBSY */ ERR_CATCH,
-/* EFBIG */ ERR_CATCH,
-/* ENOSPC */ ERR_CATCH,
-/* ESPIPE */ ERR_CATCH,
-/* EROFS */ ERR_CATCH,
-/* EMLINK */ ERR_CATCH,
-/* EPIPE */ ERR_CATCH,
-/* EDOM */ ERR_CATCH,
-/* ERANGE */ ERR_CATCH,
-/* EQUOT */ ERR_CATCH,
-};
+private ErrInfo *errinfo;
+
+private initErrInfo ()
+{
+ integer i;
+
+ errinfo = alloc(sys_nerr, ErrInfo);
+ for (i = 0; i < sys_nerr; i++) {
+ errinfo[i].func = ERR_CATCH;
+ }
+ errinfo[0].func = ERR_IGNORE;
+ errinfo[EPERM].func = ERR_IGNORE;
+ errinfo[ENOENT].func = ERR_IGNORE;
+ errinfo[ESRCH].func = ERR_IGNORE;
+ errinfo[EBADF].func = ERR_IGNORE;
+ errinfo[ENOTTY].func = ERR_IGNORE;
+ errinfo[EOPNOTSUPP].func = ERR_IGNORE;
+}