| This file is inlib.def, from which is created inlib.c. |
| It implements the Apollo-specific builtin "inlib" in Bash. |
| |
| Copyright (C) 1987-2002 Free Software Foundation, Inc. |
| |
| This file is part of GNU Bash, the Bourne Again SHell. |
| |
| Bash is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation, either version 3 of the License, or |
| (at your option) any later version. |
| |
| Bash is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with Bash. If not, see <http://www.gnu.org/licenses/>. |
| |
| $PRODUCES inlib.c |
| #include <config.h> |
| |
| #include <stdio.h> |
| #include "../shell.h" |
| |
| $BUILTIN inlib |
| $FUNCTION inlib_builtin |
| $DEPENDS_ON apollo |
| $SHORT_DOC inlib pathname [pathname...] |
| Install user-supplied library. |
| |
| Install a user-supplied library specified by pathname in the current |
| shell process. The library is used to resolve external references |
| in programs and libraries loaded after its installation. Note |
| that the library is not loaded into the address space unless it is |
| needed to resolve an external reference. The list of inlibed |
| libraries is passed to all children of the current shell. |
| |
| Exit Status: |
| Returns success unless PATHNAME is not found or an error occurs. |
| $END |
| |
| #if defined (apollo) |
| |
| #include <apollo/base.h> |
| #include <apollo/loader.h> |
| |
| inlib_builtin (list) |
| WORD_LIST *list; |
| { |
| status_$t status; |
| int return_value; |
| short len; |
| |
| if (!list) |
| { |
| builtin_usage (); |
| return (EX_USAGE); |
| } |
| |
| return_value = EXECUTION_SUCCESS; |
| |
| while (list) |
| { |
| len = (short)strlen (list->word->word); |
| loader_$inlib (list->word->word, len, &status); |
| |
| if (status.all != status_$ok) |
| { |
| builtin_error (_("%s: inlib failed"), list->word->word); |
| return_value = EXECUTION_FAILURE; |
| } |
| |
| list = list->next; |
| } |
| |
| return (return_value); |
| } |
| #endif /* apollo */ |