1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-02-13 11:42:21 +00:00

Restore AST 'pty' pseudoterminal command (re: reboot)

This enables the tests/pty.sh regression tests for the interactive
shell to work. I've managed to restore these without restoring
nmake (which would cause unresolved build failures). It involved
hand-editing the Mamfile originally generated by nmake.

src/cmd/builtin/Makefile:
- Restored. Even though nmake is not installed, apparently mamake
  still needs the Makefile for the 'install' target to work. This
  will probably need editing if nmake is ever restored.

src/cmd/builtin/Mamfile:
- Restored and edited by hand to remove the commands to build all
  the utilities except pty, as well as all test targets (pty has no
  test). Most of this was systematically deleting blocks delimited
  by 'make FOO' and 'done FOO generated' until the build stopped
  failing -- a task made so much easier by the build now failing
  gracefully on error (see d0dfb37c). To see the diff, do:
	git diff cc1f2bf8 src/cmd/builtin/Mamfile

src/cmd/builtin/RELEASE:
- Restored for completeness' sake with all non-pty entries removed.

src/cmd/builtin/features/pty,
src/cmd/builtin/pty.c:
- Restored.
This commit is contained in:
Martijn Dekker 2020-06-12 12:35:58 +02:00
parent 802ea67afb
commit cd5c181a39
5 changed files with 1324 additions and 0 deletions

90
src/cmd/builtin/Makefile Normal file
View file

@ -0,0 +1,90 @@
/*
* standalone versions of -lcmd builtins
*/
:PACKAGE: ast cmd:space
LICENSE = since=1992,author=gsf+dgk
:ALL:
:: cmdlib.h builtin.c
CMD_BUILTIN ==
CMD_DYNAMIC ==
CMD_STANDALONE ==
LINKS = cp: ln mv cksum: md5sum sum
NOBIN = getconf
CAT = $(STDCAT|"cat")
CMP = $(STDCMP|"cmp") 2>/dev/null
CP = $(STDCP|"cp")
LN = $(STDLN|"ln")
RM = $(STDRM|"rm")
BUILTINS :COMMAND: cmdlist.h
$(SED) -e '/^CMDLIST(.*)$/!d' -e 's/CMDLIST(\(.*\))/\1/' $(NOBIN:C,.*,-e '/^&$/d',) $(LINKS:N!=*[:]:C,.*,-e '/^&$/d',) $(*)
.INIT : .builtin
.builtin : .MAKE .VIRTUAL .FORCE
local T I
if T = "$(NOBIN:D=$(BINDIR):B:S:T=F)"
{ $(RM) $(RMFLAGS) $(T) }
end
:ALL: $(BUILTINS)
T = -lcmd
if "$(PACKAGE_OPTIONS:N=optimize-space)" && "$(T:T=F)" == "-lcmd"
T := $(BUILTINS:O=1)
$(T) :: CMD_BUILTIN=1 CMD_DYNAMIC=1 builtin.c -lcmd -ldll
for I $(BUILTINS:O>1)
$(I) :LINK: $(T)
end
for I $(LINKS)
if I != "*:"
$(I) :LINK: $(T)
end
end
else
$(BINDIR) :INSTALLDIR: $(BUILTINS)
$(BUILTINS) : .COMMAND $(&$("%.c":T=SM%)) CMD_BUILTIN=b_$$(<:B) builtin.c $(*$("%.c":T=SM%))
$(CAT) $(*:N=*builtin.c) > $(<).c
$(RM) $(RMFLAGS) $(<)
$(@$("%.c":T=SM%):/.*builtin.c$/$(<).c/)
$(RM) $(RMFLAGS) $(<).c
for I $(LINKS)
if I == "*:"
T := $(I:/.$//)
else
$(I) :LINK: $(T)
end
end
end
":BUILTIN:" : .MAKE .OPERATOR
local T P
for T $(>)
if T == "*=*"
$(P).o : $(T)
elif T == "[-+]l*"
$(P) : $(T)
else
eval
$(T) :: CMD_STANDALONE=b_$(T) $(T).c
end
P := $(T)
end
end
:BUILTIN: dlls LICENSE=since=2002,author=gsf -ldll look mime \
pty LICENSE=since=2001,author=gsf+dgk -lutil \
nl LICENSE=since=2003,author=dgk asa od pr \
strings tr uudecode -luu uuencode -luu what who
dontcare -lutil
:: PROMO.mm RELEASE
:TEST: asa cat chmod chown cksum cmp cp cut date expr fmt head join ln \
look mkdir mkfifo mktemp mv nl od paste rm tail tr uniq uuencode wc

95
src/cmd/builtin/Mamfile Normal file
View file

@ -0,0 +1,95 @@
info mam static 00000 1994-07-17 make (AT&T Research) 5.7 2012-06-20
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib
setv PACKAGE_cmd ${INSTALLROOT}
setv PACKAGE_cmd_INCLUDE ${PACKAGE_cmd}/include
setv PACKAGE_cmd_LIB ${PACKAGE_cmd}/lib
setv PACKAGEROOT ../../../../..
setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS}
setv ARFLAGS rc
setv AS as
setv ASFLAGS
setv CC cc
setv mam_cc_FLAGS
setv CCFLAGS ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${mam_cc_OPTIMIZE}?}
setv CCLDFLAGS ${-strip-symbols?1?${mam_cc_LD_STRIP}??}
setv COTEMP $$
setv CPIO cpio
setv CPIOFLAGS
setv CPP "${CC} -E"
setv F77 f77
setv HOSTCC ${CC}
setv IGNORE
setv LD ld
setv LDFLAGS
setv LEX lex
setv LEXFLAGS
setv LPR lpr
setv LPRFLAGS
setv M4FLAGS
setv NMAKE nmake
setv NMAKEFLAGS
setv PR pr
setv PRFLAGS
setv SHELL /bin/sh
setv SILENT
setv TAR tar
setv YACC yacc
setv YACCFLAGS -d
make ${PACKAGEROOT}/lib/package/ast.lic
done ${PACKAGEROOT}/lib/package/ast.lic
make .INIT
make ${PACKAGE_ast_INCLUDE}/cmdlist.h
make ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/prototyped.h dontcare
done ${PACKAGE_ast_INCLUDE}/cmdlist.h
exec - sed -e '/^CMDLIST(.*)$/!d' -e 's/CMDLIST(\(.*\))/\1/' -e '/^getconf$/d' -e '/^ln$/d' -e '/^mv$/d' -e '/^md5sum$/d' -e '/^sum$/d' ${PACKAGE_ast_INCLUDE}/cmdlist.h
bind -lcmd
done .INIT dontcare virtual
make install
make pty
make pty.o
make pty.c
make FEATURE/pty implicit
meta FEATURE/pty features/%>FEATURE/% features/pty pty
make features/pty
done features/pty
exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ' ref ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} -I${INSTALLROOT}/include ${mam_libast} ${mam_libcmd} : run features/pty
done FEATURE/pty generated
make ${PACKAGE_ast_INCLUDE}/ast_time.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_time.h
prev ${PACKAGE_ast_INCLUDE}/vmalloc.h implicit
prev ${PACKAGE_ast_INCLUDE}/regex.h implicit
make ${PACKAGE_ast_INCLUDE}/proc.h implicit
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/proc.h
prev ${PACKAGE_ast_INCLUDE}/error.h implicit
prev ${PACKAGE_ast_INCLUDE}/cmd.h implicit
done pty.c
meta pty.o %.c>%.o pty.c pty
prev pty.c
setv CMD_STANDALONE -DCMD_STANDALONE="b_pty"
setv LICENSE -DLICENSE="since=2001,author=gsf+dgk"
exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""builtin"\" -D_PACKAGE_ast -DCMD_STANDALONE=b_pty -DUSAGE_LICENSE=\""[-author?Glenn Fowler <gsf@research.att.com>][-author?David Korn <dgk@research.att.com>][-copyright?Copyright (c) 2001-2012 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?builtin]"\" -c pty.c
done pty.o generated
bind -lutil dontcare
setv CMD_STANDALONE -DCMD_STANDALONE="b_pty"
exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o pty pty.o ${mam_libutil} ${mam_libast} ${mam_libcmd}
done pty generated
make ${INSTALLROOT}/bin
exec - if silent test ! -d ${INSTALLROOT}/bin
exec - then mkdir -p ${INSTALLROOT}/bin
exec - fi
done ${INSTALLROOT}/bin generated
make ${INSTALLROOT}/bin/pty
prev pty
exec - test '' = 'pty' || ${STDCMP} 2>/dev/null -s pty ${INSTALLROOT}/bin/pty || { ${STDMV} ${INSTALLROOT}/bin/pty ${INSTALLROOT}/bin/pty.old 2>/dev/null || true; ${STDCP} pty ${INSTALLROOT}/bin/pty ;}
done ${INSTALLROOT}/bin/pty generated
make ${INSTALLROOT}/bin
exec - if silent test ! -d ${INSTALLROOT}/bin
exec - then mkdir -p ${INSTALLROOT}/bin
exec - fi
done ${INSTALLROOT}/bin virtual
done install virtual

10
src/cmd/builtin/RELEASE Normal file
View file

@ -0,0 +1,10 @@
12-02-28 pty.c: change --verbose[=level] to --debug=level
12-01-26 pty.c: fix --man docs
10-06-21 pty.c: add 4 sec timeout for initial handshake -- fix me!!
10-04-12 pty: fix sfpoll() result read/write bug
10-04-01 pty: add --tty='stty-settings'
10-03-19 pty: add --dialogue
10-03-15 pty: fix select() fd management
09-03-31 features/pty,Makefile: add pty.h and -lutil refs for linux -- great, another util library
09-01-30 pty.c: add <ast_time.h> (for fd_set!! on mvs.390)
06-07-20 pty.c: add

60
src/cmd/builtin/features/pty Executable file
View file

@ -0,0 +1,60 @@
set prototyped
header sys/types.h
header pty.h
header libutil.h
header sys/pty.h
header sys/ptyio.h
header sys/vty.h
header sys/ioctl.h
header stropts.h
lib openpty,_getpty,ptsname -lutil
lib grantpt,unlockpt,posix_openpt stdlib.h
tst - output{
#include <sys/types.h>
#include <sys/stat.h>
#if _lib_ptsname && _npt_ptsname
_BEGIN_EXTERNS_
#if _STD_
extern char* ptsname(int);
#else
extern char* ptsname();
#endif
#endif
_END_EXTERNS_
int main()
{
int i;
struct stat statb;
static char* pty[] = { "/dev/ptyp0000", "/dev/ptym/ptyp0", "/dev/ptyp0" };
#if _lib_ptsname
int fd;
static char* ptc[] = { "/dev/ptmx", "/dev/ptc", "/dev/ptmx_bsd" };
for (i = 0; i < sizeof(ptc) / sizeof(ptc[0]); i++)
if((fd = open(ptc[i], 2))>=0)
{
if (ptsname(fd))
{
printf("#define _pty_clone\t\"%s\"\n", ptc[i]);
close(fd);
break;
}
close(fd);
}
#endif
for (i = 0;; i++)
if(i >= (sizeof(pty) / sizeof(pty[0]) - 1) || stat(pty[i], &statb)>=0)
{
printf("#define _pty_first\t\"%s\"\n", pty[i]);
break;
}
return 0;
}
}end
extern _getpty char* (int*, int, mode_t, int)
extern openpty int (int*, int*, char*, struct termios*, struct winsize*)
extern ptsname char* (int)

1069
src/cmd/builtin/pty.c Normal file

File diff suppressed because it is too large Load diff