diff options
Diffstat (limited to 'usr/src/lib/libcmd/sparc/include/ast/cmd.h')
-rw-r--r-- | usr/src/lib/libcmd/sparc/include/ast/cmd.h | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/usr/src/lib/libcmd/sparc/include/ast/cmd.h b/usr/src/lib/libcmd/sparc/include/ast/cmd.h new file mode 100644 index 0000000000..2484c17c5a --- /dev/null +++ b/usr/src/lib/libcmd/sparc/include/ast/cmd.h @@ -0,0 +1,187 @@ + +/* : : generated by proto : : */ +/*********************************************************************** +* * +* This software is part of the ast package * +* Copyright (c) 1992-2007 AT&T Knowledge Ventures * +* and is licensed under the * +* Common Public License, Version 1.0 * +* by AT&T Knowledge Ventures * +* * +* A copy of the License is available at * +* http://www.opensource.org/licenses/cpl1.0.txt * +* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * +* * +* Information and Software Systems Research * +* AT&T Research * +* Florham Park NJ * +* * +* Glenn Fowler <gsf@research.att.com> * +* David Korn <dgk@research.att.com> * +* * +***********************************************************************/ + +/* + * AT&T Research + * + * builtin cmd definitions + */ + +#ifndef _CMD_H +#if !defined(__PROTO__) +#include <prototyped.h> +#endif +#if !defined(__LINKAGE__) +#define __LINKAGE__ /* 2004-08-11 transition */ +#endif + +#define _CMD_H + +#include <ast.h> +#include <error.h> +#include <stak.h> + +#define cmdinit _cmd_init +#define cmdquit() 0 + +#if _BLD_cmd && defined(__EXPORT__) +#undef __MANGLE__ +#define __MANGLE__ __LINKAGE__ __EXPORT__ +#endif + +#include <cmdext.h> + +#undef __MANGLE__ +#define __MANGLE__ __LINKAGE__ + +#if defined(CMD_BUILTIN) && !defined(CMD_STANDALONE) +#define CMD_STANDALONE CMD_BUILTIN +#endif + +#ifdef CMD_STANDALONE + +#if CMD_DYNAMIC + +#include <dlldefs.h> + +typedef int (*Builtin_f) __PROTO__((int, char**, __V_*)); + +#else + +extern __MANGLE__ int CMD_STANDALONE __PROTO__((int, char**, __V_*)); + +#endif + +#ifndef CMD_BUILTIN + +/* + * command initialization + */ + +static int +cmdinit __PARAM__((int argc, register char** argv, __V_* context, const char* catalog, int flags), (argc, argv, context, catalog, flags)) __OTORP__(int argc; register char** argv; __V_* context; const char* catalog; int flags;){ + register char* cp; + register char* pp; + + if (cp = strrchr(argv[0], '/')) + cp++; + else + cp = argv[0]; + if (pp = strrchr(cp, '_')) + cp = pp + 1; + error_info.id = cp; + if (!error_info.catalog) + error_info.catalog = (char*)catalog; + opt_info.index = 0; + if (context) + error_info.flags |= flags; + return 0; +} + +#endif + +int +main __PARAM__((int argc, char** argv), (argc, argv)) __OTORP__(int argc; char** argv;){ +#if CMD_DYNAMIC + register char* s; + register char* t; + __V_* dll; + Builtin_f fun; + char buf[64]; + + if (s = strrchr(argv[0], '/')) + s++; + else if (!(s = argv[0])) + return 127; + if ((t = strrchr(s, '_')) && *++t) + s = t; + buf[0] = '_'; + buf[1] = 'b'; + buf[2] = '_'; + strncpy(buf + 3, s, sizeof(buf) - 4); + buf[sizeof(buf) - 1] = 0; + if (t = strchr(buf, '.')) + *t = 0; + for (;;) + { + if (dll = dlopen(NiL, RTLD_LAZY)) + { + if (fun = (Builtin_f)dlsym(dll, buf + 1)) + break; + if (fun = (Builtin_f)dlsym(dll, buf)) + break; + } + if (dll = dllfind("cmd", NiL, RTLD_LAZY)) + { + if (fun = (Builtin_f)dlsym(dll, buf + 1)) + break; + if (fun = (Builtin_f)dlsym(dll, buf)) + break; + } + return 127; + } + return (*fun)(argc, argv, NiL); +#else + return CMD_STANDALONE(argc, argv, NiL); +#endif +} + +#else + +#undef cmdinit +#define cmdinit(a,b,c,d,e) do{if(_cmd_init(a,b,c,d,e))return -1;}while(0) + +#ifndef CMD_BUILTIN + +#undef cmdquit +#define cmdquit() (_cmd_quit) + +#if _BLD_cmd && defined(__EXPORT__) +#undef __MANGLE__ +#define __MANGLE__ __LINKAGE__ __EXPORT__ +#endif +#if !_BLD_cmd && defined(__IMPORT__) +#undef __MANGLE__ +#define __MANGLE__ __LINKAGE__ __IMPORT__ +#endif + +extern __MANGLE__ int _cmd_quit; + +#undef __MANGLE__ +#define __MANGLE__ __LINKAGE__ + +#endif + +#if _BLD_cmd && defined(__EXPORT__) +#undef __MANGLE__ +#define __MANGLE__ __LINKAGE__ __EXPORT__ +#endif + +extern __MANGLE__ int _cmd_init __PROTO__((int, char**, __V_*, const char*, int)); + +#undef __MANGLE__ +#define __MANGLE__ __LINKAGE__ + +#endif + +#endif |