Compile dtksh on FreeBSD
dtksh can be now compiled on FreeBSD. Work in progress. Needs a real Korn shell to bootstrap as $(KSHELL). KSHELL is set by default to /usr/local/bin/ksh93 (generic POSIX shell may not work) Tested on: FreeBSD 9.0-BETA1 #0 r224912M amd64 Known issues: xvmstat: * sleep does not work well (SIGSTOP is delivered) xpong: * xpong: line 220: ball1x = max_x * 2.2 / 3 : arithmetic syntax error * dtksh is rebuilt uncondtionally every time make is invoked
This commit is contained in:
committed by
Jon Trulson
parent
441a25b361
commit
d3206f4514
@@ -112,7 +112,7 @@ hashalloc __PARAM__((Hash_table_t* ref, ...), (va_alist)) __OTORP__(va_dcl)
|
||||
register Hash_table_t* ret = 0;
|
||||
register int internal;
|
||||
int n;
|
||||
va_list ap;
|
||||
va_list ap, vl;
|
||||
va_list va[4];
|
||||
va_list* vp = va;
|
||||
HASHregion region = 0;
|
||||
@@ -214,27 +214,19 @@ hashalloc __PARAM__((Hash_table_t* ref, ...), (va_alist)) __OTORP__(va_dcl)
|
||||
tab->flags |= HASH_STATIC;
|
||||
break;
|
||||
case HASH_va_list:
|
||||
#ifdef __ppc
|
||||
if (vp < &va[elementsof(va)])
|
||||
{
|
||||
__va_copy( *vp, ap );
|
||||
vp++;
|
||||
}
|
||||
__va_copy(ap, *((va_list *) va_arg(ap, va_list)) );
|
||||
#else
|
||||
if (vp < &va[elementsof(va)]) *vp++ = ap;
|
||||
ap = va_arg(ap, va_list);
|
||||
#endif
|
||||
vl = va_arg(ap, va_list);
|
||||
__va_copy(ap, vl);
|
||||
break;
|
||||
case 0:
|
||||
if (vp > va)
|
||||
{
|
||||
#ifdef __ppc
|
||||
vp--;
|
||||
__va_copy( ap, *vp );
|
||||
#else
|
||||
ap = *--vp;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
if (tab->flags & HASH_SCOPE)
|
||||
|
||||
@@ -285,8 +285,6 @@ initialize __PARAM__((register Feature_t* fp, const char* path, const char* comm
|
||||
|
||||
if (fp->op != OP_path_resolve || !fs3d(FS3D_TEST))
|
||||
{
|
||||
if (fp->op == OP_universe)
|
||||
ok = streq(_UNIV_DEFAULT, "att");
|
||||
if (p = getenv("PATH"))
|
||||
{
|
||||
register int r = 1;
|
||||
@@ -402,12 +400,6 @@ feature __PARAM__((const char* name, const char* path, const char* value), (name
|
||||
break;
|
||||
|
||||
case OP_universe:
|
||||
#if _lib_universe
|
||||
if (getuniverse(fp->value) < 0)
|
||||
strcpy(fp->value, "att");
|
||||
if (value)
|
||||
setuniverse(value);
|
||||
#else
|
||||
#ifdef UNIV_MAX
|
||||
n = 0;
|
||||
if (value)
|
||||
@@ -417,20 +409,13 @@ feature __PARAM__((const char* name, const char* path, const char* value), (name
|
||||
if (n >= univ_max)
|
||||
return(0);
|
||||
}
|
||||
#ifdef ATT_UNIV
|
||||
n = setuniverse(n + 1);
|
||||
if (!value && n > 0)
|
||||
setuniverse(n);
|
||||
#else
|
||||
n = universe(value ? n + 1 : U_GET);
|
||||
#endif
|
||||
if (n <= 0 || n >= univ_max)
|
||||
n = 1;
|
||||
strcpy(fp->value, univ_name[n - 1]);
|
||||
#else
|
||||
if (!synthesize(fp, path, value))
|
||||
initialize(fp, path, "echo", "att", "ucb");
|
||||
#endif
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@
|
||||
goto pop_fa; \
|
||||
else elt = (etype)arge; \
|
||||
}
|
||||
#ifdef __ppc
|
||||
#define GETARGL(elt,arge,argf,args,etype,type,fmt,t_user,n_user) \
|
||||
{ if(!argf) \
|
||||
__va_copy( elt, va_arg(args,type) ); \
|
||||
@@ -98,7 +97,6 @@
|
||||
goto pop_fa; \
|
||||
else __va_copy( elt, arge ); \
|
||||
}
|
||||
#endif
|
||||
|
||||
#if __STD_C
|
||||
sfvprintf(Sfio_t* f, const char* form, va_list args)
|
||||
@@ -303,15 +301,9 @@ loop_fa :
|
||||
GETARG(form,form,argf,args,char*,char*,'1',t_user,n_user);
|
||||
if(!form)
|
||||
form = "";
|
||||
#ifdef __ppc
|
||||
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));
|
||||
#endif
|
||||
fa->argf.p = argf;
|
||||
fa->extf.p = extf;
|
||||
fa->next = fast;
|
||||
@@ -321,12 +313,8 @@ loop_fa :
|
||||
default : /* unknown directive */
|
||||
if(extf)
|
||||
{
|
||||
#ifdef __ppc
|
||||
va_list savarg; /* is this portable? Sorry .. NO. */
|
||||
__va_copy( savarg, args );
|
||||
#else
|
||||
va_list savarg = args; /* is this portable? */
|
||||
#endif
|
||||
|
||||
GETARG(sp,astr,argf,args,char*,char*,fmt,t_user,n_user);
|
||||
astr = NIL(char*);
|
||||
@@ -334,11 +322,7 @@ loop_fa :
|
||||
if((sp = astr) )
|
||||
goto s_format;
|
||||
|
||||
#ifdef __ppc
|
||||
__va_copy( args, savarg ); /* extf failed, treat as if unmatched */
|
||||
#else
|
||||
args = savarg; /* extf failed, treat as if unmatched */
|
||||
#endif
|
||||
}
|
||||
|
||||
/* treat as text */
|
||||
|
||||
@@ -228,11 +228,7 @@ tokscan __PARAM__((register char* s, char** nxt, const char* fmt, ...), (va_alis
|
||||
if (f = prv_f)
|
||||
{
|
||||
prv_f = 0;
|
||||
#ifdef __ppc
|
||||
__va_copy( ap, prv_ap );
|
||||
#else
|
||||
ap = prv_ap;
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
goto done;
|
||||
@@ -261,15 +257,9 @@ tokscan __PARAM__((register char* s, char** nxt, const char* fmt, ...), (va_alis
|
||||
case ':':
|
||||
prv_f = f;
|
||||
f = va_arg(ap, char*);
|
||||
#ifdef __ppc
|
||||
__va_copy( prv_ap, ap );
|
||||
pap = va_arg(ap, va_list*)) );
|
||||
__va_copy( ap, pap );
|
||||
#else
|
||||
prv_ap = ap;
|
||||
pap = va_arg(ap, va_list*);
|
||||
memcpy(&ap, pap, sizeof(ap));
|
||||
#endif
|
||||
__va_copy( ap, pap );
|
||||
continue;
|
||||
case 'c':
|
||||
p_char = va_arg(ap, char*);
|
||||
|
||||
Reference in New Issue
Block a user