mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-13 19:52:20 +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:
parent
802ea67afb
commit
cd5c181a39
5 changed files with 1324 additions and 0 deletions
90
src/cmd/builtin/Makefile
Normal file
90
src/cmd/builtin/Makefile
Normal 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
95
src/cmd/builtin/Mamfile
Normal 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
10
src/cmd/builtin/RELEASE
Normal 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
60
src/cmd/builtin/features/pty
Executable 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
1069
src/cmd/builtin/pty.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue