diff options
author | cvpcs <root@cvpcs.org> | 2010-06-03 02:20:07 -0500 |
---|---|---|
committer | cvpcs <root@cvpcs.org> | 2010-06-03 02:20:07 -0500 |
commit | a013d4e66d2545c04e2599aa2e4a4fc50468153d (patch) | |
tree | 415d0a5af06f28f3e3b6b389ff6818e3ee774ff8 /builtins/return.c | |
parent | 772f20abb0a3a0979c440114bf3a1cff5b3cef03 (diff) | |
download | external_bash-a013d4e66d2545c04e2599aa2e4a4fc50468153d.zip external_bash-a013d4e66d2545c04e2599aa2e4a4fc50468153d.tar.gz external_bash-a013d4e66d2545c04e2599aa2e4a4fc50468153d.tar.bz2 |
first successful build of bash-4.1
Diffstat (limited to 'builtins/return.c')
-rw-r--r-- | builtins/return.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/builtins/return.c b/builtins/return.c new file mode 100644 index 0000000..d48b198 --- /dev/null +++ b/builtins/return.c @@ -0,0 +1,45 @@ +/* return.c, created from return.def. */ +#line 22 "./return.def" + +#line 36 "./return.def" + +#include <config.h> + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include <sys/types.h> +# endif +# include <unistd.h> +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" + +extern int last_command_exit_value; +extern int subshell_environment; +extern int return_catch_flag, return_catch_value; + +/* If we are executing a user-defined function then exit with the value + specified as an argument. if no argument is given, then the last + exit status is used. */ +int +return_builtin (list) + WORD_LIST *list; +{ + if (no_options (list)) + return (EX_USAGE); + list = loptend; /* skip over possible `--' */ + + return_catch_value = get_exitstat (list); + + if (return_catch_flag) + longjmp (return_catch, 1); + else + { + builtin_error (_("can only `return' from a function or sourced script")); + return (EXECUTION_FAILURE); + } +} |