From 3b5b7f48848d098c6190781f8790a1b0dcb0217c Mon Sep 17 00:00:00 2001 From: Daniel Hunsaker Date: Fri, 22 Feb 2013 19:17:56 -0700 Subject: Updated exit codes as constant values Re-allocated exit status codes according to three references, which follow: BSD sysexits.h:http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=sysexits GNU recomendations:http://www.gnu.org/software/libc/manual/html_node/Exit-Status.html Bash scripting:http://tldp.org/LDP/abs/html/exitcodes.html The GNU recommendations stem from and expand upon the standard C/C++ library (stdlibc) definitions, while also suggesting some best-practice conventions which happen to prevent exit status code collisions with bash, and probably other shells. The re-allocated codes are now mapped to constant values, set in *application/config/constants.php*, and used throughout the CodeIgniter core. They would additionally be used in *index.php*, but the constants file hasn't been loaded at that point, so the integer values are used instead, and a comment follows each such use with amplifying information on why that particular value was selected. Finally, the errors documentation has been updated accordingly. Signed-off-by: Daniel Hunsaker --- application/config/constants.php | 110 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) (limited to 'application/config/constants.php') diff --git a/application/config/constants.php b/application/config/constants.php index 58264ed5a..32a715952 100644 --- a/application/config/constants.php +++ b/application/config/constants.php @@ -73,6 +73,116 @@ define('FOPEN_READ_WRITE_CREATE_STRICT', 'x+b'); */ define('SHOW_DEBUG_BACKTRACE', TRUE); +/* +|-------------------------------------------------------------------------- +| Exit Status Codes +|-------------------------------------------------------------------------- +| +| Used to indicate the conditions under which the script is exit()ing. +| While there is no universal standard for error codes, there are some +| broad conventions. Three such conventions are presented below, for +| those who wish to make use of them. The CodeIgniter defaults were +| chosen for the least overlap with these conventions, while still +| leaving room for others to be defined in future versions and user +| applications. The CodeIgniter values are defined last so you can +| set them to values used by any of the other conventions, and do so +| by name instead of value. +| +*/ + +/* + * standard C/C++ library (stdlibc): + */ +/* +define('LIBC_EXIT_SUCCESS', 0); +define('LIBC_EXIT_FAILURE', 1); // generic errors +*/ + +/* + * BSD sysexits.h + */ +/* +define('SYS_EX_OK', 0); // successful termination +define('SYS_EX_USAGE', 64); // command line usage error +define('SYS_EX_DATAERR', 65); // data format error +define('SYS_EX_NOINPUT', 66); // cannot open input +define('SYS_EX_NOUSER', 67); // specified user unknown +define('SYS_EX_NOHOST', 68); // specified host name unknown +define('SYS_EX_UNAVAILABLE', 69); // service unavailable +define('SYS_EX_SOFTWARE', 70); // internal software error +define('SYS_EX_OSERR', 71); // system error (e.g., can't fork) +define('SYS_EX_OSFILE', 72); // critical OS file missing +define('SYS_EX_CANTCREAT', 73); // can't create (user) output file +define('SYS_EX_IOERR', 74); // input/output error +define('SYS_EX_TEMPFAIL', 75); // temporary failure; user is invited to retry +define('SYS_EX_PROTOCOL', 76); // remote error in protocol +define('SYS_EX_NOPERM', 77); // permission denied +define('SYS_EX_CONFIG', 78); // configuration error +*/ + +/* + * Bash scripting + */ +/* +define('BASH_EXIT_SUCCESS', 0); +define('BASH_EXIT_ERROR', 1); +define('BASH_EXIT_BUILTIN_MISUSE', 2); +define('BASH_EXIT_CANT_EXEC', 126); +define('BASH_EXIT_CMD_NOT_FOUND', 127); +define('BASH_EXIT_INVALID_EXIT', 128); +define('BASH_EXIT_SIG_HUP', 129); +define('BASH_EXIT_SIG_INT', 130); +define('BASH_EXIT_SIG_QUIT', 131); +define('BASH_EXIT_SIG_ILL', 132); +define('BASH_EXIT_SIG_TRAP', 133); +define('BASH_EXIT_SIG_ABRT', 134); +define('BASH_EXIT_SIG_BUS', 135); +define('BASH_EXIT_SIG_FPE', 136); +define('BASH_EXIT_SIG_KILL', 137); +define('BASH_EXIT_SIG_USR1', 138); +define('BASH_EXIT_SIG_SEGV', 139); +define('BASH_EXIT_SIG_USR2', 140); +define('BASH_EXIT_SIG_PIPE', 141); +define('BASH_EXIT_SIG_ALRM', 142); +define('BASH_EXIT_SIG_TERM', 143); +define('BASH_EXIT_SIG_STKFLT', 144); +define('BASH_EXIT_SIG_CHLD', 145); +define('BASH_EXIT_SIG_CONT', 146); +define('BASH_EXIT_SIG_STOP', 147); +define('BASH_EXIT_SIG_TSTP', 148); +define('BASH_EXIT_SIG_TTIN', 149); +define('BASH_EXIT_SIG_TTOU', 150); +define('BASH_EXIT_SIG_URG', 151); +define('BASH_EXIT_SIG_XCPU', 152); +define('BASH_EXIT_SIG_XFSZ', 153); +define('BASH_EXIT_SIG_VTALRM', 154); +define('BASH_EXIT_SIG_PROF', 155); +define('BASH_EXIT_SIG_WINCH', 156); +define('BASH_EXIT_SIG_IO', 157); +define('BASH_EXIT_SIG_PWR', 158); +define('BASH_EXIT_SIG_SYS', 159); +*/ +/* + * BASH_EXIT_OUTOFRANGE would be 255, and mean an exit status code beyond + * the range of 0-255 was given. However, this code CANNOT BE USED IN PHP, + * so it isn't actually defined, even in a comment. + */ + +/* + * CodeIgniter defaults + */ +define('EXIT_SUCCESS', 0); // no errors +define('EXIT_FAILURE', 1); // generic error +define('EXIT_CONFIG', 3); // configuration error +define('EXIT_404', 4); // file not found; convenience value +define('EXIT_UNK_FILE', 4); // file not found +define('EXIT_UNK_CLASS', 5); // unknown class +define('EXIT_UNK_MEMBER', 6); // unknown class member +define('EXIT_USER_INPUT', 7); // invalid user input +define('EXIT_DATABASE', 8); // database error +define('EXIT__AUTO_MIN', 9); // lowest automatically-assigned error code +define('EXIT__AUTO_MAX', 125); // highest automatically-assigned error code + /* End of file constants.php */ /* Location: ./application/config/constants.php */ \ No newline at end of file -- cgit v1.2.3-24-g4f1b