diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/feature/options.sh b/cde/programs/dtksh/ksh93/src/cmd/ksh93/feature/options.sh index 9325e5fbe..d9801737e 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/feature/options.sh +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/feature/options.sh @@ -42,7 +42,6 @@ do : This could be done with eval, but eval broken in some shells KIA) j=$KIA;; MULTIBYTE) j=$MULTIBYTE;; OLDTERMIO) echo "#include " > /tmp/dummy$$.c - echo "#include " >>/tmp/dummy$$.c if ${CC-cc} -E /tmp/dummy$$.c > /dev/null 2>&1 then j=$OLDTERMIO fi diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/hash/hashalloc.c b/cde/programs/dtksh/ksh93/src/lib/libast/hash/hashalloc.c index 3f5e0ae8d..87c46bee3 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/hash/hashalloc.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/hash/hashalloc.c @@ -96,6 +96,12 @@ static const char id_hash[] = "\n@(#)hash (AT&T Bell Laboratories) 05/09/95\0\n" #include "hashlib.h" +#if defined(va_copy) +#define __VA_COPY__(d,s) va_copy(d,s) +#else +#define __VA_COPY__(d,s) __va_copy(d,s) +#endif + #if _DLL_INDIRECT_DATA && !_DLL static Hash_info_t hash_info_data; Hash_info_t hash_info = &hash_info_data; @@ -222,10 +228,10 @@ hashalloc __PARAM__((Hash_table_t* ref, ...), (va_alist)) __OTORP__(va_dcl) #else if (vp < &va[elementsof(va)]) { - __va_copy( *vp, ap ); + __VA_COPY__( *vp, ap ); vp++; } - __va_copy(ap, va_listval(va_arg(ap, va_listarg))); + __VA_COPY__(ap, va_listval(va_arg(ap, va_listarg))); #endif break; case 0: @@ -235,7 +241,7 @@ hashalloc __PARAM__((Hash_table_t* ref, ...), (va_alist)) __OTORP__(va_dcl) ap = *--vp; #else vp--; - __va_copy( ap, *vp ); + __VA_COPY__( ap, *vp ); #endif break; } diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c b/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c index e47c990e8..94e17ea65 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c @@ -56,6 +56,12 @@ #define HIGHBIT (~(((ulong)~0L) >> 1)) #endif +#if defined(va_copy) +#define __VA_COPY__(d,s) va_copy(d,s) +#elif defined(__va_copy) +#define __VA_COPY__(d,s) __va_copy(d,s) +#endif + #define F_LEFT 000001 /* left justification (-) */ #define F_SIGN 000002 /* must set a sign - or + */ #define F_BLANK 000004 /* if not - and +, then prepend a blank */ @@ -92,10 +98,10 @@ } #define GETARGL(elt,arge,argf,args,etype,type,fmt,t_user,n_user) \ { if(!argf) \ - __va_copy( elt, va_arg(args,type) ); \ + __VA_COPY__( *elt, *va_arg(args,type) ); \ else if((*argf)(fmt,(char*)(&arge),t_user,n_user) < 0) \ goto pop_fa; \ - else __va_copy( elt, arge ); \ + else __VA_COPY__( *elt, *arge ); \ } #if __STD_C @@ -301,15 +307,14 @@ loop_fa : GETARG(form,form,argf,args,char*,char*,'1',t_user,n_user); if(!form) form = ""; -#if (defined(CSRG_BASED) && !defined(__LP64__)) || \ - (defined(__linux__) && !defined(__LP64__)) || defined(sun) +#if defined(__VA_COPY__) + GETARGL(argsp,argsp,argf,args,va_list*,va_list*,'2',t_user,n_user); + __VA_COPY__( fa->args, args ); + __VA_COPY__( args, *argsp ); +#else GETARG(argsp,argsp,argf,args,va_list*,va_list*,'2',t_user,n_user); memcpy((Void_t*)(&(fa->args)), (Void_t*)(&args), sizeof(va_list)); memcpy((Void_t*)(&args), (Void_t*)argsp, sizeof(va_list)); -#else - GETARGL(argsp,argsp,argf,args,va_list*,va_list*,'2',t_user,n_user); - __va_copy( fa->args, args ); - __va_copy( args, argsp ); #endif fa->argf.p = argf; fa->extf.p = extf; @@ -324,7 +329,7 @@ loop_fa : va_list savarg = args; /* is this portable? */ #else va_list savarg; /* is this portable? Sorry .. NO. */ - __va_copy( savarg, args ); + __VA_COPY__( savarg, args ); #endif GETARG(sp,astr,argf,args,char*,char*,fmt,t_user,n_user); @@ -336,7 +341,7 @@ loop_fa : #if defined(CSRG_BASED) && !defined(__LP64__) args = savarg; /* extf failed, treat as if unmatched */ #else - __va_copy( args, savarg ); /* extf failed, treat as if unmatched */ + __VA_COPY__( args, savarg ); /* extf failed, treat as if unmatched */ #endif } diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvscanf.c b/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvscanf.c index 26ec89871..a3a16c131 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvscanf.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvscanf.c @@ -61,6 +61,12 @@ #endif #endif +#if defined(va_copy) +#define __VA_COPY__(d,s) va_copy(d,s) +#elif defined(__va_copy) +#define __VA_COPY__(d,s) __va_copy(d,s) +#endif + #define MAXLENGTH (int)(((uint)~0)>>1) #define a2f(s) strtod(s,NIL(char**)) @@ -236,10 +242,10 @@ loop_fa : fa->form = (char*)form; if(!(form = va_arg(args,char*))) form = ""; -#ifdef __ppc - __va_copy( argsp, va_arg(args,va_list*) ); - __va_copy( fa->args, args ); - __va_copy( args, argsp ); +#if defined(__VA_COPY__) + __VA_COPY__( *argsp, *va_arg(args,va_list*) ); + __VA_COPY__( fa->args, args ); + __VA_COPY__( args, *argsp ); #else argsp = va_arg(args,va_list*); memcpy((Void_t*)(&(fa->args)), (Void_t*)(&args), sizeof(va_list)); diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/string/tokscan.c b/cde/programs/dtksh/ksh93/src/lib/libast/string/tokscan.c index e669121e1..bb28c6e84 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/string/tokscan.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/string/tokscan.c @@ -93,6 +93,11 @@ #define va_listarg va_list* #endif #include +#if defined(va_copy) +#define __VA_COPY__(d,s) va_copy(d,s) +#else +#define __VA_COPY__(d,s) __va_copy(d,s) +#endif static char empty[1]; @@ -229,7 +234,7 @@ tokscan __PARAM__((char* s, char** nxt, const char* fmt, ...), (va_alist)) __OTO if (f = prv_f) { prv_f = 0; - __va_copy( ap, prv_ap ); + __VA_COPY__( ap, prv_ap ); continue; } goto done; @@ -258,8 +263,8 @@ tokscan __PARAM__((char* s, char** nxt, const char* fmt, ...), (va_alist)) __OTO case ':': prv_f = f; f = va_arg(ap, char*); - __va_copy( prv_ap, ap ); - __va_copy(ap, va_listval(va_arg(ap, va_listarg))); + __VA_COPY__( prv_ap, ap ); + __VA_COPY__(ap, va_listval(va_arg(ap, va_listarg))); continue; case 'c': p_char = va_arg(ap, char*);