On 12/22/06, Glenn Fowler <gsf at research.att.com> wrote:
>
> new alpha source packages have been posted
> we believe that the multibyte problems have been addressed
> please put it throught the wringer
> we'd like to post official ast source before the new year
>
> thanks to all who helped improve this release
> peace in the new year
>
> the base archives and md5 sums are:
>
> http://www.research.att.com/~gsf/download/alpha/INIT.2006-12-22.md5
> http://www.research.att.com/~gsf/download/alpha/INIT.2006-12-22.tgz
> http://www.research.att.com/~gsf/download/alpha/ast-ksh.2006-12-22.md5
> http://www.research.att.com/~gsf/download/alpha/ast-ksh.2006-12-22.tgz
>
> -- Glenn Fowler -- AT&T Research, Florham Park NJ --
patch diff from 20061207 to 20061222 attached
--
_ Felix Schulte
_|_|_ mailto:felix.schulte at gmail.com
(0 0)
ooO--(_)--Ooo
-------------- next part --------------
diff -r -N -u ksh93_2006_12_07/lib/package/ast-ksh.html
ksh93_2006_12_22/lib/package/ast-ksh.html
--- ksh93_2006_12_07/lib/package/ast-ksh.html 2006-12-09 06:55:50.000000000
+0100
+++ ksh93_2006_12_22/lib/package/ast-ksh.html 2006-12-22 15:06:43.000000000
+0100
@@ -192,7 +192,10 @@
<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="ksh93
changes">ksh93 changes</A></H3></FONT></FONT></CENTER>
<PRE>
-06-11-20 --- Release ksh93s ---
+06-12-18 --- Release ksh93s ---
+06-12-19 A -v option was added to read. With this option the value of
+ the first variable name argument will become the default value
+ when read from a terminal device.
06-11-20 A bug in which "${foo[@]:1}}" expands a null argument
(instead of
no argument), when foo[0] is not empty has been fixed.
06-11-16 The discipline functions have been modified to allow each subscript
@@ -1615,6 +1618,10 @@
<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libast
changes">libast changes</A></H3></FONT></FONT></CENTER>
<PRE>
+06-12-20 features/libpath.sh: generalize sol.* LIBPATH patterns
+06-12-18 comp/setlocale.c: include ast_standards.h and ast_wchar.h !
+06-12-12 string/strperm.c: octal modes are absolute!
+06-12-11 comp/conf.tab: always defer ARG_MAX
06-12-07 Makefile: fix conftab.c generation CCFLAGS to match build - doh
06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches
06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 }
@@ -3261,7 +3268,7 @@
<TR>
<TD align=left></TD>
<TD align=center></TD>
-<TD align=right>December 09, 2006</TD>
+<TD align=right>December 22, 2006</TD>
</TR>
</TABLE>
<P>
diff -r -N -u ksh93_2006_12_07/lib/package/ast-ksh.README
ksh93_2006_12_22/lib/package/ast-ksh.README
--- ksh93_2006_12_07/lib/package/ast-ksh.README 2006-12-08 19:40:32.000000000
+0100
+++ ksh93_2006_12_22/lib/package/ast-ksh.README 2006-12-22 15:06:43.000000000
+0100
@@ -92,7 +92,10 @@
:::::::: ksh93 ::::::::
-06-11-20 --- Release ksh93s ---
+06-12-18 --- Release ksh93s ---
+06-12-19 A -v option was added to read. With this option the value of
+ the first variable name argument will become the default value
+ when read from a terminal device.
06-11-20 A bug in which "${f...@]:1}}" expands a null argument (instead of
no argument), when foo[0] is not empty has been fixed.
06-11-16 The discipline functions have been modified to allow each subscript
@@ -1512,6 +1515,10 @@
:::::::: libast ::::::::
+06-12-20 features/libpath.sh: generalize sol.* LIBPATH patterns
+06-12-18 comp/setlocale.c: include ast_standards.h and ast_wchar.h !
+06-12-12 string/strperm.c: octal modes are absolute!
+06-12-11 comp/conf.tab: always defer ARG_MAX
06-12-07 Makefile: fix conftab.c generation CCFLAGS to match build - doh
06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches
06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 }
diff -r -N -u ksh93_2006_12_07/lib/package/ast-ksh.ver
ksh93_2006_12_22/lib/package/ast-ksh.ver
--- ksh93_2006_12_07/lib/package/ast-ksh.ver 2006-12-08 02:04:35.000000000
+0100
+++ ksh93_2006_12_22/lib/package/ast-ksh.ver 2006-12-22 15:06:42.000000000
+0100
@@ -1 +1 @@
-ast-ksh 2006-12-07 2006-12-07 1
+ast-ksh 2006-12-22 2006-12-22 1
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/bltins/read.c
ksh93_2006_12_22/src/cmd/ksh93/bltins/read.c
--- ksh93_2006_12_07/src/cmd/ksh93/bltins/read.c 2006-09-05
23:45:40.000000000 +0200
+++ ksh93_2006_12_22/src/cmd/ksh93/bltins/read.c 2006-12-19
20:19:01.000000000 +0100
@@ -43,8 +43,9 @@
#define S_FLAG 2 /* save in history file */
#define A_FLAG 4 /* read into array */
#define N_FLAG 8 /* fixed size read at most */
-#define NN_FLAG 16 /* fixed size read exact */
-#define D_FLAG 6 /* must be number of bits for all flags */
+#define NN_FLAG 0x10 /* fixed size read exact */
+#define V_FLAG 0x20 /* use default value */
+#define D_FLAG 8 /* must be number of bits for all flags */
int b_read(int argc,char *argv[], void *extra)
{
@@ -68,8 +69,9 @@
case 'd':
if(opt_info.arg && *opt_info.arg!='\n')
{
+ char *cp = opt_info.arg;
flags &= ~((1<<D_FLAG)-1);
- flags |= ((*opt_info.arg)<< D_FLAG);
+ flags |= (mbchar(cp)<< D_FLAG);
}
break;
case 'p':
@@ -96,6 +98,9 @@
if(sh_inuse(fd))
fd = -1;
break;
+ case 'v':
+ flags |= V_FLAG;
+ break;
case ':':
errormsg(SH_DICT,2, "%s", opt_info.arg);
break;
@@ -208,6 +213,8 @@
if(val= strchr(name,'?'))
*val = 0;
np = nv_open(name,shp->var_tree,NV_NOASSIGN|NV_VARNAME);
+ if((flags&V_FLAG) && shp->ed_context)
+ ((struct edit*)shp->ed_context)->e_default = np;
if(flags&A_FLAG)
{
flags &= ~A_FLAG;
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/data/builtins.c
ksh93_2006_12_22/src/cmd/ksh93/data/builtins.c
--- ksh93_2006_12_07/src/cmd/ksh93/data/builtins.c 2006-10-27
21:10:30.000000000 +0200
+++ ksh93_2006_12_22/src/cmd/ksh93/data/builtins.c 2006-12-19
20:16:28.000000000 +0100
@@ -1225,7 +1225,7 @@
;
const char sh_optread[] =
-"[-1c?\n@(#)$Id: read (AT&T Research) 2003-05-19 $\n]"
+"[-1c?\n@(#)$Id: read (AT&T Research) 2006-12-19 $\n]"
USAGE_LICENSE
"[+NAME?read - read a line from standard input]"
"[+DESCRIPTION?\bread\b reads a line from standard input and breaks it "
@@ -1258,6 +1258,8 @@
"will be in bytes.]"
"[N]#[nbyte?Read exactly \ansize\a characters. For binary fields \asize\a "
"will be in bytes.]"
+"[v?When reading from a terminal the value of the first variable is displayed "
+ "and used as a default value.]"
"\n"
"\n[var?prompt] [var ...]\n"
"\n"
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/edit/edit.c
ksh93_2006_12_22/src/cmd/ksh93/edit/edit.c
--- ksh93_2006_12_07/src/cmd/ksh93/edit/edit.c 2006-10-05 08:46:18.000000000
+0200
+++ ksh93_2006_12_22/src/cmd/ksh93/edit/edit.c 2006-12-19 16:32:15.000000000
+0100
@@ -748,6 +748,16 @@
#endif
ep->e_wsize = MAXLINE - (ep->e_plen-2);
}
+ if(ep->e_default && (pp = nv_getval(ep->e_default)))
+ {
+ n = strlen(pp);
+ if(n > LOOKAHEAD)
+ n = LOOKAHEAD;
+ ep->e_lookahead = n;
+ while(n-- > 0)
+ ep->e_lbuf[n] = *pp++;
+ ep->e_default = 0;
+ }
}
/*
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/features/poll
ksh93_2006_12_22/src/cmd/ksh93/features/poll
--- ksh93_2006_12_07/src/cmd/ksh93/features/poll 2005-12-02
17:47:26.000000000 +0100
+++ ksh93_2006_12_22/src/cmd/ksh93/features/poll 2006-12-10
10:27:00.000000000 +0100
@@ -1,6 +1,7 @@
hdr,sys poll,socket,netinet/in
lib select,poll,socket
lib htons,htonl sys/types.h sys/socket.h netinet/in.h
+lib getaddrinfo sys/types.h sys/socket.h netdb.h
typ fd_set sys/socket.h sys/select.h
tst pipe_socketpair note{ use socketpair() for peekable pipe() }end execute{
#include <ast.h>
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/include/edit.h
ksh93_2006_12_22/src/cmd/ksh93/include/edit.h
--- ksh93_2006_12_07/src/cmd/ksh93/include/edit.h 2006-08-30
18:21:52.000000000 +0200
+++ ksh93_2006_12_22/src/cmd/ksh93/include/edit.h 2006-12-19
15:41:39.000000000 +0100
@@ -148,6 +148,7 @@
int e_multiline; /* allow multiple lines for editing */
int e_winsz; /* columns in window */
Edpos_t e_curpos; /* cursor line and column */
+ Namval_t *e_default; /* variable containing default value */
Namval_t *e_term; /* TERM variable */
char e_termname[80]; /* terminal name */
} Edit_t;
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/Mamfile
ksh93_2006_12_22/src/cmd/ksh93/Mamfile
--- ksh93_2006_12_07/src/cmd/ksh93/Mamfile 2006-12-09 07:48:53.000000000
+0100
+++ ksh93_2006_12_22/src/cmd/ksh93/Mamfile 2006-12-22 20:21:00.000000000
+0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-07
+info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-12
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/RELEASE
ksh93_2006_12_22/src/cmd/ksh93/RELEASE
--- ksh93_2006_12_07/src/cmd/ksh93/RELEASE 2006-11-21 21:44:02.000000000
+0100
+++ ksh93_2006_12_22/src/cmd/ksh93/RELEASE 2006-12-19 20:21:08.000000000
+0100
@@ -1,4 +1,7 @@
-06-11-20 --- Release ksh93s ---
+06-12-18 --- Release ksh93s ---
+06-12-19 A -v option was added to read. With this option the value of
+ the first variable name argument will become the default value
+ when read from a terminal device.
06-11-20 A bug in which "${f...@]:1}}" expands a null argument (instead of
no argument), when foo[0] is not empty has been fixed.
06-11-16 The discipline functions have been modified to allow each subscript
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/sh/io.c
ksh93_2006_12_22/src/cmd/ksh93/sh/io.c
--- ksh93_2006_12_07/src/cmd/ksh93/sh/io.c 2006-11-17 23:20:44.000000000
+0100
+++ ksh93_2006_12_22/src/cmd/ksh93/sh/io.c 2006-12-11 20:27:10.000000000
+0100
@@ -18,6 +18,7 @@
* *
***********************************************************************/
#pragma prototyped
+
/*
* Input/output file processing
*
@@ -84,10 +85,222 @@
# define pipe(v)
((socketpair(AF_UNIX,SOCK_STREAM,0,v)<0||shutdown((v)[0],1)<0||shutdown((v)[1],0)<0)?(-1):0)
# endif
# endif
- static int str2inet(const char*, struct sockaddr_in*);
-# define SOCKET 1
+
+#if !_lib_getaddrinfo
+
+#undef EAI_SYSTEM
+
+#define EAI_SYSTEM 1
+
+#undef addrinfo
+#undef getaddrinfo
+#undef freeaddrinfo
+
+#define addrinfo local_addrinfo
+#define getaddrinfo local_getaddrinfo
+#define freeaddrinfo local_freeaddrinfo
+
+struct addrinfo
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ socklen_t ai_addrlen;
+ struct sockaddr* ai_addr;
+ struct addrinfo* ai_next;
+};
+
+static int
+getaddrinfo(const char* node, const char* service, const struct addrinfo*
hint, struct addrinfo **addr)
+{
+ unsigned long ip_addr = 0;
+ unsigned short ip_port = 0;
+ struct addrinfo* ap;
+ struct hostent* hp;
+ struct sockaddr_in* ip;
+ char* prot;
+ long n;
+
+ if (!(hp = gethostbyname(node)) || hp->h_addrtype!=AF_INET ||
hp->h_length>sizeof(struct in_addr))
+ {
+ errno = EADDRNOTAVAIL;
+ return EAI_SYSTEM;
+ }
+ ip_addr = (unsigned long)((struct in_addr*)hp->h_addr)->s_addr;
+ if ((n = strtol(service, &prot, 10)) > 0 && n <= USHRT_MAX && !*prot)
+ ip_port = htons((unsigned short)n);
+ else
+ {
+ struct servent* sp;
+ const char* protocol = 0;
+
+ if (hint)
+ switch (hint->ai_socktype)
+ {
+ case SOCK_STREAM:
+ switch (hint->ai_protocol)
+ {
+ case 0:
+ protocol = "tcp";
+ break;
+#ifdef IPPROTO_SCTP
+ case IPPROTO_SCTP:
+ protocol = "sctp";
+ break;
+#endif
+ }
+ break;
+ case SOCK_DGRAM:
+ protocol = "udp";
+ break;
+ }
+ if (!protocol)
+ {
+ errno = EPROTONOSUPPORT;
+ return 1;
+ }
+ if (sp = getservbyname(service, protocol))
+ ip_port = sp->s_port;
+ }
+ if (!ip_port)
+ {
+ errno = EADDRNOTAVAIL;
+ return EAI_SYSTEM;
+ }
+ if (!(ap = newof(0, struct addrinfo, 1, sizeof(struct sockaddr_in))))
+ return EAI_SYSTEM;
+ if (hint)
+ *ap = *hint;
+ ap->ai_family = hp->h_addrtype;
+ ap->ai_addrlen = sizeof(struct sockaddr_in);
+ ap->ai_addr = (struct sockaddr *)(ap+1);
+ ip = (struct sockaddr_in *)ap->ai_addr;
+ ip->sin_family = AF_INET;
+ ip->sin_port = ip_port;
+ ip->sin_addr.s_addr = ip_addr;
+ *addr = ap;
+ return 0;
+}
+
+static void
+freeaddrinfo(struct addrinfo* ap)
+{
+ if (ap)
+ free(ap);
+}
+
+#endif
+
+/*
+ * return <protocol>/<host>/<service> fd
+ */
+
+typedef int (*Inetintr_f)(struct addrinfo*, void*);
+
+static int
+inetopen(const char* path, int server, Inetintr_f onintr, void* handle)
+{
+ register char* s;
+ register char* t;
+ int fd;
+ int oerrno;
+ struct addrinfo hint;
+ struct addrinfo* addr;
+ struct addrinfo* p;
+
+ memset(&hint, 0, sizeof(hint));
+ hint.ai_family = PF_UNSPEC;
+ switch (path[0])
+ {
+#ifdef IPPROTO_SCTP
+ case 's':
+ if (path[1]!='c' || path[2]!='t' || path[3]!='p' ||
path[4]!='/')
+ {
+ errno = ENOTDIR;
+ return -1;
+ }
+ hint.ai_socktype = SOCK_STREAM;
+ hint.ai_protocol = IPPROTO_SCTP;
+ path += 5;
+ break;
+#endif
+ case 't':
+ if (path[1]!='c' || path[2]!='p' || path[3]!='/')
+ {
+ errno = ENOTDIR;
+ return -1;
+ }
+ hint.ai_socktype = SOCK_STREAM;
+ path += 4;
+ break;
+ case 'u':
+ if (path[1]!='d' || path[2]!='p' || path[3]!='/')
+ {
+ errno = ENOTDIR;
+ return -1;
+ }
+ hint.ai_socktype = SOCK_DGRAM;
+ path += 4;
+ break;
+ default:
+ errno = ENOTDIR;
+ return -1;
+ }
+ if (!(s = strdup(path)))
+ return -1;
+ if (t = strchr(s, '/'))
+ {
+ *t++ = 0;
+ if (streq(s, "local"))
+ s = "localhost";
+ fd = getaddrinfo(s, t, &hint, &addr);
+ }
+ else
+ fd = -1;
+ free(s);
+ if (fd)
+ {
+ if (fd != EAI_SYSTEM)
+ errno = ENOTDIR;
+ return -1;
+ }
+ oerrno = errno;
+ errno = 0;
+ fd = -1;
+ for (p = addr; p; p = p->ai_next)
+ {
+ /*
+ * some api's don't take the hint
+ */
+
+ if (!p->ai_protocol)
+ p->ai_protocol = hint.ai_protocol;
+ if (!p->ai_socktype)
+ p->ai_socktype = hint.ai_socktype;
+ while ((fd = socket(p->ai_family, p->ai_socktype,
p->ai_protocol)) >= 0)
+ {
+ if (server && !bind(fd, p->ai_addr, p->ai_addrlen) &&
!listen(fd, 5) || !server && !connect(fd, p->ai_addr, p->ai_addrlen))
+ goto done;
+ close(fd);
+ fd = -1;
+ if (errno != EINTR || !onintr)
+ break;
+ if ((*onintr)(addr, handle))
+ return -1;
+ }
+ }
+ done:
+ freeaddrinfo(addr);
+ if (fd >= 0)
+ errno = oerrno;
+ return fd;
+}
+
#else
-# undef SOCKET
+
+#undef O_SERVICE
+
#endif
struct fdsave
@@ -97,7 +310,6 @@
int subshell; /* saved for subshell */
};
-
static int subexcept(Sfio_t*, int, void*, Sfdisc_t*);
static int eval_exceptf(Sfio_t*, int, void*, Sfdisc_t*);
static int slowexcept(Sfio_t*, int, void*, Sfdisc_t*);
@@ -370,6 +582,22 @@
return(r);
}
+static int
+onintr(struct addrinfo* addr, void* handle)
+{
+ Shell_t* sh = (Shell_t*)handle;
+
+ if (sh->trapnote&SH_SIGSET)
+ {
+ freeaddrinfo(addr);
+ sh_exit(SH_EXITSIG);
+ return -1;
+ }
+ if (sh->trapnote)
+ sh_chktrap();
+ return 0;
+}
+
/*
* Mimic open(2) with checks for pseudo /dev/ files.
*/
@@ -378,12 +606,6 @@
register int fd = -1;
mode_t mode;
char *e;
-#ifdef SOCKET
- int type = -1;
- int prot = -1;
- int info = 0;
- struct sockaddr_in addr;
-#endif /* SOCKET */
va_list ap;
va_start(ap, flags);
mode = (flags & O_CREAT) ? va_arg(ap, int) : 0;
@@ -395,6 +617,7 @@
return(-1);
}
if (path[0]=='/' && path[1]=='d' && path[2]=='e' && path[3]=='v' &&
path[4]=='/')
+ {
switch (path[5])
{
case 'f':
@@ -422,34 +645,17 @@
fd = 1;
break;
}
-#if defined(SOCKET) && defined(IPPROTO_SCTP)
- else if (path[6]=='c' && path[7]=='t' && path[8]=='p'
&& path[9]=='/')
- {
- type = SOCK_STREAM;
- prot = IPPROTO_SCTP;
- info = 10;
- }
-#endif
- break;
-#ifdef SOCKET
- case 't':
- if (path[6]=='c' && path[7]=='p' && path[8]=='/')
- {
- type = SOCK_STREAM;
- prot = 0;
- info = 9;
- }
- break;
- case 'u':
- if (path[6]=='d' && path[7]=='p' && path[8]=='/')
- {
- type = SOCK_DGRAM;
- prot = 0;
- info = 9;
- }
- break;
-#endif
}
+#ifdef O_SERVICE
+ if (fd < 0)
+ {
+ if ((fd = inetopen(path+5, !!(flags & O_SERVICE),
onintr, &sh)) < 0 && errno != ENOTDIR)
+ return -1;
+ if (fd >= 0)
+ goto ok;
+ }
+#endif
+ }
if (fd > 0)
{
if((mode=sh_iocheckfd(fd))==IOCLOSE)
@@ -462,42 +668,12 @@
if((fd=dup(fd))<0)
return(-1);
}
-#ifdef SOCKET
- else if (type > 0 && str2inet(path+info, &addr))
- {
- if ((fd = socket(AF_INET, type, prot)) >= 0)
- {
- if(flags&O_SERVICE)
- {
- if(bind(fd, (struct sockaddr*)&addr,
sizeof(addr)) || listen(fd,5))
- {
- close(fd);
- fd = -1;
- }
- }
- else while(connect(fd, (struct sockaddr*)&addr,
sizeof(addr)))
- {
- if(errno==EINTR)
- {
- if(sh.trapnote&SH_SIGSET)
- {
- close(fd);
- sh_exit(SH_EXITSIG);
- }
- if(sh.trapnote)
- sh_chktrap();
- continue;
- }
- close(fd);
- fd = -1;
- break;
- }
- }
- }
-#endif /* SOCKET */
else while((fd = open(path, flags, mode)) < 0)
if(errno!=EINTR || sh.trapnote)
return(-1);
+#ifdef O_SERVICE
+ ok:
+#endif
flags &= O_ACCMODE;
if(flags==O_WRONLY)
mode = IOWRITE;
@@ -1239,80 +1415,6 @@
return(-1);
}
-#ifdef SOCKET
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK 0x7f000001L
-#endif
-
-/*
- * convert string to sockaddr_in
- * 0 returned on error
- */
-
-static int str2inet(register const char *sp, struct sockaddr_in *addr)
-{
- char *proto = (char*)sp;
- register int n=0,c,v;
- unsigned long a=0;
- unsigned short p=0;
-
- sp += 4;
- if(memcmp(sp,"local/",6)==0)
- {
- a = INADDR_LOOPBACK;
- n=4;
- sp+=6;
- }
- else if(!isdigit(*sp))
- {
- struct hostent *hp;
- char *cp = strchr(sp,'/');
- *cp = 0;
- hp = gethostbyname(sp);
- *cp = '/';
- if(!hp || hp->h_addrtype!=AF_INET || hp->h_length>sizeof(struct
in_addr))
- return 0;
- a = (unsigned long)((struct in_addr*)hp->h_addr)->s_addr;
- n=6;
- sp = cp+1;
- if(!isdigit(*sp))
- {
- struct servent *xp;
- proto[3] = 0;
- if(xp = getservbyname(sp,proto))
- {
- p = xp->s_port;
- sp = "";
- }
- proto[3] = '/';
- }
- }
- while(*sp)
- {
- v = 0;
- while ((c = *sp++) >= '0' && c <= '9')
- v = v * 10 + c - '0';
- if (++n <= 4) a = (a << 8) | (v & 0xff);
- else
- {
- if (c) return(0);
- if (n <= 5)
- a = htonl(a);
- p = htons(v);
- break;
- }
- if (c != '.' && c != '/') return(0);
- }
- memset((char*)addr, 0, sizeof(*addr));
- addr->sin_family = AF_INET;
- addr->sin_addr.s_addr = a;
- addr->sin_port = p;
- return(1);
-}
-#endif /* SOCKET */
-
-
/*
* Handle interrupts for slow streams
*/
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/sh/macro.c
ksh93_2006_12_22/src/cmd/ksh93/sh/macro.c
--- ksh93_2006_12_07/src/cmd/ksh93/sh/macro.c 2006-11-29 15:32:12.000000000
+0100
+++ ksh93_2006_12_22/src/cmd/ksh93/sh/macro.c 2006-12-18 17:45:48.000000000
+0100
@@ -1368,16 +1368,13 @@
if((c=mbsize(v))<1)
c = 1;
v += c;
- vsize -= c;
}
c = ':';
}
#endif /* SHOPT_MULTIBYTE */
else
- {
v += type;
- vsize -= type;
- }
+ vsize -= type;
}
if(*ptr==':')
{
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/sh/nvtree.c
ksh93_2006_12_22/src/cmd/ksh93/sh/nvtree.c
--- ksh93_2006_12_07/src/cmd/ksh93/sh/nvtree.c 2006-10-16 22:42:37.000000000
+0200
+++ ksh93_2006_12_22/src/cmd/ksh93/sh/nvtree.c 2006-12-14 03:46:11.000000000
+0100
@@ -498,8 +498,9 @@
if(n==0 || strncmp(arg,prefix-n,m+n)==0)
{
cp +=m;
+ r = 0;
if(*cp=='.')
- cp++;
+ cp++,r++;
if(nextcp=nextdot(cp))
{
if(outfile)
@@ -508,7 +509,7 @@
nv_outname(outfile,cp,nextcp-cp);
sfputc(outfile,'=');
}
- argv = genvalue(argv,outfile,cp,n+m
,indent,noscope);
+ argv = genvalue(argv,outfile,cp,n+m+r
,indent,noscope);
if(outfile)
sfputc(outfile,'\n');
if(*argv)
@@ -523,7 +524,7 @@
sfnputc(outfile,'\t',indent);
nv_attribute(np,outfile,"typeset",1);
nv_close(np);
- sfputr(outfile,arg+m,'=');
+ sfputr(outfile,arg+m+(n?n+1:0),'=');
argv = genvalue(++argv,outfile,cp,cp-arg
,indent,noscope);
sfputc(outfile,'\n');
}
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/sh/path.c
ksh93_2006_12_22/src/cmd/ksh93/sh/path.c
--- ksh93_2006_12_07/src/cmd/ksh93/sh/path.c 2006-10-18 09:32:00.000000000
+0200
+++ ksh93_2006_12_22/src/cmd/ksh93/sh/path.c 2006-12-22 19:55:23.000000000
+0100
@@ -39,6 +39,8 @@
#if SHOPT_PFSH
# ifdef _hdr_exec_attr
# include <exec_attr.h>
+# else
+# undef SHOPT_PFSH
# endif
#endif
@@ -56,13 +58,14 @@
static int onstdpath(const char *name)
{
register const char *cp = std_path, *sp;
- while(*cp)
- {
- for(sp=name; *sp && (*cp == *sp); sp++,cp++);
- if(*sp==0 && (*cp==0 || *cp==':'))
- return(1);
- while(*cp && *cp++!=':');
- }
+ if(cp)
+ while(*cp)
+ {
+ for(sp=name; *sp && (*cp == *sp); sp++,cp++);
+ if(*sp==0 && (*cp==0 || *cp==':'))
+ return(1);
+ while(*cp && *cp++!=':');
+ }
return(0);
}
@@ -1348,9 +1351,8 @@
strcpy(pp->blib,LIBCMD);
return(first);
}
- if(flag!=PATH_PATH)
- return(first);
- path_chkpaths(first,old,pp,offset);
+ if((flag&(PATH_PATH|PATH_SKIP))==PATH_PATH)
+ path_chkpaths(first,old,pp,offset);
return(first);
}
@@ -1558,7 +1560,7 @@
if(pp->ino==pq->ino && pp->dev==pq->dev)
pq->flags |= PATH_SKIP;
}
- if(pp->flags==PATH_PATH)
+ if((pp->flags&(PATH_PATH|PATH_SKIP))==PATH_PATH)
{
/* try to insert .paths component */
int offset = staktell();
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/sh/streval.c
ksh93_2006_12_22/src/cmd/ksh93/sh/streval.c
--- ksh93_2006_12_07/src/cmd/ksh93/sh/streval.c 2006-08-23 21:22:52.000000000
+0200
+++ ksh93_2006_12_22/src/cmd/ksh93/sh/streval.c 2006-12-20 20:34:34.000000000
+0100
@@ -744,7 +744,7 @@
vp->nextchr++;
}
else
- d = (*vp->convert)(&vp->nextchr, &lvalue,
LOOKUP, d);
+ d = (*vp->convert)(&vp->nextchr, &lvalue,
LOOKUP, 0);
if (vp->nextchr == pos)
{
if(vp->errmsg.value = lvalue.value)
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/sh.1
ksh93_2006_12_22/src/cmd/ksh93/sh.1
--- ksh93_2006_12_07/src/cmd/ksh93/sh.1 2006-10-31 02:59:42.000000000 +0100
+++ ksh93_2006_12_22/src/cmd/ksh93/sh.1 2006-12-19 20:24:15.000000000 +0100
@@ -6059,6 +6059,11 @@
.B \-N
is specified, the bytes that are read are stored directly
into the variable.
+If the
+.B \-v
+is specified, then the value of the first
+.I vname\^
+will be used as a default value when reading from a terminal device.
The
.B \-A
option causes the variable
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/tests/builtins.sh
ksh93_2006_12_22/src/cmd/ksh93/tests/builtins.sh
--- ksh93_2006_12_07/src/cmd/ksh93/tests/builtins.sh 2006-11-23
07:37:36.000000000 +0100
+++ ksh93_2006_12_22/src/cmd/ksh93/tests/builtins.sh 2006-12-20
19:33:39.000000000 +0100
@@ -174,6 +174,7 @@
then err_exit "read -r of blank line not working"
fi
mkdir -p /tmp/ksh$$/a/b/c 2>/dev/null || err_exit "mkdir -p failed"
+$SHELL -c "cd /tmp/ksh$$/a/b; cd c" 2>/dev/null || err_exit "initial script
relative cd fails"
rm -r /tmp/ksh$$ || err_exit "rm -r /tmp/ksh$$ failed"
trap 'print HUP' HUP
if [[ $(trap) != "trap -- 'print HUP' HUP" ]]
@@ -334,7 +335,7 @@
do IFS=:
set -- $v
IFS=$ifs
- env="$env $2=\"\$$2\""
+ eval [[ \$$2 ]] && env="$env $2=\"\$$2\""
done
set --glob
if [[ $(foo=bar; eval foo=\$foo $env exec -c \$SHELL -c \'print \$foo\')
!= bar ]]
diff -r -N -u ksh93_2006_12_07/src/cmd/ksh93/tests/substring.sh
ksh93_2006_12_22/src/cmd/ksh93/tests/substring.sh
--- ksh93_2006_12_07/src/cmd/ksh93/tests/substring.sh 2006-12-01
21:11:30.000000000 +0100
+++ ksh93_2006_12_22/src/cmd/ksh93/tests/substring.sh 2006-12-18
17:50:34.000000000 +0100
@@ -496,5 +496,5 @@
string='foo(d:\nt\box\something)bar'
expected='d:\nt\box\something'
[[ ${string/*\(+([!\)])\)*/\1} == "$expected" ]] || err_exit "substring
expansion failed '${string/*\(+([!\)])\)*/\1}' returned -- '$expected' expected"
-
+LC_ALL=en_US.UTF-8 $SHELL -c 'b1="????????????w????????????"; [[ ${b1:4:1} ==
w ]]' || err_exit 'Multibyte ${var:offset:len} not working correctly'
exit $((Errors))
diff -r -N -u ksh93_2006_12_07/src/lib/libast/comp/conf.sh
ksh93_2006_12_22/src/lib/libast/comp/conf.sh
--- ksh93_2006_12_07/src/lib/libast/comp/conf.sh 2006-11-18
08:46:03.000000000 +0100
+++ ksh93_2006_12_22/src/lib/libast/comp/conf.sh 2006-12-11
17:23:03.000000000 +0100
@@ -21,7 +21,7 @@
########################################################################
: generate getconf and limits info
#
-# @(#)conf.sh (AT&T Research) 2006-11-15
+# @(#)conf.sh (AT&T Research) 2006-12-11
#
# this script generates these files from the table file in the first arg
# the remaining args are the C compiler name and flags
@@ -1387,11 +1387,11 @@
int conf_elements = (int)sizeof(conf) / (int)sizeof(conf[0]);
!
-} > $tmp.2
-proto < $tmp.2 > $tmp.3
+} > $tmp.3
+proto < $tmp.3 > $tmp.4
case $debug in
--d7) echo $command: $tmp.3 ${base}.c ;;
-*) cmp -s $tmp.3 ${base}.c 2>/dev/null || mv $tmp.3 ${base}.c ;;
+-d7) echo $command: $tmp.4 ${base}.c ;;
+*) cmp -s $tmp.4 ${base}.c 2>/dev/null || mv $tmp.4 ${base}.c ;;
esac
# limits.h generation code
diff -r -N -u ksh93_2006_12_07/src/lib/libast/comp/conf.tab
ksh93_2006_12_22/src/lib/libast/comp/conf.tab
--- ksh93_2006_12_07/src/lib/libast/comp/conf.tab 2006-12-04
23:12:14.000000000 +0100
+++ ksh93_2006_12_22/src/lib/libast/comp/conf.tab 2006-12-12
09:38:22.000000000 +0100
@@ -46,7 +46,7 @@
AIO_PRIO_DELTA_MAX POSIX SC 1 LMU
ALLOC_SIZE_MIN POSIX PC 1 LUVW
ARCHITECTURE SVID SI 1 0
-ARG_MAX POSIX SC 1 LMUX NCARGS 4096
+ARG_MAX POSIX SC 1 CDLMUX NCARGS 4096
ASYNCHRONOUS_IO POSIX SC 1 CDFUW
ASYNC_IO POSIX PC 1 FUW
ATEXIT_MAX XOPEN SC 1 LMU 32
diff -r -N -u ksh93_2006_12_07/src/lib/libast/comp/setlocale.c
ksh93_2006_12_22/src/lib/libast/comp/setlocale.c
--- ksh93_2006_12_07/src/lib/libast/comp/setlocale.c 2005-03-10
14:50:54.000000000 +0100
+++ ksh93_2006_12_22/src/lib/libast/comp/setlocale.c 2006-12-19
06:08:54.000000000 +0100
@@ -28,8 +28,11 @@
* and persistent private data for locale related functions
*/
+#include <ast_standards.h>
+
#include "lclib.h"
+#include <ast_wchar.h>
#include <ctype.h>
#include <mc.h>
#include <namval.h>
diff -r -N -u ksh93_2006_12_07/src/lib/libast/features/libpath.sh
ksh93_2006_12_22/src/lib/libast/features/libpath.sh
--- ksh93_2006_12_07/src/lib/libast/features/libpath.sh 2006-08-30
10:12:16.000000000 +0200
+++ ksh93_2006_12_22/src/lib/libast/features/libpath.sh 2006-12-20
20:02:52.000000000 +0100
@@ -47,11 +47,12 @@
then
libpath="lib64:LD_LIBRARY64_PATH:sgi.mips[4-9]|sgi.*-64,$libpath"
fi
;;
- sol*.sun*|sol*.sparc*)
- if test -d /lib/sparcv9
- then
libpath="lib/sparcv9:LD_LIBRARY_PATH_64:sol.*64*,$libpath"
+ sol*.*) if test -d /lib/32
+ then libpath="lib/32:LD_LIBRARY_PATH_32,$libpath"
+ fi
+ if test -d /lib/64
+ then libpath="lib/64:LD_LIBRARY_PATH_64:sol.*64*,$libpath"
fi
- libpath="$libpath,lib:LD_LIBRARY_PATH_32"
;;
esac
elif test -x /lib/dld.sl
diff -r -N -u ksh93_2006_12_07/src/lib/libast/features/standards
ksh93_2006_12_22/src/lib/libast/features/standards
--- ksh93_2006_12_07/src/lib/libast/features/standards 2006-12-05
05:44:53.000000000 +0100
+++ ksh93_2006_12_22/src/lib/libast/features/standards 2006-12-19
18:51:35.000000000 +0100
@@ -1,4 +1,39 @@
-if tst note{ _ISOC99_SOURCE & _POSIX_SOURCE & _POSIX_C_SOURCE & _XOPEN_SOURCE
& __EXTENSIONS__ works }end compile{
+if tst note{ _ALL_SOURCE & _ISOC99_SOURCE & _POSIX_SOURCE & _POSIX_C_SOURCE &
_XOPEN_SOURCE & __EXTENSIONS__ works }end compile{
+ #define _ALL_SOURCE 1
+ #define _ISOC99_SOURCE 1
+ #define _POSIX_SOURCE 1
+ #define _POSIX_C_SOURCE 21000101L
+ #define _XOPEN_SOURCE 9900
+ #define _GNU_SOURCE 1
+ #define __EXTENSIONS__ 1
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ }end {
+ #ifndef _ALL_SOURCE
+ #define _ALL_SOURCE 1
+ #endif
+ #ifndef _ISOC99_SOURCE
+ #define _ISOC99_SOURCE 1
+ #endif
+ #ifndef _POSIX_SOURCE
+ #define _POSIX_SOURCE 1
+ #endif
+ #ifndef _POSIX_C_SOURCE
+ #define _POSIX_C_SOURCE 21000101L
+ #endif
+ #ifndef _XOPEN_SOURCE
+ #define _XOPEN_SOURCE 9900
+ #endif
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE 1
+ #endif
+ #ifndef __EXTENSIONS__
+ #define __EXTENSIONS__ 1
+ #endif
+ }
+elif tst note{ _ISOC99_SOURCE & _POSIX_SOURCE & _POSIX_C_SOURCE &
_XOPEN_SOURCE & __EXTENSIONS__ works }end compile{
#define _ISOC99_SOURCE 1
#define _POSIX_SOURCE 1
#define _POSIX_C_SOURCE 21000101L
diff -r -N -u ksh93_2006_12_07/src/lib/libast/Makefile
ksh93_2006_12_22/src/lib/libast/Makefile
--- ksh93_2006_12_07/src/lib/libast/Makefile 2006-12-08 19:39:09.000000000
+0100
+++ ksh93_2006_12_22/src/lib/libast/Makefile 2006-12-11 17:49:36.000000000
+0100
@@ -317,7 +317,7 @@
*/
.check.hdr : .IGNORE .VIRTUAL \
- FEATURE/standards - FEATURE/lib - FEATURE/common - \
+ FEATURE/standards - FEATURE/lib - FEATURE/common -
FEATURE/param - \
ast_map.h - ast_limits.h - ast_stdio.h ast_nl_types.h -
ast_wchar.h
: clean up obsolete headers :
$(RM) -rf $(HEADERSTD) ast_hdr.h ast_types.h ast_unistd.h iffeio.h \
diff -r -N -u ksh93_2006_12_07/src/lib/libast/Mamfile
ksh93_2006_12_22/src/lib/libast/Mamfile
--- ksh93_2006_12_07/src/lib/libast/Mamfile 2006-12-09 07:48:59.000000000
+0100
+++ ksh93_2006_12_22/src/lib/libast/Mamfile 2006-12-22 20:21:02.000000000
+0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-07
+info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-12
setv INSTALLROOT ../../..
setv PACKAGEROOT ../../../../..
setv AR ar
@@ -58,7 +58,21 @@
done features/common
exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS}
' run features/common
done FEATURE/common generated
-make ast_map.h
+make FEATURE/param
+meta FEATURE/param features/%.sh>FEATURE/% features/param.sh param
+make features/param.sh
+done features/param.sh
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS}
' run features/param.sh
+make std/endian.h implicit
+make std/bytesex.h implicit
+make ast_common.h implicit
+prev FEATURE/common
+exec - sed '/define _def_map_ast/d' < FEATURE/common > 1.${COTEMP}.x
+exec - if cmp 2>/dev/null -s ast_common.h 1.${COTEMP}.x
+exec - then rm -f 1.${COTEMP}.x
+exec - else mv 1.${COTEMP}.x ast_common.h
+exec - fi
+make ast_map.h implicit
make FEATURE/map
meta FEATURE/map features/%.c>FEATURE/% features/map.c map
make features/map.c
@@ -80,7 +94,16 @@
exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.
${LDFLAGS} ' run features/map.c
done FEATURE/map generated
exec - cmp 2>/dev/null -s FEATURE/map ast_map.h || { rm -f ast_map.h; silent
test -d . || mkdir .; ${STDCP} FEATURE/map ast_map.h; }
-done ast_map.h generated
+done ast_map.h dontcare generated
+done ast_common.h dontcare generated
+done std/bytesex.h dontcare
+done std/endian.h dontcare
+make comp/getopt.h implicit
+make include/ast_getopt.h implicit
+done include/ast_getopt.h dontcare
+done comp/getopt.h dontcare
+done FEATURE/param generated
+prev ast_map.h
make ast_limits.h
make FEATURE/limits
meta FEATURE/limits features/%.c>FEATURE/% features/limits.c limits
@@ -133,29 +156,7 @@
make conftab.c
done conftab.c generated
done joint.conflim.h virtual
-make FEATURE/param implicit
-meta FEATURE/param features/%.sh>FEATURE/% features/param.sh param
-make features/param.sh
-done features/param.sh
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS}
' run features/param.sh
-make std/endian.h implicit
-make std/bytesex.h implicit
-make ast_common.h implicit
-prev FEATURE/common
-exec - sed '/define _def_map_ast/d' < FEATURE/common > 1.${COTEMP}.x
-exec - if cmp 2>/dev/null -s ast_common.h 1.${COTEMP}.x
-exec - then rm -f 1.${COTEMP}.x
-exec - else mv 1.${COTEMP}.x ast_common.h
-exec - fi
-prev ast_map.h implicit
-done ast_common.h dontcare generated
-done std/bytesex.h dontcare
-done std/endian.h dontcare
-done FEATURE/param generated
-make comp/getopt.h implicit
-make include/ast_getopt.h implicit
-done include/ast_getopt.h dontcare
-done comp/getopt.h dontcare
+prev FEATURE/param implicit
prev FEATURE/common implicit
prev FEATURE/lib implicit
prev FEATURE/standards implicit
@@ -390,7 +391,7 @@
prev FEATURE/param implicit
done features/mode.c
prev ast.req
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.
-Iinclude -Istd ${LDFLAGS} ' run features/mode.c
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp
-Iinclude -Istd ${LDFLAGS} ' run features/mode.c
done FEATURE/mode generated
exec - cmp 2>/dev/null -s FEATURE/mode ast_mode.h || { rm -f ast_mode.h;
silent test -d . || mkdir .; ${STDCP} FEATURE/mode ast_mode.h; }
done ast_mode.h dontcare generated
@@ -1327,7 +1328,12 @@
make include/mc.h implicit
prev include/ast.h implicit
done include/mc.h
+prev ast_wchar.h implicit
prev port/lclib.h implicit
+make ast_standards.h implicit
+prev FEATURE/standards
+exec - cmp 2>/dev/null -s FEATURE/standards ast_standards.h || { rm -f
ast_standards.h; silent test -d . || mkdir .; ${STDCP} FEATURE/standards
ast_standards.h; }
+done ast_standards.h generated
done comp/setlocale.c
meta setlocale.o %.c>%.o comp/setlocale.c setlocale
prev comp/setlocale.c
@@ -6816,10 +6822,7 @@
exec - fi
done ${INSTALLROOT}/include/ast/ast_limits.h generated
make ${INSTALLROOT}/include/ast/ast_standards.h
-make ast_standards.h
-prev FEATURE/standards
-exec - cmp 2>/dev/null -s FEATURE/standards ast_standards.h || { rm -f
ast_standards.h; silent test -d . || mkdir .; ${STDCP} FEATURE/standards
ast_standards.h; }
-done ast_standards.h generated
+prev ast_standards.h
exec - proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o
since=1985,author=gsf+dgk+kpv' ast_standards.h > 1.${COTEMP}.x
exec - if cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/ast_standards.h
1.${COTEMP}.x
exec - then rm -f 1.${COTEMP}.x
diff -r -N -u ksh93_2006_12_07/src/lib/libast/RELEASE
ksh93_2006_12_22/src/lib/libast/RELEASE
--- ksh93_2006_12_07/src/lib/libast/RELEASE 2006-12-08 19:40:00.000000000
+0100
+++ ksh93_2006_12_22/src/lib/libast/RELEASE 2006-12-20 19:59:23.000000000
+0100
@@ -1,3 +1,7 @@
+06-12-20 features/libpath.sh: generalize sol.* LIBPATH patterns
+06-12-18 comp/setlocale.c: include ast_standards.h and ast_wchar.h !
+06-12-12 string/strperm.c: octal modes are absolute!
+06-12-11 comp/conf.tab: always defer ARG_MAX
06-12-07 Makefile: fix conftab.c generation CCFLAGS to match build - doh
06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches
06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 }
diff -r -N -u ksh93_2006_12_07/src/lib/libast/string/strperm.c
ksh93_2006_12_22/src/lib/libast/string/strperm.c
--- ksh93_2006_12_07/src/lib/libast/string/strperm.c 2006-11-20
17:25:41.000000000 +0100
+++ ksh93_2006_12_22/src/lib/libast/string/strperm.c 2006-12-12
15:43:06.000000000 +0100
@@ -80,7 +80,11 @@
continue;
default:
if (c >= '0' && c <= '7')
+ {
+ if (!who)
+ who =
S_ISVTX|S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO;
c = '=';
+ }
expr--;
/*FALLTHROUGH*/
case '=':
@@ -244,6 +248,8 @@
return perm & S_IPERM;
}
num = (num << 3) | (c - '0');
+ if (!who && (op == '+' || op ==
'-'))
+ who =
S_ISVTX|S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO;
if (*expr < '0' || *expr > '7')
{
typ |= modei(num);
diff -r -N -u ksh93_2006_12_07/src/lib/libcmd/Mamfile
ksh93_2006_12_22/src/lib/libcmd/Mamfile
--- ksh93_2006_12_07/src/lib/libcmd/Mamfile 2006-12-09 07:49:00.000000000
+0100
+++ ksh93_2006_12_22/src/lib/libcmd/Mamfile 2006-12-22 20:21:04.000000000
+0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-07
+info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-12
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib
diff -r -N -u ksh93_2006_12_07/src/lib/libdll/Mamfile
ksh93_2006_12_22/src/lib/libdll/Mamfile
--- ksh93_2006_12_07/src/lib/libdll/Mamfile 2006-12-09 07:49:00.000000000
+0100
+++ ksh93_2006_12_22/src/lib/libdll/Mamfile 2006-12-22 20:21:04.000000000
+0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-07
+info mam static 00000 1994-07-17 make (AT&T Research) 5.1 2006-12-12
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib