blob: 2629a5dc2196a7b2073a5544125f0054ad4adef0 [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'error_codes_internal.dart'
if (dart.library.io) 'error_codes_dart_io.dart';
/// Operating system error codes.
// TODO(tvolkert): Remove (https://github.com/dart-lang/sdk/issues/28860)
class ErrorCodes {
ErrorCodes._();
/// Argument list too long
// ignore: non_constant_identifier_names
static int get E2BIG => _platform((_Codes codes) => codes.e2big);
/// Permission denied
// ignore: non_constant_identifier_names
static int get EACCES => _platform((_Codes codes) => codes.eacces);
/// Try again
// ignore: non_constant_identifier_names
static int get EAGAIN => _platform((_Codes codes) => codes.eagain);
/// Bad file number
// ignore: non_constant_identifier_names
static int get EBADF => _platform((_Codes codes) => codes.ebadf);
/// Device or resource busy
// ignore: non_constant_identifier_names
static int get EBUSY => _platform((_Codes codes) => codes.ebusy);
/// No child processes
// ignore: non_constant_identifier_names
static int get ECHILD => _platform((_Codes codes) => codes.echild);
/// Resource deadlock would occur
// ignore: non_constant_identifier_names
static int get EDEADLK => _platform((_Codes codes) => codes.edeadlk);
/// Math argument out of domain of func
// ignore: non_constant_identifier_names
static int get EDOM => _platform((_Codes codes) => codes.edom);
/// File exists
// ignore: non_constant_identifier_names
static int get EEXIST => _platform((_Codes codes) => codes.eexist);
/// Bad address
// ignore: non_constant_identifier_names
static int get EFAULT => _platform((_Codes codes) => codes.efault);
/// File too large
// ignore: non_constant_identifier_names
static int get EFBIG => _platform((_Codes codes) => codes.efbig);
/// Illegal byte sequence
// ignore: non_constant_identifier_names
static int get EILSEQ => _platform((_Codes codes) => codes.eilseq);
/// Interrupted system call
// ignore: non_constant_identifier_names
static int get EINTR => _platform((_Codes codes) => codes.eintr);
/// Invalid argument
// ignore: non_constant_identifier_names
static int get EINVAL => _platform((_Codes codes) => codes.einval);
/// I/O error
// ignore: non_constant_identifier_names
static int get EIO => _platform((_Codes codes) => codes.eio);
/// Is a directory
// ignore: non_constant_identifier_names
static int get EISDIR => _platform((_Codes codes) => codes.eisdir);
/// Too many levels of symbolic links
// ignore: non_constant_identifier_names
static int get ELOOP => _platform((_Codes codes) => codes.eloop);
/// Too many open files
// ignore: non_constant_identifier_names
static int get EMFILE => _platform((_Codes codes) => codes.emfile);
/// Too many links
// ignore: non_constant_identifier_names
static int get EMLINK => _platform((_Codes codes) => codes.emlink);
/// File name too long
// ignore: non_constant_identifier_names
static int get ENAMETOOLONG =>
_platform((_Codes codes) => codes.enametoolong);
/// File table overflow
// ignore: non_constant_identifier_names
static int get ENFILE => _platform((_Codes codes) => codes.enfile);
/// No such device
// ignore: non_constant_identifier_names
static int get ENODEV => _platform((_Codes codes) => codes.enodev);
/// No such file or directory
// ignore: non_constant_identifier_names
static int get ENOENT => _platform((_Codes codes) => codes.enoent);
/// Exec format error
// ignore: non_constant_identifier_names
static int get ENOEXEC => _platform((_Codes codes) => codes.enoexec);
/// No record locks available
// ignore: non_constant_identifier_names
static int get ENOLCK => _platform((_Codes codes) => codes.enolck);
/// Out of memory
// ignore: non_constant_identifier_names
static int get ENOMEM => _platform((_Codes codes) => codes.enomem);
/// No space left on device
// ignore: non_constant_identifier_names
static int get ENOSPC => _platform((_Codes codes) => codes.enospc);
/// Function not implemented
// ignore: non_constant_identifier_names
static int get ENOSYS => _platform((_Codes codes) => codes.enosys);
/// Not a directory
// ignore: non_constant_identifier_names
static int get ENOTDIR => _platform((_Codes codes) => codes.enotdir);
/// Directory not empty
// ignore: non_constant_identifier_names
static int get ENOTEMPTY => _platform((_Codes codes) => codes.enotempty);
/// Not a typewriter
// ignore: non_constant_identifier_names
static int get ENOTTY => _platform((_Codes codes) => codes.enotty);
/// No such device or address
// ignore: non_constant_identifier_names
static int get ENXIO => _platform((_Codes codes) => codes.enxio);
/// Operation not permitted
// ignore: non_constant_identifier_names
static int get EPERM => _platform((_Codes codes) => codes.eperm);
/// Broken pipe
// ignore: non_constant_identifier_names
static int get EPIPE => _platform((_Codes codes) => codes.epipe);
/// Math result not representable
// ignore: non_constant_identifier_names
static int get ERANGE => _platform((_Codes codes) => codes.erange);
/// Read-only file system
// ignore: non_constant_identifier_names
static int get EROFS => _platform((_Codes codes) => codes.erofs);
/// Illegal seek
// ignore: non_constant_identifier_names
static int get ESPIPE => _platform((_Codes codes) => codes.espipe);
/// No such process
// ignore: non_constant_identifier_names
static int get ESRCH => _platform((_Codes codes) => codes.esrch);
/// Cross-device link
// ignore: non_constant_identifier_names
static int get EXDEV => _platform((_Codes codes) => codes.exdev);
static int _platform(int getCode(_Codes codes)) {
_Codes codes = (_platforms[operatingSystem] ?? _platforms['linux'])!;
return getCode(codes);
}
}
const Map<String, _Codes> _platforms = <String, _Codes>{
'linux': _LinuxCodes(),
'macos': _MacOSCodes(),
'windows': _WindowsCodes(),
};
abstract class _Codes {
int get e2big;
int get eacces;
int get eagain;
int get ebadf;
int get ebusy;
int get echild;
int get edeadlk;
int get edom;
int get eexist;
int get efault;
int get efbig;
int get eilseq;
int get eintr;
int get einval;
int get eio;
int get eisdir;
int get eloop;
int get emfile;
int get emlink;
int get enametoolong;
int get enfile;
int get enodev;
int get enoent;
int get enoexec;
int get enolck;
int get enomem;
int get enospc;
int get enosys;
int get enotdir;
int get enotempty;
int get enotty;
int get enxio;
int get eperm;
int get epipe;
int get erange;
int get erofs;
int get espipe;
int get esrch;
int get exdev;
}
class _LinuxCodes implements _Codes {
const _LinuxCodes();
@override
int get e2big => 7;
@override
int get eacces => 13;
@override
int get eagain => 11;
@override
int get ebadf => 9;
@override
int get ebusy => 16;
@override
int get echild => 10;
@override
int get edeadlk => 35;
@override
int get edom => 33;
@override
int get eexist => 17;
@override
int get efault => 14;
@override
int get efbig => 27;
@override
int get eilseq => 84;
@override
int get eintr => 4;
@override
int get einval => 22;
@override
int get eio => 5;
@override
int get eisdir => 21;
@override
int get eloop => 40;
@override
int get emfile => 24;
@override
int get emlink => 31;
@override
int get enametoolong => 36;
@override
int get enfile => 23;
@override
int get enodev => 19;
@override
int get enoent => 2;
@override
int get enoexec => 8;
@override
int get enolck => 37;
@override
int get enomem => 12;
@override
int get enospc => 28;
@override
int get enosys => 38;
@override
int get enotdir => 20;
@override
int get enotempty => 39;
@override
int get enotty => 25;
@override
int get enxio => 6;
@override
int get eperm => 1;
@override
int get epipe => 32;
@override
int get erange => 34;
@override
int get erofs => 30;
@override
int get espipe => 29;
@override
int get esrch => 3;
@override
int get exdev => 18;
}
class _MacOSCodes implements _Codes {
const _MacOSCodes();
@override
int get e2big => 7;
@override
int get eacces => 13;
@override
int get eagain => 35;
@override
int get ebadf => 9;
@override
int get ebusy => 16;
@override
int get echild => 10;
@override
int get edeadlk => 11;
@override
int get edom => 33;
@override
int get eexist => 17;
@override
int get efault => 14;
@override
int get efbig => 27;
@override
int get eilseq => 92;
@override
int get eintr => 4;
@override
int get einval => 22;
@override
int get eio => 5;
@override
int get eisdir => 21;
@override
int get eloop => 62;
@override
int get emfile => 24;
@override
int get emlink => 31;
@override
int get enametoolong => 63;
@override
int get enfile => 23;
@override
int get enodev => 19;
@override
int get enoent => 2;
@override
int get enoexec => 8;
@override
int get enolck => 77;
@override
int get enomem => 12;
@override
int get enospc => 28;
@override
int get enosys => 78;
@override
int get enotdir => 20;
@override
int get enotempty => 66;
@override
int get enotty => 25;
@override
int get enxio => 6;
@override
int get eperm => 1;
@override
int get epipe => 32;
@override
int get erange => 34;
@override
int get erofs => 30;
@override
int get espipe => 29;
@override
int get esrch => 3;
@override
int get exdev => 18;
}
class _WindowsCodes implements _Codes {
const _WindowsCodes();
@override
int get e2big => 7;
@override
int get eacces => 13;
@override
int get eagain => 11;
@override
int get ebadf => 9;
@override
int get ebusy => 16;
@override
int get echild => 10;
@override
int get edeadlk => 36;
@override
int get edom => 33;
@override
int get eexist => 17;
@override
int get efault => 14;
@override
int get efbig => 27;
@override
int get eilseq => 42;
@override
int get eintr => 4;
@override
int get einval => 22;
@override
int get eio => 5;
@override
int get eisdir => 21;
@override
int get eloop => -1;
@override
int get emfile => 24;
@override
int get emlink => 31;
@override
int get enametoolong => 38;
@override
int get enfile => 23;
@override
int get enodev => 19;
@override
int get enoent => 2;
@override
int get enoexec => 8;
@override
int get enolck => 39;
@override
int get enomem => 12;
@override
int get enospc => 28;
@override
int get enosys => 40;
@override
int get enotdir => 20;
@override
int get enotempty => 41;
@override
int get enotty => 25;
@override
int get enxio => 6;
@override
int get eperm => 1;
@override
int get epipe => 32;
@override
int get erange => 34;
@override
int get erofs => 30;
@override
int get espipe => 29;
@override
int get esrch => 3;
@override
int get exdev => 18;
}