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') 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 From 50dfe0175df02fe4aa243757bdf1b42fb9fc3169 Mon Sep 17 00:00:00 2001 From: Daniel Hunsaker Date: Mon, 4 Mar 2013 02:05:20 -0700 Subject: Updated in accordance with feedback from @narfbg - Removed commented lists of constants from the three reference conventions, replacing each with the URLs at which more information can be found. - Renamed a few constants to more closely reflect CodeIgniter conventions. - Modified a couple of lines which were in violation of the CI Style Guide. Signed-off-by: Daniel Hunsaker --- application/config/constants.php | 108 ++++++--------------------------------- 1 file changed, 17 insertions(+), 91 deletions(-) (limited to 'application/config') diff --git a/application/config/constants.php b/application/config/constants.php index 32a715952..dc84712cd 100644 --- a/application/config/constants.php +++ b/application/config/constants.php @@ -80,104 +80,30 @@ define('SHOW_DEBUG_BACKTRACE', TRUE); | | 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 +| broad conventions. Three such conventions are mentioned 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. +| applications. +| +| The three main conventions used for determining exit status codes +| are as follows: +| +| Standard C/C++ Library (stdlibc): +| http://www.gnu.org/software/libc/manual/html_node/Exit-Status.html +| (This link also contains other GNU-specific conventions) +| BSD sysexits.h: +| http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=sysexits +| Bash scripting: +| http://tldp.org/LDP/abs/html/exitcodes.html | */ - -/* - * 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_ERROR', 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_UNKNOWN_FILE', 4); // file not found +define('EXIT_UNKNOWN_CLASS', 5); // unknown class +define('EXIT_UNKNOWN_METHOD', 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 -- cgit v1.2.3-24-g4f1b