2 /* : : generated by proto : : */
3 /***********************************************************************
5 * This software is part of the ast package *
6 * Copyright (c) 1992-2010 AT&T Intellectual Property *
7 * and is licensed under the *
8 * Common Public License, Version 1.0 *
9 * by AT&T Intellectual Property *
11 * A copy of the License is available at *
12 * http://www.opensource.org/licenses/cpl1.0.txt *
13 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
15 * Information and Software Systems Research *
19 * Glenn Fowler <gsf@research.att.com> *
20 * David Korn <dgk@research.att.com> *
22 ***********************************************************************/
27 * builtin cmd definitions
31 #if !defined(__PROTO__)
32 #include <prototyped.h>
34 #if !defined(__LINKAGE__)
35 #define __LINKAGE__ /* 2004-08-11 transition */
45 #define cmdinit _cmd_init
47 #define ERROR_CALLBACK ERROR_SET
49 #if _BLD_cmd && defined(__EXPORT__)
51 #define __MANGLE__ __LINKAGE__ __EXPORT__
57 #define __MANGLE__ __LINKAGE__
59 #if defined(CMD_BUILTIN) && !defined(CMD_STANDALONE)
60 #define CMD_STANDALONE CMD_BUILTIN
65 #define CMD_CONTEXT(c) ((Shbltin_t*)0)
73 extern __MANGLE__
int CMD_STANDALONE
__PROTO__((int, char**, __V_
*));
80 * command initialization
84 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
;){
88 if (cp
= strrchr(argv
[0], '/'))
92 if (pp
= strrchr(cp
, '_'))
95 if (!error_info
.catalog
)
96 error_info
.catalog
= (char*)catalog
;
99 error_info
.flags
|= flags
& ~(ERROR_CALLBACK
|ERROR_NOTIFY
);
106 main
__PARAM__((int argc
, char** argv
), (argc
, argv
)) __OTORP__(int argc
; char** argv
;){
114 if (s
= strrchr(argv
[0], '/'))
116 else if (!(s
= argv
[0]))
118 if ((t
= strrchr(s
, '_')) && *++t
)
123 strncpy(buf
+ 3, s
, sizeof(buf
) - 4);
124 buf
[sizeof(buf
) - 1] = 0;
125 if (t
= strchr(buf
, '.'))
129 if (dll
= dlopen(NiL
, RTLD_LAZY
))
131 if (fun
= (Shbltin_f
)dlsym(dll
, buf
+ 1))
133 if (fun
= (Shbltin_f
)dlsym(dll
, buf
))
136 if (dll
= dllplug(NiL
, "cmd", NiL
, RTLD_LAZY
, NiL
, 0))
138 if (fun
= (Shbltin_f
)dlsym(dll
, buf
+ 1))
140 if (fun
= (Shbltin_f
)dlsym(dll
, buf
))
145 return (*fun
)(argc
, argv
, NiL
);
147 return CMD_STANDALONE(argc
, argv
, NiL
);
155 #define CMD_CONTEXT(p) ((Shbltin_t*)(p))
156 #define cmdinit(a,b,c,d,e) do{if(_cmd_init(a,b,c,d,e))return -1;}while(0)
158 #define CMD_CONTEXT(p) (((p)&&((Shbltin_t*)(p))->version>=20071012&&((Shbltin_t*)(p))->version<20350101)?((Shbltin_t*)(p)):0)
159 #define cmdinit(a,b,c,d,e) do{if((c)&&!CMD_CONTEXT(c))c=0;if(_cmd_init(a,b,c,d,e))return -1;}while(0)
162 #if _BLD_cmd && defined(__EXPORT__)
164 #define __MANGLE__ __LINKAGE__ __EXPORT__
167 extern __MANGLE__
int _cmd_init
__PROTO__((int, char**, __V_
*, const char*, int));
170 #define __MANGLE__ __LINKAGE__