diff --git a/cde/.gitignore b/cde/.gitignore index 9aa2dd759..fa55ac586 100644 --- a/cde/.gitignore +++ b/cde/.gitignore @@ -8,12 +8,14 @@ # Backups and editor created backups *.bak *~ +.depend # flags for saying directory is complete DONE # imports of of headers imports/x11 +imports/motif # exports of libraries/headers exports @@ -77,6 +79,7 @@ programs/dsdm/dsdm programs/dtaction/dtaction programs/dtappintegrate/dtappintegrate programs/dtcalc/dtcalc +programs/dtcm/libDtCmP/y.tab.h programs/dtexec/dtexec programs/dthello/Dthello programs/dthello/dthello @@ -131,6 +134,16 @@ programs/dtwm/dtwm programs/localized/C/types/*.dt programs/localized/C/types/*.dt.tmsg programs/localized/C/types/*.nls +programs/localized/ls /msg/*.nls +programs/localized/de_DE.ISO8859-1/msg/*.tmp.msg +programs/localized/es_ES.ISO8859-1/msg/*.tmp.msg +programs/localized/fr_FR.ISO8859-1/msg/*.tmp.msg +programs/localized/it_IT.ISO8859-1/msg/*.tmp.msg +programs/localized/ja_JP.dt-eucJP/msg/*.tmp.msg +programs/localized/ko_KR.dt-eucKR/msg/*.tmp.msg +programs/localized/sv_SE.ISO8859-1/msg/*.tmp.msg +programs/localized/zh_CN.dt-eucCN/msg/*.tmp.msg +programs/localized/zh_TW.dt-eucTW/msg/*.tmp.msg # dtappbuilder programs/dtappbuilder/src/ab/.dtcodegen.log @@ -754,6 +767,7 @@ programs/dtinfo/tools/misc/dfiles programs/dtinfo/tools/misc/pmaker # program/dtksh +programs/dtksh/dtksh programs/dtksh/examples/CallDataTest4 programs/dtksh/examples/CallbackTest2 programs/dtksh/examples/DtCursorTest2 @@ -775,6 +789,205 @@ programs/dtksh/examples/WorkProcTest1 programs/dtksh/examples/XCursorTest1 programs/dtksh/examples/XdrawTest programs/dtksh/examples/crMovesText1 +programs/dtksh/ksh93/bin +programs/dtksh/ksh93/include +programs/dtksh/ksh93/lib +programs/dtksh/ksh93/man/man1/sh.1 +programs/dtksh/ksh93/man/man1/sh.1.old +programs/dtksh/ksh93/man/man3/LIBAST.3 +programs/dtksh/ksh93/man/man3/LIBAST.3.old +programs/dtksh/ksh93/man/man3/ast.3 +programs/dtksh/ksh93/man/man3/ast.3.old +programs/dtksh/ksh93/man/man3/chr.3 +programs/dtksh/ksh93/man/man3/chr.3.old +programs/dtksh/ksh93/man/man3/compatibility.3 +programs/dtksh/ksh93/man/man3/compatibility.3.old +programs/dtksh/ksh93/man/man3/error.3 +programs/dtksh/ksh93/man/man3/error.3.old +programs/dtksh/ksh93/man/man3/find.3 +programs/dtksh/ksh93/man/man3/find.3.old +programs/dtksh/ksh93/man/man3/fmt.3 +programs/dtksh/ksh93/man/man3/fmt.3.old +programs/dtksh/ksh93/man/man3/fmtls.3 +programs/dtksh/ksh93/man/man3/fmtls.3.old +programs/dtksh/ksh93/man/man3/fs3d.3 +programs/dtksh/ksh93/man/man3/fs3d.3.old +programs/dtksh/ksh93/man/man3/ftwalk.3 +programs/dtksh/ksh93/man/man3/ftwalk.3.old +programs/dtksh/ksh93/man/man3/getcwd.3 +programs/dtksh/ksh93/man/man3/getcwd.3.old +programs/dtksh/ksh93/man/man3/hash.3 +programs/dtksh/ksh93/man/man3/hash.3.old +programs/dtksh/ksh93/man/man3/iblocks.3 +programs/dtksh/ksh93/man/man3/iblocks.3.old +programs/dtksh/ksh93/man/man3/int.3 +programs/dtksh/ksh93/man/man3/int.3.old +programs/dtksh/ksh93/man/man3/magic.3 +programs/dtksh/ksh93/man/man3/magic.3.old +programs/dtksh/ksh93/man/man3/mem.3 +programs/dtksh/ksh93/man/man3/mem.3.old +programs/dtksh/ksh93/man/man3/modecanon.3 +programs/dtksh/ksh93/man/man3/modecanon.3.old +programs/dtksh/ksh93/man/man3/nval.3 +programs/dtksh/ksh93/man/man3/nval.3.old +programs/dtksh/ksh93/man/man3/optget.3 +programs/dtksh/ksh93/man/man3/optget.3.old +programs/dtksh/ksh93/man/man3/path.3 +programs/dtksh/ksh93/man/man3/path.3.old +programs/dtksh/ksh93/man/man3/preroot.3 +programs/dtksh/ksh93/man/man3/preroot.3.old +programs/dtksh/ksh93/man/man3/proc.3 +programs/dtksh/ksh93/man/man3/proc.3.old +programs/dtksh/ksh93/man/man3/re.3 +programs/dtksh/ksh93/man/man3/re.3.old +programs/dtksh/ksh93/man/man3/setenviron.3 +programs/dtksh/ksh93/man/man3/setenviron.3.old +programs/dtksh/ksh93/man/man3/sfdisc.3 +programs/dtksh/ksh93/man/man3/sfdisc.3.old +programs/dtksh/ksh93/man/man3/sfio.3 +programs/dtksh/ksh93/man/man3/sfio.3.old +programs/dtksh/ksh93/man/man3/sig.3 +programs/dtksh/ksh93/man/man3/sig.3.old +programs/dtksh/ksh93/man/man3/spawnveg.3 +programs/dtksh/ksh93/man/man3/spawnveg.3.old +programs/dtksh/ksh93/man/man3/stak.3 +programs/dtksh/ksh93/man/man3/stak.3.old +programs/dtksh/ksh93/man/man3/stk.3 +programs/dtksh/ksh93/man/man3/stk.3.old +programs/dtksh/ksh93/man/man3/strcopy.3 +programs/dtksh/ksh93/man/man3/strcopy.3.old +programs/dtksh/ksh93/man/man3/strdup.3 +programs/dtksh/ksh93/man/man3/strdup.3.old +programs/dtksh/ksh93/man/man3/strelapsed.3 +programs/dtksh/ksh93/man/man3/strelapsed.3.old +programs/dtksh/ksh93/man/man3/strerror.3 +programs/dtksh/ksh93/man/man3/strerror.3.old +programs/dtksh/ksh93/man/man3/stresc.3 +programs/dtksh/ksh93/man/man3/stresc.3.old +programs/dtksh/ksh93/man/man3/streval.3 +programs/dtksh/ksh93/man/man3/streval.3.old +programs/dtksh/ksh93/man/man3/strgid.3 +programs/dtksh/ksh93/man/man3/strgid.3.old +programs/dtksh/ksh93/man/man3/strmatch.3 +programs/dtksh/ksh93/man/man3/strmatch.3.old +programs/dtksh/ksh93/man/man3/stropt.3 +programs/dtksh/ksh93/man/man3/stropt.3.old +programs/dtksh/ksh93/man/man3/strperm.3 +programs/dtksh/ksh93/man/man3/strperm.3.old +programs/dtksh/ksh93/man/man3/strsignal.3 +programs/dtksh/ksh93/man/man3/strsignal.3.old +programs/dtksh/ksh93/man/man3/strsort.3 +programs/dtksh/ksh93/man/man3/strsort.3.old +programs/dtksh/ksh93/man/man3/strtape.3 +programs/dtksh/ksh93/man/man3/strtape.3.old +programs/dtksh/ksh93/man/man3/strton.3 +programs/dtksh/ksh93/man/man3/strton.3.old +programs/dtksh/ksh93/man/man3/struid.3 +programs/dtksh/ksh93/man/man3/struid.3.old +programs/dtksh/ksh93/man/man3/swap.3 +programs/dtksh/ksh93/man/man3/swap.3.old +programs/dtksh/ksh93/man/man3/tab.3 +programs/dtksh/ksh93/man/man3/tab.3.old +programs/dtksh/ksh93/man/man3/tm.3 +programs/dtksh/ksh93/man/man3/tm.3.old +programs/dtksh/ksh93/man/man3/tok.3 +programs/dtksh/ksh93/man/man3/tok.3.old +programs/dtksh/ksh93/man/man3/touch.3 +programs/dtksh/ksh93/man/man3/touch.3.old +programs/dtksh/ksh93/man/man3/vdelta.3 +programs/dtksh/ksh93/man/man3/vdelta.3.old +programs/dtksh/ksh93/man/man3/vecargs.3 +programs/dtksh/ksh93/man/man3/vecargs.3.old +programs/dtksh/ksh93/man/man3/vmalloc.3 +programs/dtksh/ksh93/man/man3/vmalloc.3.old +programs/dtksh/ksh93/ship/SHIPiffe.sh +programs/dtksh/ksh93/ship/SHIPin +programs/dtksh/ksh93/ship/SHIPop.c +programs/dtksh/ksh93/ship/SHIPprobe +programs/dtksh/ksh93/ship/SHIPproto.c +programs/dtksh/ksh93/ship/ksh93/950807/BUILT +programs/dtksh/ksh93/ship/ksh93/950807/ERROR +programs/dtksh/ksh93/ship/ksh93/in.log +programs/dtksh/ksh93/ship/lib0ast/950811/BUILT +programs/dtksh/ksh93/ship/lib0ast/950811/ERROR +programs/dtksh/ksh93/ship/lib0ast/in.log +programs/dtksh/ksh93/ship/libAST/930519/BUILT +programs/dtksh/ksh93/ship/libAST/930519/ERROR +programs/dtksh/ksh93/ship/libAST/in.log +programs/dtksh/ksh93/ship/libast/950811/BUILT +programs/dtksh/ksh93/ship/libast/950811/ERROR +programs/dtksh/ksh93/ship/libast/in.log +programs/dtksh/ksh93/ship/libcmd/950811/BUILT +programs/dtksh/ksh93/ship/libcmd/950811/ERROR +programs/dtksh/ksh93/ship/libcmd/in.log +programs/dtksh/ksh93/ship/libodelta/950811/BUILT +programs/dtksh/ksh93/ship/libodelta/950811/ERROR +programs/dtksh/ksh93/ship/libodelta/in.log +programs/dtksh/ksh93/ship/libvdelta/950811/BUILT +programs/dtksh/ksh93/ship/libvdelta/950811/ERROR +programs/dtksh/ksh93/ship/libvdelta/in.log +programs/dtksh/ksh93/ship/pax/950811/BUILT +programs/dtksh/ksh93/ship/pax/950811/ERROR +programs/dtksh/ksh93/ship/pax/in.log +programs/dtksh/ksh93/ship/shipiffe +programs/dtksh/ksh93/ship/shipop +programs/dtksh/ksh93/ship/shipproto +programs/dtksh/ksh93/src/cmd/ksh93/FEATURE/ +programs/dtksh/ksh93/src/cmd/ksh93/MAM.list +programs/dtksh/ksh93/src/cmd/ksh93/MAM.time +programs/dtksh/ksh93/src/cmd/ksh93/ksh +programs/dtksh/ksh93/src/cmd/ksh93/ksh.msg +programs/dtksh/ksh93/src/cmd/ksh93/shcomp +programs/dtksh/ksh93/src/cmd/ksh93/suid_exec +programs/dtksh/ksh93/src/cmd/pax/FEATURE/ +programs/dtksh/ksh93/src/cmd/pax/MAM.list +programs/dtksh/ksh93/src/cmd/pax/MAM.time +programs/dtksh/ksh93/src/lib/lib0ast/MAM.list +programs/dtksh/ksh93/src/lib/lib0ast/MAM.time +programs/dtksh/ksh93/src/lib/lib0ast/hostinfo +programs/dtksh/ksh93/src/lib/lib0ast/prototyped.h +programs/dtksh/ksh93/src/lib/libAST/MAM.list +programs/dtksh/ksh93/src/lib/libAST/MAM.time +programs/dtksh/ksh93/src/lib/libAST/prototyped.h +programs/dtksh/ksh93/src/lib/libast/FEATURE/ +programs/dtksh/ksh93/src/lib/libast/MAM.list +programs/dtksh/ksh93/src/lib/libast/MAM.time +programs/dtksh/ksh93/src/lib/libast/align.h +programs/dtksh/ksh93/src/lib/libast/ast_botch.h +programs/dtksh/ksh93/src/lib/libast/ast_fcntl.h +programs/dtksh/ksh93/src/lib/libast/ast_fs.h +programs/dtksh/ksh93/src/lib/libast/ast_hdr.h +programs/dtksh/ksh93/src/lib/libast/ast_lib.h +programs/dtksh/ksh93/src/lib/libast/ast_mode.h +programs/dtksh/ksh93/src/lib/libast/ast_param.h +programs/dtksh/ksh93/src/lib/libast/ast_time.h +programs/dtksh/ksh93/src/lib/libast/ast_tty.h +programs/dtksh/ksh93/src/lib/libast/ast_types.h +programs/dtksh/ksh93/src/lib/libast/ast_unistd.h +programs/dtksh/ksh93/src/lib/libast/ast_wait.h +programs/dtksh/ksh93/src/lib/libast/conf +programs/dtksh/ksh93/src/lib/libast/conflib.h +programs/dtksh/ksh93/src/lib/libast/conflim.h +programs/dtksh/ksh93/src/lib/libast/confmap.c +programs/dtksh/ksh93/src/lib/libast/confmap.h +programs/dtksh/ksh93/src/lib/libast/confstr.c +programs/dtksh/ksh93/src/lib/libast/conftab.c +programs/dtksh/ksh93/src/lib/libast/conftab.h +programs/dtksh/ksh93/src/lib/libast/confuni.h +programs/dtksh/ksh93/src/lib/libast/int.h +programs/dtksh/ksh93/src/lib/libast/limits.h +programs/dtksh/ksh93/src/lib/libast/pathconf.c +programs/dtksh/ksh93/src/lib/libast/preroot.h +programs/dtksh/ksh93/src/lib/libast/sig.h +programs/dtksh/ksh93/src/lib/libast/sysconf.c +programs/dtksh/ksh93/src/lib/libcmd/FEATURE/ +programs/dtksh/ksh93/src/lib/libcmd/MAM.list +programs/dtksh/ksh93/src/lib/libcmd/MAM.time +programs/dtksh/ksh93/src/lib/libcmd/cmd.req +programs/dtksh/ksh93/src/lib/libodelta/MAM.list +programs/dtksh/ksh93/src/lib/libodelta/MAM.time +programs/dtksh/ksh93/src/lib/libvdelta/MAM.list +programs/dtksh/ksh93/src/lib/libvdelta/MAM.time # programs/dtlogin programs/dtlogin/config/0060.dtsysenv @@ -844,6 +1057,10 @@ programs/dtwm/Dtwm.defs programs/dtwm/dtfplist programs/dtwm/sys.dtwmrc +# programs/ksh93 +programs/dtksh/ksh93/man/man1/sh.1 +programs/dtksh/ksh93/man/man3/nval.3 + # programs/localized programs/localized/C/types/*.dt programs/localized/C/types/*.dt.tmsg diff --git a/cde/admin/IntegTools/post_install/Imakefile b/cde/admin/IntegTools/post_install/Imakefile index f8e3d8dc8..3b6bc433f 100644 --- a/cde/admin/IntegTools/post_install/Imakefile +++ b/cde/admin/IntegTools/post_install/Imakefile @@ -10,7 +10,8 @@ XCOMM $TOG: Imakefile /main/13 1998/03/11 16:20:10 mgreess $ TOOL_DIR = ../dbTools DATABASE_DIR = ../../../databases -BUILD_UDB_TOOL = ./build_udb_list +BUILD_UDB_TOOL = $(SHELL) build_udb_list +UDB_TOOL = $(KORNSHELL) $(TOOL_DIR)/udbToAny.ksh #ifdef HPArchitecture PLATFORM = hp-ux @@ -22,6 +23,9 @@ SUBDIRS = linux #ifdef OpenBSDArchitecture PLATFORM = openbsd #endif +#ifdef FreeBSDArchitecture +PLATFORM = freebsd +#endif #ifdef RsArchitecture PLATFORM = aix SUBDIRS = ibm @@ -50,62 +54,62 @@ MakeSubdirs($(SUBDIRS)) all:: configHelp:: $(DATABASE_DIR)/CDE-HELP-C.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-HELP-C.udb > CDE-HELP-C.lst $(BUILD_UDB_TOOL) CDE-HELP-C ../../.. configHelpPrg:: $(DATABASE_DIR)/CDE-HELP-PRG.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-HELP-PRG.udb > CDE-HELP-PRG.lst $(BUILD_UDB_TOOL) CDE-HELP-PRG ../../.. configDemos:: $(DATABASE_DIR)/CDE-DEMOS.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-DEMOS.udb > CDE-DEMOS.lst $(BUILD_UDB_TOOL) CDE-DEMOS ../../.. configFonts:: $(DATABASE_DIR)/CDE-FONTS.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-FONTS.udb > CDE-FONTS.lst $(BUILD_UDB_TOOL) CDE-FONTS ../../.. configHelpRun:: $(DATABASE_DIR)/CDE-HELP-RUN.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-HELP-RUN.udb > CDE-HELP-RUN.lst $(BUILD_UDB_TOOL) CDE-HELP-RUN ../../.. configIcons:: $(DATABASE_DIR)/CDE-ICONS.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-ICONS.udb > CDE-ICONS.lst $(BUILD_UDB_TOOL) CDE-ICONS ../../.. configInc:: $(DATABASE_DIR)/CDE-INC.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-INC.udb > CDE-INC.lst $(BUILD_UDB_TOOL) CDE-INC ../../.. configManDev:: $(DATABASE_DIR)/CDE-MAN-DEV.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-MAN-DEV.udb > CDE-MAN-DEV.lst $(BUILD_UDB_TOOL) CDE-MAN-DEV ../../.. configMan:: $(DATABASE_DIR)/CDE-MAN.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-MAN.udb > CDE-MAN.lst $(BUILD_UDB_TOOL) CDE-MAN ../../.. configMsgCat:: $(DATABASE_DIR)/CDE-MSG-C.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-MSG-C.udb > CDE-MSG-C.lst $(BUILD_UDB_TOOL) CDE-MSG-C ../../.. configPrg:: $(DATABASE_DIR)/CDE-PRG.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-PRG.udb > CDE-PRG.lst $(BUILD_UDB_TOOL) CDE-PRG ../../.. configShlibs:: $(DATABASE_DIR)/CDE-SHLIBS.udb - $(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \ + $(UDB_TOOL) -toLst -ReleaseStream $(PLATFORM) \ $(DATABASE_DIR)/CDE-SHLIBS.udb > CDE-SHLIBS.lst $(BUILD_UDB_TOOL) CDE-SHLIBS ../../.. diff --git a/cde/admin/IntegTools/post_install/linux/configRun.src b/cde/admin/IntegTools/post_install/linux/configRun.src index 1736b8f23..36b594493 100755 --- a/cde/admin/IntegTools/post_install/linux/configRun.src +++ b/cde/admin/IntegTools/post_install/linux/configRun.src @@ -343,7 +343,7 @@ DEFAULT_PRINTER="DtPrint" then awk '{print "kill -1 " $2}' /tmp/tmppsout | /bin/csh else - [ -x /usr/sbin/inetd ] && /usr/sbin/inetd -s 2>/dev/null + [ -x /usr/sbin/inetd ] && /usr/sbin/inetd fi fi diff --git a/cde/config/cf/FreeBSD.cf b/cde/config/cf/FreeBSD.cf index dc37202d0..4f81bef80 100644 --- a/cde/config/cf/FreeBSD.cf +++ b/cde/config/cf/FreeBSD.cf @@ -30,6 +30,8 @@ XCOMM operating system: OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVe #endif #undef InstallCmd #define InstallCmd /usr/bin/install +#undef KornShell +#define KornShell /usr/local/bin/ksh93 #define UseGas YES #ifndef GccUsesGas diff --git a/cde/config/cf/Imake.tmpl b/cde/config/cf/Imake.tmpl index 080f4e96c..fc8b419a6 100644 --- a/cde/config/cf/Imake.tmpl +++ b/cde/config/cf/Imake.tmpl @@ -180,6 +180,9 @@ XCOMM the platform-specific parameters - edit site.def to change #ifndef BourneShell /* to force shell in makefile */ #define BourneShell /bin/sh #endif +#ifndef KornShell +#define KornShell /bin/ksh +#endif #ifndef ConstructMFLAGS #if SystemV #define ConstructMFLAGS YES /* build MFLAGS from MAKEFLAGS */ @@ -889,6 +892,7 @@ XCOMM the platform-specific parameters - edit site.def to change PATHSEP = PathSeparator SHELL = BourneShell + KORNSHELL = KornShell TOP = TOPDIR CURRENT_DIR = CURDIR diff --git a/cde/config/cf/README b/cde/config/cf/README index d6c7445bb..ecbabcdfd 100644 --- a/cde/config/cf/README +++ b/cde/config/cf/README @@ -90,6 +90,7 @@ Imake.tmpl provides defaults for the following variables: InstPgmFlags install flags for normal programs InstUidFlags install flags for xterm to chown /dev/ptys InstallCmd command to install files + KornShell command used to run Korn Shell Krb5Includes where to include Kerberos header files from Krb5Libraries where to load Kerberos libraries from LdCmd command to run loader diff --git a/cde/config/cf/site.def b/cde/config/cf/site.def index 9404bd935..e18d4afda 100644 --- a/cde/config/cf/site.def +++ b/cde/config/cf/site.def @@ -67,8 +67,10 @@ XCOMM site: $TOG: site.def /main/23 1998/03/19 18:43:26 mgreess $ #ifdef AfterVendorCF #ifndef X11ProjectRoot -# if defined(LinuxArchitecture) || defined(FreeBSDArchitecture) +# if defined(LinuxArchitecture) # define X11ProjectRoot /usr +#elif defined(FreeBSDArchitecture) +# define X11ProjectRoot /usr/local # else # define X11ProjectRoot /X11 # endif diff --git a/cde/databases/Imakefile b/cde/databases/Imakefile index 2db62e42e..37864401a 100644 --- a/cde/databases/Imakefile +++ b/cde/databases/Imakefile @@ -30,6 +30,9 @@ UDB_RELEASE_OPT = -ReleaseStream linux #ifdef OpenBSDArchitecture UDB_RELEASE_OPT = -ReleaseStream openbsd #endif +#ifdef FreeBSDArchitecture +UDB_RELEASE_OPT = -ReleaseStream freebsd +#endif /* * Insure that symbols used in the .udb files are undefined for @@ -97,7 +100,7 @@ CONVERSION= -toDB .udb.db: @echo "making $*.db" @$(RM) $*.db - $(TOOLSRC)/$(DBTOOLS)/udbToAny.ksh $(CONVERSION) $(UDB_RELEASE_OPT) $< > $*.db + $(KORNSHELL) $(TOOLSRC)/$(DBTOOLS)/udbToAny.ksh $(CONVERSION) $(UDB_RELEASE_OPT) $< > $*.db all:: diff --git a/cde/lib/DtSearch/dtsrapi.c b/cde/lib/DtSearch/dtsrapi.c index b62b87166..c17982675 100644 --- a/cde/lib/DtSearch/dtsrapi.c +++ b/cde/lib/DtSearch/dtsrapi.c @@ -314,10 +314,8 @@ int DtSearchInit ( aa_argv0 = argv0; if (err_file) aa_stderr = err_file; -#if defined(linux) || defined(CSRG_BASED) else aa_stderr = stderr; -#endif sprintbuf = austext_malloc (SPRINTBUFSZ, PROGNAME "135", NULL); diff --git a/cde/lib/DtSearch/globals.c b/cde/lib/DtSearch/globals.c index 093645d41..4fa4f7888 100644 --- a/cde/lib/DtSearch/globals.c +++ b/cde/lib/DtSearch/globals.c @@ -60,11 +60,7 @@ #include #include -#if defined(linux) FILE *aa_stderr = NULL; -#else -FILE *aa_stderr = stderr; -#endif char *aa_argv0 = ""; nl_catd dtsearch_catd = (nl_catd) -1; nl_catd austools_catd = (nl_catd) -1; diff --git a/cde/lib/DtSearch/raima/vista.h b/cde/lib/DtSearch/raima/vista.h index ee29579e5..704e9955c 100644 --- a/cde/lib/DtSearch/raima/vista.h +++ b/cde/lib/DtSearch/raima/vista.h @@ -86,7 +86,7 @@ # define __SVR4_I386_ABI_L1__ #endif #include /* pickup WORD_BIT, LONG_BIT */ -#if defined(linux) +#if defined(linux) || defined(__FreeBSD__) # undef __SVR4_I386_ABI_L1__ # ifndef WORD_BIT # define WORD_BIT 32 diff --git a/cde/lib/DtTerm/TermPrim/Imakefile b/cde/lib/DtTerm/TermPrim/Imakefile index 286bcd8ee..a0a3b0eda 100644 --- a/cde/lib/DtTerm/TermPrim/Imakefile +++ b/cde/lib/DtTerm/TermPrim/Imakefile @@ -109,6 +109,10 @@ LinkFile(TermPrimGetPty.c,TermPrimGetPty-svr4.c) LinkFile(TermPrimGetPty.c,TermPrimGetPty-svr4.c) #endif +#ifdef FreeBSDArchitecture +LinkFile(TermPrimGetPty.c,TermPrimGetPty-bsd.c) +#endif + #ifdef OpenBSDArchitecture LinkFile(TermPrimGetPty.c,TermPrimGetPty-bsd.c) #endif diff --git a/cde/lib/DtTerm/TermPrim/TermPrimDebug.c b/cde/lib/DtTerm/TermPrim/TermPrimDebug.c index 6f8e17008..f0a96ddac 100644 --- a/cde/lib/DtTerm/TermPrim/TermPrimDebug.c +++ b/cde/lib/DtTerm/TermPrim/TermPrimDebug.c @@ -39,10 +39,10 @@ static char rcs_id[] = "$XConsortium: TermPrimDebug.c /main/4 1996/11/21 19:58:1 #include #include #include -#if !defined(linux) -# include -#else +#if defined(linux) || defined(CSRG_BASED) # include +#else +# include #endif #include "TermHeader.h" #include "TermPrimDebug.h" diff --git a/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h b/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h index e5a7b7767..eac6b471a 100644 --- a/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h +++ b/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h @@ -96,11 +96,11 @@ # define USE_TCSENDBREAK /* use tiocbreak() */ #endif /* LINUX_ARCHITECTURE */ -#ifdef OPENBSD_ARCHITECTURE +#ifdef CSRG_BASED # define HAS_SETEUID /* seteuid available */ # define HAS_SETREUID /* setreuid available */ # define USE_TCSENDBREAK /* use tiocbreak() */ -#endif /* OPENBSD_ARCHITECTURE */ +#endif /* CSRG_BASED */ #ifdef SUN_ARCHITECTURE # define XOR_CAPS_LOCK /* xor caps lock and shift */ diff --git a/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c b/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c index 4328bd25a..35cc72693 100644 --- a/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c +++ b/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c @@ -60,6 +60,12 @@ static char rcs_id[] = "$TOG: TermPrimSetUtmp.c /main/10 1998/04/03 17:11:42 mgr #define UT_NO_pututline #endif /* sun */ +#ifdef __FreeBSD__ +#define UT_UTMPX +#define UT_HOST ut_host +#define UT_NO_pututline +#endif + #ifdef sun #define UT_UTMPX #define UT_HOST ut_host diff --git a/cde/lib/DtWidget/Imakefile b/cde/lib/DtWidget/Imakefile index 9c1a80f41..f167e35ab 100644 --- a/cde/lib/DtWidget/Imakefile +++ b/cde/lib/DtWidget/Imakefile @@ -15,7 +15,7 @@ XCOMM $XConsortium: Imakefile /main/8 1996/04/21 19:11:16 drk $ DEFINES = DtWidgetDefines #if defined(LinuxArchitecture) INCLUDES = -I. -I/usr/include/freetype2 -#elif defined(OpenBSDArchitecture) +#elif defined(OpenBSDArchitecture) || defined(FreeBSDArchitecture) INCLUDES = -I. -I$(XPROJECTROOT)/include/freetype2 #else INCLUDES = -I. diff --git a/cde/lib/csa/Imakefile b/cde/lib/csa/Imakefile index fccccdc8a..d64baee25 100644 --- a/cde/lib/csa/Imakefile +++ b/cde/lib/csa/Imakefile @@ -105,12 +105,6 @@ rtable3_clnt.c rtable3_xdr.c: rtable3.h namechange1.sed namechange2.sed rtable2_clnt.c rtable2_xdr.c: rtable3.h namechange1.sed namechange2.sed agent_xdr.c agent.c: agent.h -#ifdef LinuxArchitecture -EXTRASED=sed -e 's/update_failed.*=.*1,.*/update_failed = 1/g' | -#else -EXTRASED= -#endif - agent.h: $(RM) $@ cat agent.wrapbegin > agent.h diff --git a/cde/lib/csa/agent.c b/cde/lib/csa/agent.c index c41ab794a..57b970610 100644 --- a/cde/lib/csa/agent.c +++ b/cde/lib/csa/agent.c @@ -156,15 +156,15 @@ _DtCm_init_agent() } if (registerrpc(_DtCm_transient, AGENTVERS, update_callback, - (char *(*)())_DtCm_update_callback_1, _DtCm_xdr_Table_Res_4, - _DtCm_xdr_Update_Status) == -1) { + (char *(*)())_DtCm_update_callback_1, (xdrproc_t)_DtCm_xdr_Table_Res_4, + (xdrproc_t)_DtCm_xdr_Update_Status) == -1) { _DtCm_print_errmsg("Cannot register v1 callback handler\n"); _DtCm_print_errmsg("Callback cannot be enabled.\n"); } if (registerrpc(_DtCm_transient, AGENTVERS_2, CMCB_UPDATE_CALLBACK, (char *(*)())cmcb_update_callback_2_svc, - xdr_cmcb_update_callback_args, xdr_void) == -1) { + (xdrproc_t)xdr_cmcb_update_callback_args, (xdrproc_t)xdr_void) == -1) { _DtCm_print_errmsg("Cannot register v2 callback handler\n"); _DtCm_print_errmsg("Callback cannot be enabled.\n"); } @@ -296,7 +296,7 @@ _DtCm_process_updates() */ Update_Status * -_DtCm_update_callback_1(Table_Res_4 *t, void *dummy) +_DtCm_update_callback_1(Table_Res_4 *t, _DtCm_Connection *conn) { static Update_Status status = update_succeeded; _CallbackInfo *cbi; diff --git a/cde/lib/csa/agent.wrapbegin b/cde/lib/csa/agent.wrapbegin index b11af6a21..b263e1784 100644 --- a/cde/lib/csa/agent.wrapbegin +++ b/cde/lib/csa/agent.wrapbegin @@ -4,11 +4,3 @@ #if defined(HPUX) #include #endif /* HPUX */ - -#if defined(linux) || defined(CSRG_BASED) -# if defined __STDC__ -# define REDEFINE_STDC -# undef __STDC__ -# endif -#endif /* linux */ - diff --git a/cde/lib/csa/agent.wrapend b/cde/lib/csa/agent.wrapend index 7e9615cce..015de2924 100644 --- a/cde/lib/csa/agent.wrapend +++ b/cde/lib/csa/agent.wrapend @@ -3,10 +3,3 @@ #define hpux #endif #endif - -#if defined(linux) -# if defined REDEFINE_STDC -# undef REDEFINE_STDC -# define __STDC__ -# endif -#endif /* linux */ diff --git a/cde/lib/csa/agent.x b/cde/lib/csa/agent.x index fdf014b7b..761f1579f 100644 --- a/cde/lib/csa/agent.x +++ b/cde/lib/csa/agent.x @@ -32,6 +32,6 @@ enum Update_Status { */ program AGENTPROG { version AGENTVERS { - Update_Status update_callback(Table_Res) = 1; + Update_Status update_callback(Table_Res_4) = 1; }=1; }=00; diff --git a/cde/lib/csa/api.c b/cde/lib/csa/api.c index 5ca49af7e..9c789a51c 100644 --- a/cde/lib/csa/api.c +++ b/cde/lib/csa/api.c @@ -997,7 +997,7 @@ csa_list_entry_sequence( rtype = &entry->e->attrs[CSA_ENTRY_ATTR_RECURRENCE_RULE_I]; if (rtype->value == NULL || rtype->value->item.string_value == NULL || - *(rtype->value->item.string_value) == NULL) { + *(rtype->value->item.string_value) == '\0' ) { return (CSA_E_INVALID_PARAMETER); } } diff --git a/cde/lib/csa/attr.c b/cde/lib/csa/attr.c index 2dc4d0265..eaa168417 100644 --- a/cde/lib/csa/attr.c +++ b/cde/lib/csa/attr.c @@ -1907,8 +1907,8 @@ _CheckNameAtHost(char *owner, char *value) return (CSA_E_FAILURE); } - if (optr = strchr(owner, '@')) *optr = NULL; - if (ptr = strchr(value, '@')) *ptr = NULL; + if (optr = strchr(owner, '@')) *optr = '\0'; + if (ptr = strchr(value, '@')) *ptr = '\0'; res = strcmp(value, owner); if (optr) *optr = '@'; if (ptr) *ptr = '@'; @@ -1965,7 +1965,7 @@ _CheckCalendarName(char *owner, char *cname, cms_attribute_value *val) /* now make sure if cal name is a user name, it's * the same as that of the calling user */ - if (ptr = strchr(val->item.string_value, '@')) *ptr = NULL; + if (ptr = strchr(val->item.string_value, '@')) *ptr = '\0'; isuser = _DtCmIsUserName(val->item.string_value); if (ptr) *ptr = '@'; diff --git a/cde/lib/csa/calendar.c b/cde/lib/csa/calendar.c index 007980697..ea1b75b5d 100644 --- a/cde/lib/csa/calendar.c +++ b/cde/lib/csa/calendar.c @@ -90,7 +90,7 @@ _DtCm_new_Calendar(const char *calendar) if ((cal = (Calendar *)malloc(sizeof(Calendar))) == NULL) return(NULL); - memset((void *)cal, NULL, sizeof(Calendar)); + memset((void *)cal, 0, sizeof(Calendar)); if ((cal->name = strdup(calendar)) == NULL) { free(cal); @@ -305,7 +305,7 @@ _DtCm_list_old_cal_attr_names( for (i = 1, j = 0; i <= _DtCM_DEFINED_CAL_ATTR_SIZE; i++) { if (_CSA_cal_attr_info[i].fst_vers > 0 && _CSA_cal_attr_info[i].fst_vers <= cal->file_version) { - if (i == CSA_CAL_ATTR_CALENDAR_OWNER_I && *buf == NULL) + if (i == CSA_CAL_ATTR_CALENDAR_OWNER_I && *buf == '\0') continue; if ((names[j] = @@ -527,7 +527,7 @@ _get_owner_from_old_cal(Calendar *cal, char *owner) if (_DtCmIsUserName(calname) == B_TRUE) strcpy(owner, calname); else - *owner = NULL; + *owner = '\0'; free(calname); return (CSA_SUCCESS); @@ -555,7 +555,7 @@ _get_calendar_owner( } else { if ((stat = _get_owner_from_old_cal(cal, buf)) != CSA_SUCCESS) return (stat); - else if (*buf == NULL) + else if (*buf == '\0') return (CSA_SUCCESS); else owner = buf; diff --git a/cde/lib/csa/cmsdata.c b/cde/lib/csa/cmsdata.c index 1ce04b14f..3893a5915 100644 --- a/cde/lib/csa/cmsdata.c +++ b/cde/lib/csa/cmsdata.c @@ -164,7 +164,7 @@ _DtCmGrowAttrArray(uint *num_attrs, cms_attribute **attrs, cms_attribute *attr) return (CSA_E_INSUFFICIENT_MEMORY); else { *attrs = newptr; - memset((void *)&(*attrs)[*num_attrs+1], NULL, + memset((void *)&(*attrs)[*num_attrs+1], 0, sizeof(cms_attribute) * (index - *num_attrs)); } diff --git a/cde/lib/csa/convert4-5.c b/cde/lib/csa/convert4-5.c index dfca086db..344c4a2ae 100644 --- a/cde/lib/csa/convert4-5.c +++ b/cde/lib/csa/convert4-5.c @@ -378,7 +378,7 @@ _DtCmAttr4ToReminderValue( _csa_duration_to_iso8601(atoi(remval->value), timestr); rval.lead_time = timestr; - if (remval->clientdata && *remval->clientdata != NULL) { + if (remval->clientdata && *remval->clientdata != '\0') { rval.reminder_data.size = strlen(remval->clientdata); rval.reminder_data.data = (unsigned char *)remval->clientdata; } else { diff --git a/cde/lib/csa/convert5-4.c b/cde/lib/csa/convert5-4.c index 7ec6c5c8f..fb439d547 100644 --- a/cde/lib/csa/convert5-4.c +++ b/cde/lib/csa/convert5-4.c @@ -92,11 +92,11 @@ _DtCm_cmsattrs_to_apptdata(uint size, cms_attribute *attrs, Appt_4 *appt) { strncpy(buf, (char *)aptr->value->item.opaque_data_value->data, aptr->value->item.opaque_data_value->size); - buf[aptr->value->item.opaque_data_value->size] = NULL; + buf[aptr->value->item.opaque_data_value->size] = '\0'; ptr = strchr(buf, ':'); if (ptr != NULL) - *ptr = NULL; + *ptr = '\0'; appt->appt_id.key = atol(buf); @@ -819,7 +819,7 @@ _DtCm_add_reminder(char *rem, CSA_reminder * val, Appt_4 *appt) } memcpy(newattr->clientdata, val->reminder_data.data, val->reminder_data.size); - newattr->clientdata[val->reminder_data.size] = NULL; + newattr->clientdata[val->reminder_data.size] = '\0'; } else if ((newattr->clientdata = calloc(1,1)) == NULL) { _DtCm_free_attr4(newattr); diff --git a/cde/lib/csa/entry.c b/cde/lib/csa/entry.c index 5e87cc5e0..f4febf513 100644 --- a/cde/lib/csa/entry.c +++ b/cde/lib/csa/entry.c @@ -578,7 +578,7 @@ _DtCm_free_entry_content(uint dummy, _DtCm_libentry *entry) { _DtCm_remove_from_entry_list(entry->cal, (caddr_t)entry, (caddr_t)entry); if (entry->e) _DtCm_free_cms_entry(entry->e); - memset((void *)entry, NULL, sizeof(_DtCm_libentry)); + memset((void *)entry, 0, sizeof(_DtCm_libentry)); } /* @@ -611,7 +611,7 @@ _DtCm_free_libentries(_DtCm_libentry *entry) nptr = entry->next; if (entry->e) _DtCm_free_cms_entry(entry->e); - memset((void *)entry, NULL, sizeof(_DtCm_libentry)); + memset((void *)entry, 0, sizeof(_DtCm_libentry)); free(entry); diff --git a/cde/lib/csa/free.h b/cde/lib/csa/free.h index fca429974..dae127421 100644 --- a/cde/lib/csa/free.h +++ b/cde/lib/csa/free.h @@ -33,6 +33,7 @@ #include #include "ansi_c.h" +#include extern CSA_calendar_user *_DtCm_alloc_calendar_users(uint num_elem); diff --git a/cde/lib/csa/iso8601.c b/cde/lib/csa/iso8601.c index ef7a55cce..559919230 100644 --- a/cde/lib/csa/iso8601.c +++ b/cde/lib/csa/iso8601.c @@ -318,7 +318,7 @@ _csa_iso8601_to_duration(char *buf, time_t *sec) numptr = ptr; while (*ptr >= '0' && *ptr <= '9') ptr++; - if (numptr == ptr || !(*ptr && *ptr++ == 'S' && *ptr == NULL)) + if (numptr == ptr || !(*ptr && *ptr++ == 'S' && *ptr == '\0')) return (-1); else { num = atoi(numptr); diff --git a/cde/lib/csa/laccess.c b/cde/lib/csa/laccess.c index 631f38d96..0da60b304 100644 --- a/cde/lib/csa/laccess.c +++ b/cde/lib/csa/laccess.c @@ -215,10 +215,10 @@ match_forward(char *str1, char *str2) get_component(&str2, com2, '.'); if (*com1) { - if (*com2 == NULL) + if (*com2 == '\0') return (B_TRUE); } else { - if (*com2 == NULL) + if (*com2 == '\0') return (B_TRUE); else return (B_FALSE); @@ -229,18 +229,18 @@ match_forward(char *str1, char *str2) /* take care of case: a.b a. */ if (strcmp(str2, ".") == 0 - && (strcmp(str1, ".") != 0 || *str1 != NULL)) + && (strcmp(str1, ".") != 0 || *str1 != '\0')) return (B_FALSE); /* skip "." */ if (*str1 == '.') { - if (*str2 == NULL) + if (*str2 == '\0') return (B_TRUE); else { str1++; str2++; } - } else if (strcmp(str2, ".") == 0 || *str2 == NULL) + } else if (strcmp(str2, ".") == 0 || *str2 == '\0') return (B_TRUE); else return (B_FALSE); @@ -278,10 +278,10 @@ match_backward(char *str1, char *str2) get_last_component(str2, &ptr2, com2, '.'); if (*com1) { - if (*com2 == NULL) + if (*com2 == '\0') return (B_TRUE); } else { - if (*com2 == NULL) + if (*com2 == '\0') return (B_TRUE); else return (B_FALSE); diff --git a/cde/lib/csa/lutil.c b/cde/lib/csa/lutil.c index 1191c8617..9a3ff7a48 100644 --- a/cde/lib/csa/lutil.c +++ b/cde/lib/csa/lutil.c @@ -69,7 +69,7 @@ _DtCmGetPrefix(char *str, char sep) if (ptr == buf) return(NULL); else { - *ptr = NULL; + *ptr = '\0'; return(strdup(buf)); } } diff --git a/cde/lib/csa/match.c b/cde/lib/csa/match.c index 1b1dc77a1..805a90859 100644 --- a/cde/lib/csa/match.c +++ b/cde/lib/csa/match.c @@ -1134,15 +1134,15 @@ contain_substr(char *str1, char *str2) { int i, len; - if (str2 == NULL || *str2 == NULL) + if (str2 == NULL || *str2 == '\0') return (B_TRUE); - if (str1 == NULL || *str1 == NULL) { + if (str1 == NULL || *str1 == '\0') { return (B_FALSE); } else { len = strlen(str2); - for (i = 0; str1[i] != NULL; i++) { + for (i = 0; str1[i] != '\0'; i++) { if (strncasecmp(&str1[i], str2, len) == 0) return (B_TRUE); } diff --git a/cde/lib/csa/nametbl.c b/cde/lib/csa/nametbl.c index b06f4ef0d..2fd22f00d 100644 --- a/cde/lib/csa/nametbl.c +++ b/cde/lib/csa/nametbl.c @@ -120,7 +120,7 @@ _DtCm_add_name_to_table(_DtCmNameTable *tbl, int index, char *newname) return (CSA_E_INSUFFICIENT_MEMORY); } else { tbl->names = newptr; - memset((void *)&tbl->names[tbl->size+1], NULL, + memset((void *)&tbl->names[tbl->size+1], 0, sizeof(char *)*(index - tbl->size)); } } diff --git a/cde/lib/csa/reparser.y b/cde/lib/csa/reparser.y index 9044765e4..4c2a19a2d 100644 --- a/cde/lib/csa/reparser.y +++ b/cde/lib/csa/reparser.y @@ -435,12 +435,12 @@ occurrence : FIRSTWEEK endMarker endDate : /* empty */ { - $$ = NULL; + $$ = '\0'; } | DATE { if (_csa_iso8601_to_tick($1, &$$) == -1) - $$ = NULL; + $$ = '\0'; } ; diff --git a/cde/lib/csa/rpccalls.c b/cde/lib/csa/rpccalls.c index 30ac82e81..a4a7cd52f 100644 --- a/cde/lib/csa/rpccalls.c +++ b/cde/lib/csa/rpccalls.c @@ -226,7 +226,7 @@ _DtCm_rpc_create_calendar( /* check to make sure user is not creating a calendar * using another user's name */ - if (ptr = strchr(cal->name, '@')) *ptr = NULL; + if (ptr = strchr(cal->name, '@')) *ptr = '\0'; if (_DtCmIsUserName(cal->name) == B_TRUE) { if ((owner = _DtCmGetUserName()) == NULL) @@ -1412,7 +1412,7 @@ _GetV4UserAccess(Calendar *cal, cms_access_entry *alist) boolean_t isowner = B_FALSE; /* first check if user is owner */ - if (ptr = strchr(cal->name, '@')) *ptr = NULL; + if (ptr = strchr(cal->name, '@')) *ptr = '\0'; if (_DtCmIsUserName(cal->name) == B_TRUE) { if (strcmp(user, cal->name) == 0) { diff --git a/cde/lib/tt/lib/api/c/api_file.C b/cde/lib/tt/lib/api/c/api_file.C index 0608ed54a..643cc7fbd 100644 --- a/cde/lib/tt/lib/api/c/api_file.C +++ b/cde/lib/tt/lib/api/c/api_file.C @@ -416,7 +416,7 @@ extern "C" { } Tt_status -_ttds_file_server(const char *filename, char **hostname) +_ttds_file_server(const char *filename, const char **hostname) { _Tt_c_file_ptr file; _Tt_db_results dbresults; diff --git a/cde/lib/tt/lib/api/c/api_storage.C b/cde/lib/tt/lib/api/c/api_storage.C index 298394b7b..45d53e8b2 100644 --- a/cde/lib/tt/lib/api/c/api_storage.C +++ b/cde/lib/tt/lib/api/c/api_storage.C @@ -173,13 +173,13 @@ void _Tt_api_stg_stack_elm:: print(FILE *f) const { - (void)fprintf(f,"_Tt_api_stg_stack_elm at %lx <",this); + (void)fprintf(f,"_Tt_api_stg_stack_elm at %p <",this); switch (entry_type) { case STACK_MARK: - (void)fprintf(f,"mark %ld>\n",addr); + (void)fprintf(f,"mark %p>\n",addr); break; case STACK_STORAGE: - (void)fprintf(f,"addr 0x%lx>\n",(long)addr); + (void)fprintf(f,"addr 0x%p>\n",addr); break; } } diff --git a/cde/lib/tt/lib/api/dnd/ttdnd.c b/cde/lib/tt/lib/api/dnd/ttdnd.c index 256acb4f1..780028bfc 100644 --- a/cde/lib/tt/lib/api/dnd/ttdnd.c +++ b/cde/lib/tt/lib/api/dnd/ttdnd.c @@ -68,7 +68,6 @@ ttdnd_init( { int mark = tt_mark(); const char *t, **vt; - int validtypecount, i; if (tt_ptr_error(tt_open())>TT_WRN_LAST) { @@ -238,7 +237,6 @@ _ttdnd_get_contents_callback(m, p) Tt_message m; Tt_pattern p; { - int xid; int chunknumber; int maxchunk; char *type; diff --git a/cde/lib/tt/lib/db/db_server.h b/cde/lib/tt/lib/db/db_server.h index 6ac3e1d6b..cd3b67568 100644 --- a/cde/lib/tt/lib/db/db_server.h +++ b/cde/lib/tt/lib/db/db_server.h @@ -276,7 +276,7 @@ bool_t xdr_Tt_oidaccess_results(XDR*, _Tt_oidaccess_results*); struct _Tt_prop { struct { u_int propname_len; - char *propname_val; + const char *propname_val; } propname; long recnum; struct { diff --git a/cde/lib/tt/lib/db/db_server_clnt.C b/cde/lib/tt/lib/db/db_server_clnt.C index 2ba4c36ca..fe0320dd0 100644 --- a/cde/lib/tt/lib/db/db_server_clnt.C +++ b/cde/lib/tt/lib/db/db_server_clnt.C @@ -1138,7 +1138,7 @@ _tt_get_all_sessions_1(_tt_get_all_sessions_args *argp, CLIENT * clnt) { static _tt_get_all_sessions_results res; - clnt_stat result = clnt_call(clnt, TT_GET_ALL_SESSIONS, + clnt_call(clnt, TT_GET_ALL_SESSIONS, (xdrproc_t) xdr_tt_get_all_sessions_args, (caddr_t) argp, (xdrproc_t) xdr_tt_get_all_sessions_results, @@ -1153,7 +1153,7 @@ _tt_garbage_collect_1(void * /*NOTUSED*/, CLIENT *clnt) { static _tt_garbage_collect_results res; - clnt_stat result = clnt_call(clnt, TT_GARBAGE_COLLECT, + clnt_call(clnt, TT_GARBAGE_COLLECT, (xdrproc_t) xdr_void, (caddr_t) NULL, (xdrproc_t) xdr_tt_garbage_collect_results, (caddr_t) &res, @@ -1167,7 +1167,7 @@ _tt_delete_session_1(_tt_delete_session_args * args, CLIENT *clnt) { static _tt_delete_session_results res; - clnt_stat result = clnt_call(clnt, TT_DELETE_SESSION, + clnt_call(clnt, TT_DELETE_SESSION, (xdrproc_t) xdr_tt_delete_session_args, (caddr_t) args, (xdrproc_t) xdr_tt_delete_session_results, diff --git a/cde/lib/tt/lib/db/old_db_server_functions.C b/cde/lib/tt/lib/db/old_db_server_functions.C index 88a955623..795a88bb9 100644 --- a/cde/lib/tt/lib/db/old_db_server_functions.C +++ b/cde/lib/tt/lib/db/old_db_server_functions.C @@ -1523,7 +1523,7 @@ _tt_db_results *_tt_queue_message_1 (_tt_queue_msg_args *args, _tt_get_rpc_strings(args->ptypes, message_info->ptypes); // Get the XDR size of the new message info structure - u_int length; + u_int length = 0; if (!message_info->xdr((XDR *)xdrsz)) { results = TT_DB_ERR_ILLEGAL_MESSAGE; } diff --git a/cde/lib/tt/lib/db/tt_db_client.C b/cde/lib/tt/lib/db/tt_db_client.C index 5dfe91314..22e210f11 100644 --- a/cde/lib/tt/lib/db/tt_db_client.C +++ b/cde/lib/tt/lib/db/tt_db_client.C @@ -1247,7 +1247,6 @@ _Tt_db_client::dequeueMessages (const _Tt_string &file, const _Tt_string_list_ptr &ptypes, _Tt_message_list_ptr &messages) { - _Tt_db_results retval; _tt_dequeue_msgs_args args; args.file = (char *)file; @@ -1265,7 +1264,6 @@ _Tt_db_client::dequeueMessages (const _Tt_string &file, } _tt_get_rpc_messages(results->messages, messages); - retval = results->results; if (dbVersion==1) { _tt_free_rpc_messages(results->messages); } else { diff --git a/cde/lib/tt/lib/db/tt_db_file.C b/cde/lib/tt/lib/db/tt_db_file.C index 15e452510..f3124f9f6 100644 --- a/cde/lib/tt/lib/db/tt_db_file.C +++ b/cde/lib/tt/lib/db/tt_db_file.C @@ -562,7 +562,7 @@ _Tt_string _Tt_db_file::getNetworkPath (const _Tt_string &file) _Tt_string hostname; _Tt_string partition; - _Tt_db_results results = _tt_db_network_path(file, + _tt_db_network_path(file, local_path, hostname, partition, diff --git a/cde/lib/tt/lib/db/tt_db_key.C b/cde/lib/tt/lib/db/tt_db_key.C index 5d5e8ff9a..5d9de8103 100644 --- a/cde/lib/tt/lib/db/tt_db_key.C +++ b/cde/lib/tt/lib/db/tt_db_key.C @@ -44,7 +44,7 @@ _Tt_db_key::_Tt_db_key (short version_number) { - static long last_time_sec = 0; + static unsigned int last_time_sec = 0; static long counter = 0; key.version = version_number; diff --git a/cde/lib/tt/lib/db/tt_db_rpc_message_routines.C b/cde/lib/tt/lib/db/tt_db_rpc_message_routines.C index dde12b40a..2f1e880d4 100644 --- a/cde/lib/tt/lib/db/tt_db_rpc_message_routines.C +++ b/cde/lib/tt/lib/db/tt_db_rpc_message_routines.C @@ -82,7 +82,7 @@ _tt_get_rpc_messages (const _tt_message_list &rpc_messages, if (rpc_messages.messages_len) { messages = new _Tt_message_list; - for (int i=0; i < rpc_messages.messages_len; i++) { + for (unsigned int i=0; i < rpc_messages.messages_len; i++) { _Tt_message_ptr message_ptr; _tt_get_rpc_message(rpc_messages.messages_val [i], diff --git a/cde/lib/tt/lib/db/tt_db_rpc_routines.C b/cde/lib/tt/lib/db/tt_db_rpc_routines.C index db4a81618..a7aa823b3 100644 --- a/cde/lib/tt/lib/db/tt_db_rpc_routines.C +++ b/cde/lib/tt/lib/db/tt_db_rpc_routines.C @@ -73,7 +73,7 @@ void _tt_free_rpc_message (const _tt_message &rpc_message) void _tt_free_rpc_messages (const _tt_message_list &rpc_messages) { if (rpc_messages.messages_val) { - for (int i=0; i < rpc_messages.messages_len; i++) { + for (unsigned int i=0; i < rpc_messages.messages_len; i++) { _tt_free_rpc_message(rpc_messages.messages_val [i]); } @@ -84,7 +84,7 @@ void _tt_free_rpc_messages (const _tt_message_list &rpc_messages) void _tt_free_rpc_strings (const _tt_string_list &rpc_strings) { if (rpc_strings.values_val) { - for (int i=0; i < rpc_strings.values_len; i++) { + for (unsigned int i=0; i < rpc_strings.values_len; i++) { if (rpc_strings.values_val [i].value) { free(rpc_strings.values_val [i].value); } @@ -101,7 +101,7 @@ void _tt_free_rpc_property (const _tt_property &rpc_prop) } if (rpc_prop.values.values_val) { - for (int i=0; i < rpc_prop.values.values_len; i++) { + for (unsigned int i=0; i < rpc_prop.values.values_len; i++) { if (rpc_prop.values.values_val [i].value.value_val) { free(rpc_prop.values.values_val [i].value.value_val); } @@ -114,7 +114,7 @@ void _tt_free_rpc_property (const _tt_property &rpc_prop) void _tt_free_rpc_properties (const _tt_property_list &rpc_props) { if (rpc_props.properties_val) { - for (int i=0; i < rpc_props.properties_len; i++) { + for (unsigned int i=0; i < rpc_props.properties_len; i++) { _tt_free_rpc_property(rpc_props.properties_val [i]); } @@ -137,7 +137,7 @@ void _tt_get_rpc_strings (const _tt_string_list &rpc_strings, strings = new _Tt_string_list; if (rpc_strings.values_len) { - for (int i=0; i < rpc_strings.values_len; i++) { + for (unsigned int i=0; i < rpc_strings.values_len; i++) { (void)strings->append(_Tt_string(rpc_strings.values_val [i].value)); } } @@ -151,7 +151,7 @@ void _tt_get_rpc_property (const _tt_property &rpc_prop, if (rpc_prop.name) { prop->name = rpc_prop.name; - for (int i=0; i < rpc_prop.values.values_len; i++) { + for (unsigned int i=0; i < rpc_prop.values.values_len; i++) { int prop_value_length = rpc_prop.values.values_val [i].value.value_len; if (prop_value_length) { _Tt_string prop_value(prop_value_length); @@ -171,7 +171,7 @@ void _tt_get_rpc_properties (const _tt_property_list &rpc_props, props = new _Tt_db_property_list; if (rpc_props.properties_len) { - for (int i=0; i < rpc_props.properties_len; i++) { + for (unsigned int i=0; i < rpc_props.properties_len; i++) { _Tt_db_property_ptr prop; _tt_get_rpc_property (rpc_props.properties_val [i], prop); diff --git a/cde/lib/tt/lib/mp/mp_auth.C b/cde/lib/tt/lib/mp/mp_auth.C index 24ba925ce..458d57eb5 100644 --- a/cde/lib/tt/lib/mp/mp_auth.C +++ b/cde/lib/tt/lib/mp/mp_auth.C @@ -57,7 +57,7 @@ _Tt_auth:: Tt_status _Tt_auth:: generate_auth_cookie() { - static char *funcname = "_Tt_auth::make_auth_cookie()"; + static const char *funcname = "_Tt_auth::make_auth_cookie()"; _tt_AuthFileEntry *entry; int exists; char *filename; @@ -79,7 +79,7 @@ generate_auth_cookie() _TT_ICEAUTH_DEFAULT_RETRIES, _TT_ICEAUTH_DEFAULT_TIMEOUT, _TT_ICEAUTH_DEFAULT_DEADTIME))) { - char *reason = "unknown error"; + const char *reason = "unknown error"; _tt_UnlockAuthFile(filename); if (retval == _tt_AuthLockTimeout) { @@ -151,7 +151,7 @@ cleanup: Tt_status _Tt_auth:: read_auth_entries(FILE *fp, _tt_AuthFileEntryList **headp) { - static char *funcname = "_Tt_auth::read_auth_entries()"; + static const char *funcname = "_Tt_auth::read_auth_entries()"; _tt_AuthFileEntry *entry; _tt_AuthFileEntryList *head; _tt_AuthFileEntryList *el_new; @@ -189,7 +189,7 @@ read_auth_entries(FILE *fp, _tt_AuthFileEntryList **headp) Tt_status _Tt_auth:: read_auth_file(char *filename) { - static char *funcname = "Tt_auth::read_auth_file()"; + static const char *funcname = "Tt_auth::read_auth_file()"; FILE *authfp; Tt_status status = TT_OK; @@ -213,7 +213,7 @@ read_auth_file(char *filename) Tt_status _Tt_auth:: modify_auth_entry(_tt_AuthFileEntry *entry, _tt_AuthFileEntryList **headp) { - static char *funcname = "Tt_auth::modify_auth_entry()"; + static const char *funcname = "Tt_auth::modify_auth_entry()"; _tt_AuthFileEntryList *list, *prev, *el_new; for (prev=NULL, list=*headp; list; list=list->next) { @@ -253,8 +253,8 @@ modify_auth_entry(_tt_AuthFileEntry *entry, _tt_AuthFileEntryList **headp) Tt_status _Tt_auth:: write_auth_file(char *filename) { - static char *funcname = "Tt_auth::write_auth_file()"; - static char *suffix = "-n"; + static const char *funcname = "Tt_auth::write_auth_file()"; + static const char *suffix = "-n"; FILE *fp; _tt_AuthFileEntryList *list; char *tmpnam; @@ -300,7 +300,7 @@ retrieve_auth_cookie() _tt_AuthFileEntry *entry = NULL; entry = _tt_GetAuthFileEntry(_TT_ICEAUTH_PROTOCOL_NAME, - (char*) _sessionid, + _sessionid, _TT_ICEAUTH_AUTH_NAME); if (NULL == entry) return TT_AUTHFILE_ENTRY_MISSING; diff --git a/cde/lib/tt/lib/mp/mp_auth_functions.C b/cde/lib/tt/lib/mp/mp_auth_functions.C index 3e47e1322..22f447375 100644 --- a/cde/lib/tt/lib/mp/mp_auth_functions.C +++ b/cde/lib/tt/lib/mp/mp_auth_functions.C @@ -340,7 +340,7 @@ _tt_WriteAuthFileEntry(FILE *auth_file, _tt_AuthFileEntry *auth) _tt_AuthFileEntry * -_tt_GetAuthFileEntry(char *protocol_name, char *network_id, char *auth_name) +_tt_GetAuthFileEntry(const char *protocol_name, const char *network_id, const char *auth_name) { FILE *auth_file; char *filename; diff --git a/cde/lib/tt/lib/mp/mp_auth_functions.h b/cde/lib/tt/lib/mp/mp_auth_functions.h index 47f34bbe7..020c463b8 100644 --- a/cde/lib/tt/lib/mp/mp_auth_functions.h +++ b/cde/lib/tt/lib/mp/mp_auth_functions.h @@ -126,9 +126,9 @@ extern int _tt_WriteAuthFileEntry ( ); extern _tt_AuthFileEntry *_tt_GetAuthFileEntry ( - char * /* protocol_name */, - char * /* network_id */, - char * /* auth_name */ + const char * /* protocol_name */, + const char * /* network_id */, + const char * /* auth_name */ ); extern char *_tt_GenerateMagicCookie ( diff --git a/cde/lib/tt/lib/mp/mp_c_procid.C b/cde/lib/tt/lib/mp/mp_c_procid.C index 92b3a0589..7c7561ac8 100644 --- a/cde/lib/tt/lib/mp/mp_c_procid.C +++ b/cde/lib/tt/lib/mp/mp_c_procid.C @@ -340,7 +340,6 @@ commit() Tt_status _Tt_c_procid:: init() { - int rpc_version = TT_RPC_VERSION; Tt_status status; if (_default_session.is_null()) { diff --git a/cde/lib/tt/lib/mp/mp_c_session.C b/cde/lib/tt/lib/mp/mp_c_session.C index 78a375325..3cab78a0b 100644 --- a/cde/lib/tt/lib/mp/mp_c_session.C +++ b/cde/lib/tt/lib/mp/mp_c_session.C @@ -79,7 +79,6 @@ c_init() { _Tt_string start_ttcmd; int tried = 0; - int done = 0; Tt_status status; if (env() == _TT_ENV_X11) { diff --git a/cde/lib/tt/lib/mp/mp_pattern.C b/cde/lib/tt/lib/mp/mp_pattern.C index dc89c1513..2ed3e9db8 100644 --- a/cde/lib/tt/lib/mp/mp_pattern.C +++ b/cde/lib/tt/lib/mp/mp_pattern.C @@ -222,7 +222,6 @@ _Tt_pattern::add_netfile( ) { _Tt_string abspath; - Tt_status status = TT_OK; int __scopes = scopes(); if ((__scopes&(1<xdisplayname; + } + _server_num = svnum; _env = _TT_ENV_X11; break; diff --git a/cde/lib/tt/lib/tttk/ttdesktop.C b/cde/lib/tt/lib/tttk/ttdesktop.C index 3650d4ccb..6a38af263 100644 --- a/cde/lib/tt/lib/tttk/ttdesktop.C +++ b/cde/lib/tt/lib/tttk/ttdesktop.C @@ -1659,7 +1659,9 @@ _ttdt_posix_cb( char *categoryName, *variable, *value; int category, i; struct utsname names; +#if defined(OPT_SYSINFO) char buf[ SYS_NMLN ]; +#endif case TTDT_SET_LOCALE: return _ttDtGetLocaleCB( msg, pat, (void *)_ttDtApplyLocale, 0 ); case TTDT_GET_LOCALE: diff --git a/cde/lib/tt/lib/tttk/tttk2free.C b/cde/lib/tt/lib/tttk/tttk2free.C index e9a54a93e..0ecde10c3 100644 --- a/cde/lib/tt/lib/tttk/tttk2free.C +++ b/cde/lib/tt/lib/tttk/tttk2free.C @@ -127,7 +127,7 @@ _TttkList2Free::_TttkList2Free( if (_items == 0) { _max = 0; } - for (int i = 0; i < _max; i++) { + for (unsigned int i = 0; i < _max; i++) { _items[ i ] = new _TttkItem2Free(); if (_items[ i ] == 0) { _destruct(); @@ -188,7 +188,7 @@ _TttkList2Free::operator +=( void _TttkList2Free::flush() { - for (int i = 0; i < _num; i++) { + for (unsigned int i = 0; i < _num; i++) { _item( i ) = (caddr_t)0; } } @@ -200,7 +200,7 @@ _TttkList2Free::_destruct() #ifdef OPT_VECNEW delete [] _items; #else - for (int i = 0; i < _max; i++) { + for (unsigned int i = 0; i < _max; i++) { if (_items[ i ] != 0) { delete _items[ i ]; _items[ i ] = 0; diff --git a/cde/lib/tt/lib/util/tt_audit.C b/cde/lib/tt/lib/util/tt_audit.C index e850939d6..426ba42eb 100644 --- a/cde/lib/tt/lib/util/tt_audit.C +++ b/cde/lib/tt/lib/util/tt_audit.C @@ -63,10 +63,11 @@ void *_tt_error_pointer(Tt_status s); // loop iteration. All this in the name of coding efficiency. // Tt_status _Tt_audit:: -entry(char *argskey, _Tt_entry_pt func, ...) +entry(const char *argskey, _Tt_entry_pt func, ...) { va_list ap; - char c, *preview, *cp; + char c, *cp; + const char *preview; int num_args = strlen(argskey); Tt_message m; _Tt_c_message_ptr msg; diff --git a/cde/lib/tt/lib/util/tt_audit.h b/cde/lib/tt/lib/util/tt_audit.h index a195206e8..cb747cb55 100644 --- a/cde/lib/tt/lib/util/tt_audit.h +++ b/cde/lib/tt/lib/util/tt_audit.h @@ -40,6 +40,6 @@ class _Tt_audit: public _Tt_trace { public: - Tt_status entry(char *argskey, _Tt_entry_pt func, ...); + Tt_status entry(const char *argskey, _Tt_entry_pt func, ...); }; #endif /* TT_AUDIT_H */ diff --git a/cde/lib/tt/lib/util/tt_enumname.C b/cde/lib/tt/lib/util/tt_enumname.C index b8aac1d70..1ba183f51 100644 --- a/cde/lib/tt/lib/util/tt_enumname.C +++ b/cde/lib/tt/lib/util/tt_enumname.C @@ -286,7 +286,7 @@ const char * _tt_enumname(Tt_feature x) { switch (x) { TTC(TT_FEATURE_MULTITHREADED); - case TT_STATE_LAST: + case _TT_FEATURE_LAST: default: return "! Tt_feature"; } diff --git a/cde/lib/tt/lib/util/tt_host.C b/cde/lib/tt/lib/util/tt_host.C index 5590c8fb7..60e80512b 100644 --- a/cde/lib/tt/lib/util/tt_host.C +++ b/cde/lib/tt/lib/util/tt_host.C @@ -177,7 +177,7 @@ init_bystringaddr(_Tt_string addr) ip_address = &ip_address_buf; *ip_address = inet_addr((char *)addr); - if (*ip_address == -1) { + if (*ip_address == INADDR_NONE) { return(0); } diff --git a/cde/lib/tt/lib/util/tt_host_equiv.C b/cde/lib/tt/lib/util/tt_host_equiv.C index dec527bc0..978a92d4d 100644 --- a/cde/lib/tt/lib/util/tt_host_equiv.C +++ b/cde/lib/tt/lib/util/tt_host_equiv.C @@ -307,7 +307,6 @@ _cache_it(_Tt_hostname_cache_ptr cache_ptr, _Tt_string & hostname) _Tt_hostname_cache_ptr sh, lh; struct hostent *host_ret; _Xgethostbynameparams host_buf; - int failed = 0; char **h_addr_list; diff --git a/cde/lib/tt/lib/util/tt_trace.C b/cde/lib/tt/lib/util/tt_trace.C index 2fb9c0424..816b8cd36 100644 --- a/cde/lib/tt/lib/util/tt_trace.C +++ b/cde/lib/tt/lib/util/tt_trace.C @@ -271,7 +271,7 @@ _Tt_trace::entry( (*_pstream)->set_is_entered(0); } - const char *s; + const char *s = 0; int printmsg = 1; // // We do not print msg if it is a (often incomplete) update @@ -347,7 +347,7 @@ _Tt_trace::entry( // void _Tt_trace::entry( - char *argskey, + const char *argskey, _Tt_entry_pt func, va_list ap ) @@ -373,7 +373,8 @@ _Tt_trace::entry( (*_pstream)->set_is_entered(0); } - char c, *preview; + char c; + const char *preview; int num_args = strlen(argskey); // print the API name and open paren diff --git a/cde/lib/tt/lib/util/tt_trace.h b/cde/lib/tt/lib/util/tt_trace.h index 4b1380189..2a049e95b 100644 --- a/cde/lib/tt/lib/util/tt_trace.h +++ b/cde/lib/tt/lib/util/tt_trace.h @@ -130,7 +130,7 @@ class _Tt_trace : public _Tt_allocated { // API tracing entry call void entry( - char *argskey, + const char *argskey, _Tt_entry_pt func, va_list ap ); diff --git a/cde/lib/tt/lib/util/tt_trace_stream.C b/cde/lib/tt/lib/util/tt_trace_stream.C index 72aed923e..fefc45ef9 100644 --- a/cde/lib/tt/lib/util/tt_trace_stream.C +++ b/cde/lib/tt/lib/util/tt_trace_stream.C @@ -138,7 +138,7 @@ operator <<( os << _tt_enumname( msg.message_class() ); os << " <" << msg.api_id() << "> "; os << _tt_enumname( msg.state() ); - char *conjunction = " because "; + const char *conjunction = " because "; switch (msg.state()) { case TT_CREATED: case TT_SENT: diff --git a/cde/lib/tt/lib/util/tt_xdr_utils.C b/cde/lib/tt/lib/util/tt_xdr_utils.C index 833c1193f..d43f9d9e9 100644 --- a/cde/lib/tt/lib/util/tt_xdr_utils.C +++ b/cde/lib/tt/lib/util/tt_xdr_utils.C @@ -129,7 +129,7 @@ _tt_xdr_sizeof(xdrproc_t f, void *data) _Tt_xdr_size_stream:: _Tt_xdr_size_stream() { - memset ((char *)&ops, 0, sizeof ops); + memset (&ops, 0, sizeof ops); #if defined(OPT_BUG_SUNOS_4) || defined(OPT_BUG_HPUX) ops.x_putlong = (int (*)(...))tt_x_putlong; ops.x_putbytes = (int (*)(...))tt_x_putbytes; diff --git a/cde/programs/Imakefile b/cde/programs/Imakefile index ca66a8bc6..f6b18353c 100644 --- a/cde/programs/Imakefile +++ b/cde/programs/Imakefile @@ -12,9 +12,12 @@ EXTRADIRS += util XCOMM some of these cannot be built on linux yet. XCOMM dtksh dtinfo -#if defined(LinuxArchitecture) || defined(OpenBSDArchitecture) || defined(FreeBSDArchitecture) +#if defined(LinuxArchitecture) || defined(OpenBSDArchitecture) DTKSHDIR = DTINFODIR = +#elif defined(FreeBSDArchitecture) +DTKSHDIR = dtksh +DTINFODIR = #else DTKSHDIR = dtksh DTINFODIR = dtinfo diff --git a/cde/programs/dtappbuilder/src/ab/abobj_layout.c b/cde/programs/dtappbuilder/src/ab/abobj_layout.c index c4c2daa46..45a95bb2c 100644 --- a/cde/programs/dtappbuilder/src/ab/abobj_layout.c +++ b/cde/programs/dtappbuilder/src/ab/abobj_layout.c @@ -110,7 +110,7 @@ abobj_calculate_new_layout( Position x, y; Dimension width, height; Dimension p_width, p_height; - int gridpos; + long gridpos; if ((attachments = obj->attachments) == NULL) return -1; diff --git a/cde/programs/dtappbuilder/src/ab/attch_ed_stubs.c b/cde/programs/dtappbuilder/src/ab/attch_ed_stubs.c index 41d18ef52..bbea9ccf2 100644 --- a/cde/programs/dtappbuilder/src/ab/attch_ed_stubs.c +++ b/cde/programs/dtappbuilder/src/ab/attch_ed_stubs.c @@ -258,7 +258,7 @@ static void set_attach_values( PropOptionsSetting objlist_setting, int offset_value, int position_value, - int objlist_value + XtPointer objlist_value ); static void change_attach_type( @@ -2642,7 +2642,7 @@ set_attach_values( PropOptionsSetting objlist_setting, int offset_value, int position_value, - int objlist_value + XtPointer objlist_value ) { switch (attach_type) @@ -2945,7 +2945,7 @@ convert_offset_position( /* set_attach_values(attach_type, offset_setting, position_setting, objlist_setting, - offset_value, position_value, (int)sibling_obj); + offset_value, position_value, (XtPointer)sibling_obj); */ *ret_offset = offset_value; @@ -3068,7 +3068,7 @@ change_attach_type( */ set_attach_values(attach_type, offset_setting, position_setting, objlist_setting, - offset, position, (int)attach_obj); + offset, position, (XtPointer)attach_obj); } @@ -3263,7 +3263,7 @@ change_opp_attach_type( */ set_attach_values(opp_attach_type, opp_offset_setting, opp_position_setting, opp_objlist_setting, - offset, position, (int)attach_obj); + offset, position, (XtPointer)attach_obj); } } @@ -3335,7 +3335,7 @@ attach_obj_changed( &offset, &position); set_attach_values(attach_type, offset_setting, position_setting, objlist_setting, - offset, position, (int)attach_obj); + offset, position, (XtPointer)attach_obj); } } diff --git a/cde/programs/dtappbuilder/src/ab/connP.h b/cde/programs/dtappbuilder/src/ab/connP.h index aa3f35120..e63db24bc 100644 --- a/cde/programs/dtappbuilder/src/ab/connP.h +++ b/cde/programs/dtappbuilder/src/ab/connP.h @@ -108,7 +108,7 @@ extern char ** connP_get_when_labels( extern char ** connP_get_act_labels( int *num_labels ); -extern int connP_get_obj_type_index( +extern long connP_get_obj_type_index( AB_OBJECT_TYPE ab_type, int ab_subtype ); @@ -181,7 +181,7 @@ extern int connP_objtype_needs_subtype( AB_OBJECT_TYPE obj_type, int obj_subtype ); -extern int connP_obj_enabled( +extern long connP_obj_enabled( AB_OBJECT_TYPE obj_type, int obj_subtype ); diff --git a/cde/programs/dtappbuilder/src/ab/conn_obj.c b/cde/programs/dtappbuilder/src/ab/conn_obj.c index a4fe7e601..78751a1a1 100644 --- a/cde/programs/dtappbuilder/src/ab/conn_obj.c +++ b/cde/programs/dtappbuilder/src/ab/conn_obj.c @@ -926,7 +926,7 @@ connP_make_conn_string( ) { register int i; - int si; + long si; static char conn_string[BUFSIZ]; char buf[BUFSIZ]; AB_ACTION_INFO *action_info; @@ -1041,13 +1041,13 @@ connP_make_conn_string( return(conn_string); } -extern int +extern long connP_get_obj_type_index( AB_OBJECT_TYPE ab_type, int ab_subtype ) { - register int i; + register long i; if (connP_objtype_needs_subtype(ab_type, ab_subtype)) { @@ -1093,8 +1093,8 @@ connP_guess_when_action( AB_BUILTIN_ACTION *act_ret ) { - int i = connP_get_obj_type_index(source_type, source_subtype); - int j = connP_get_obj_type_index(target_type, target_subtype); + long i = connP_get_obj_type_index(source_type, source_subtype); + long j = connP_get_obj_type_index(target_type, target_subtype); if (ConnP_conn_objs[i].when_list != NULL) *when_ret = ConnP_conn_objs[i].default_when; @@ -1197,7 +1197,7 @@ assign_when_list( int source_subtype ) { - int i; + long i; int n; ConnObj *src_conn_obj; @@ -1232,7 +1232,7 @@ assign_action_list( int target_subtype ) { - int i; + long i; int n; ConnObj *trg_conn_obj; @@ -1286,7 +1286,7 @@ connP_objtype_needs_subtype( return(0); } -extern int +extern long connP_obj_enabled( AB_OBJECT_TYPE obj_type, int obj_subtype diff --git a/cde/programs/dtappbuilder/src/ab/conn_stubs.c b/cde/programs/dtappbuilder/src/ab/conn_stubs.c index 26a491876..e1b82e617 100644 --- a/cde/programs/dtappbuilder/src/ab/conn_stubs.c +++ b/cde/programs/dtappbuilder/src/ab/conn_stubs.c @@ -129,7 +129,7 @@ static Widget exec_code_dialog = NULL; static Widget exec_code_textpane = NULL; static Widget ConnP_view_source_obj = NULL; /* View:'s "Source Object" PushButton */ -static int ConnP_view_filter = -1; +static long ConnP_view_filter = -1; static STRING CodeFragBuf = NULL; static STRING action_type_labels[ACTION_TYPE_NUM_VALUES]; @@ -496,7 +496,7 @@ populate_view_menu( XtPointer call_data ) { - int i; + long i; Widget w; @@ -526,7 +526,7 @@ setup_source( ABObj source ) { - int i = connP_get_obj_type_index(source_type, source_subtype); + long i = connP_get_obj_type_index(source_type, source_subtype); if (i < 0) return; @@ -544,7 +544,7 @@ setup_target( ABObj target ) { - int i = connP_get_obj_type_index(target_type, target_subtype); + long i = connP_get_obj_type_index(target_type, target_subtype); if (i < 0) return; @@ -949,9 +949,9 @@ set_view_filter( XtPointer call_data ) { - if (ConnP_view_filter != (int)client_data) + if (ConnP_view_filter != (long)client_data) { - ConnP_view_filter = (int)client_data; + ConnP_view_filter = (long)client_data; populate_connection_list(NULL); } } @@ -1551,7 +1551,7 @@ set_standard_action_type( ) { XmString xm_label_str; - int i = 0; + long i = 0; BOOL found = FALSE; connP_set_action_type(AB_FUNC_BUILTIN); @@ -3832,7 +3832,7 @@ update_conn_ed_controls(void) int source_subtype = -1; AB_OBJECT_TYPE target_type = AB_TYPE_UNDEF; int target_subtype = -1; - int i = -1, j = -1; + long i = -1, j = -1; source_type = connP_get_source_type(); source_subtype = connP_get_source_subtype(); diff --git a/cde/programs/dtappbuilder/src/ab/message_ed_stubs.c b/cde/programs/dtappbuilder/src/ab/message_ed_stubs.c index a2c8faef2..c3501bc1b 100644 --- a/cde/programs/dtappbuilder/src/ab/message_ed_stubs.c +++ b/cde/programs/dtappbuilder/src/ab/message_ed_stubs.c @@ -877,7 +877,7 @@ typeCB( } /* Set the default button to be Action1 */ - if ((int)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION1) + if ((XtPointer)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION1) { prop_options_set_value(&(mes->default_btn), (XtPointer)AB_DEFAULT_BTN_ACTION1, True); @@ -928,7 +928,7 @@ typeCB( } /* Set the default button to be Cancel */ - if ((int)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_CANCEL) + if ((XtPointer)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_CANCEL) { prop_options_set_value(&(mes->default_btn), (XtPointer)AB_DEFAULT_BTN_CANCEL, True); @@ -979,7 +979,7 @@ typeCB( } /* Set the default button to be Action2 */ - if ((int)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION2) + if ((XtPointer)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION2) { prop_options_set_value(&(mes->default_btn), (XtPointer)AB_DEFAULT_BTN_ACTION2, True); @@ -1031,7 +1031,7 @@ typeCB( } /* Set the default button to be Action1 */ - if ((int)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION1) + if ((XtPointer)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION1) { prop_options_set_value(&(mes->default_btn), (XtPointer)AB_DEFAULT_BTN_ACTION1, True); @@ -1079,7 +1079,7 @@ typeCB( } /* Set the default button to be Action1 */ - if ((int)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION1) + if ((XtPointer)prop_options_get_value(&(mes->default_btn)) != AB_DEFAULT_BTN_ACTION1) { prop_options_set_value(&(mes->default_btn), (XtPointer)AB_DEFAULT_BTN_ACTION1, True); diff --git a/cde/programs/dtappbuilder/src/abmf/abmf.c b/cde/programs/dtappbuilder/src/abmf/abmf.c index 2cf4877f4..a6025c194 100644 --- a/cde/programs/dtappbuilder/src/abmf/abmf.c +++ b/cde/programs/dtappbuilder/src/abmf/abmf.c @@ -174,6 +174,7 @@ nl_catd Dtb_project_catd; /* ARGSUSED */ +int main(int argc, STRING *argv) { int exitValue = 0; @@ -939,7 +940,7 @@ mark_modules_to_load_and_write( { fileName = strlist_get_str(fileNames, i, &wasFoundVoidPtr); assert(fileName != NULL); - wasFound = (BOOL)(unsigned)wasFoundVoidPtr; + wasFound = (BOOL)(unsigned long)wasFoundVoidPtr; if (!wasFound) { util_printf_err("module not found in project: %s\n", fileName); diff --git a/cde/programs/dtappbuilder/src/abmf/abmfP.h b/cde/programs/dtappbuilder/src/abmf/abmfP.h index dbaf0ab65..bc1facf38 100644 --- a/cde/programs/dtappbuilder/src/abmf/abmfP.h +++ b/cde/programs/dtappbuilder/src/abmf/abmfP.h @@ -162,7 +162,7 @@ typedef CGenAnyData CGenData; #define mfobj_set_proj_data(_obj,_data) \ ( mfobj_set_flags(_obj, CGenFlagDataIsProj), \ - ((int)(mfobj_data(_obj)->info.proj = (_data))) \ + ((long)(mfobj_data(_obj)->info.proj = (_data))) \ ) #define mfobj_get_proj_data(obj) \ diff --git a/cde/programs/dtappbuilder/src/abmf/args.c b/cde/programs/dtappbuilder/src/abmf/args.c index 3b3c5ee09..23d09fbde 100644 --- a/cde/programs/dtappbuilder/src/abmf/args.c +++ b/cde/programs/dtappbuilder/src/abmf/args.c @@ -1485,7 +1485,7 @@ get_wclass_and_res_value( BOOL foundEm = FALSE; *wClassOut = NULL; - *resValueOut = NULL; + *resValueOut = 0; if (wClass == NULL) { diff --git a/cde/programs/dtappbuilder/src/abmf/connect.c b/cde/programs/dtappbuilder/src/abmf/connect.c index f53758adf..c33e43b29 100644 --- a/cde/programs/dtappbuilder/src/abmf/connect.c +++ b/cde/programs/dtappbuilder/src/abmf/connect.c @@ -205,7 +205,7 @@ abmfP_get_connect_includes(StringList includeFiles, ABObj projOrModule) assert(project != NULL); if (project == NULL) { - return NULL; + return 0; } for (trav_open(&trav, projOrModule, AB_TRAV_ACTIONS_FOR_OBJ); diff --git a/cde/programs/dtappbuilder/src/abmf/stubs_c_file.c b/cde/programs/dtappbuilder/src/abmf/stubs_c_file.c index 6440a7642..047054337 100644 --- a/cde/programs/dtappbuilder/src/abmf/stubs_c_file.c +++ b/cde/programs/dtappbuilder/src/abmf/stubs_c_file.c @@ -282,7 +282,7 @@ printf_setval(GenCodeInfo genCodeInfo, ABObj obj, ...) #if defined(__osf__) || defined(linux) || defined(CSRG_BASED) /* OSF/1 define va_list in as structure of char ** and int * Sun define va_list as void * */ - va_list paramList = { NULL, 0 }; + va_list paramList = { 0, 0 }; #else va_list paramList = NULL; #endif /* __osf__ */ diff --git a/cde/programs/dtappbuilder/src/libABil/abuil_load.c b/cde/programs/dtappbuilder/src/libABil/abuil_load.c index 6dc59ea6a..bed2474a4 100644 --- a/cde/programs/dtappbuilder/src/libABil/abuil_load.c +++ b/cde/programs/dtappbuilder/src/libABil/abuil_load.c @@ -605,7 +605,7 @@ widget_into_module( /* * Store ABObj reference in uil widget node */ - uil_widget->header.user_data = (int)ab_widget; + uil_widget->header.user_data = (long)ab_widget; /* * Populate arguments and callbacks @@ -630,7 +630,7 @@ widget_into_module( /* * Store ABObj reference in uil widget node */ - uil_widget->header.user_data = (int)ab_widget; + uil_widget->header.user_data = (long)ab_widget; } diff --git a/cde/programs/dtappbuilder/src/libABil/abuil_resource_attr_map.c b/cde/programs/dtappbuilder/src/libABil/abuil_resource_attr_map.c index 91324a895..b21be9dfb 100644 --- a/cde/programs/dtappbuilder/src/libABil/abuil_resource_attr_map.c +++ b/cde/programs/dtappbuilder/src/libABil/abuil_resource_attr_map.c @@ -3355,7 +3355,7 @@ attach_context_store( AttachmentContext *attach_context = (AttachmentContext *)context; STRING attach_str; AB_ATTACH_TYPE att_type; - int att_pos = 0, att_off = 0, offset = 0; + long att_pos = 0, att_off = 0, offset = 0; void *value = NULL; BOOL need_val = TRUE; ObjRef *obj_ref; @@ -3480,7 +3480,7 @@ val_set_rows_proc( XtPointer res_value ) { - if(obj_set_num_rows(obj,(int)res_value)) return(FALSE); + if(obj_set_num_rows(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3492,7 +3492,7 @@ val_set_columns_proc( XtPointer res_value ) { - if(obj_set_num_columns(obj,(int)res_value)) return(FALSE); + if(obj_set_num_columns(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3504,7 +3504,7 @@ val_set_maximum_proc( XtPointer res_value ) { - if(obj_set_max_value(obj,(int)res_value)) return(FALSE); + if(obj_set_max_value(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3516,7 +3516,7 @@ val_set_minimum_proc( XtPointer res_value ) { - if(obj_set_min_value(obj,(int)res_value)) return(FALSE); + if(obj_set_min_value(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3528,7 +3528,7 @@ val_set_numcols_proc( XtPointer res_value ) { - if(obj_set_num_columns(obj,(int)res_value)) return(FALSE); + if(obj_set_num_columns(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3697,7 +3697,7 @@ val_set_maxlen_proc( XtPointer res_value ) { - if(obj_set_max_length(obj,(int)res_value)) return(FALSE); + if(obj_set_max_length(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3709,7 +3709,7 @@ val_set_panemax_proc( XtPointer res_value ) { - if(obj_set_pane_max(obj,(int)res_value)) return(FALSE); + if(obj_set_pane_max(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3721,7 +3721,7 @@ val_set_panemin_proc( XtPointer res_value ) { - if(obj_set_pane_min(obj,(int)res_value)) return(FALSE); + if(obj_set_pane_min(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3733,7 +3733,7 @@ val_set_intvalue_proc( XtPointer res_value ) { - if(obj_set_initial_value_int(obj,(int)res_value)) return(FALSE); + if(obj_set_initial_value_int(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3757,7 +3757,7 @@ val_set_increment_proc( XtPointer res_value ) { - if(obj_set_increment(obj,(int)res_value)) return(FALSE); + if(obj_set_increment(obj,(long)res_value)) return(FALSE); else return(TRUE); } @@ -3769,7 +3769,7 @@ val_set_decpts_proc( XtPointer res_value ) { - if(obj_set_decimal_points(obj,(int)res_value)) return(FALSE); + if(obj_set_decimal_points(obj,(long)res_value)) return(FALSE); else return(TRUE); } diff --git a/cde/programs/dtappbuilder/src/libABil/abuil_trav.c b/cde/programs/dtappbuilder/src/libABil/abuil_trav.c index 41c474d1a..accdc4543 100644 --- a/cde/programs/dtappbuilder/src/libABil/abuil_trav.c +++ b/cde/programs/dtappbuilder/src/libABil/abuil_trav.c @@ -826,7 +826,7 @@ common_special_type: get_charset_text(az_value_entry->b_charset)); else printf(" font charset: userdefined(%x)", - get_charset_text((int) az_value_entry->az_charset_value)); + get_charset_text((long) az_value_entry->az_charset_value)); goto check_for_table_value; diff --git a/cde/programs/dtappbuilder/src/libABil/bil.c b/cde/programs/dtappbuilder/src/libABil/bil.c index 9a49d9950..6e39ede98 100644 --- a/cde/programs/dtappbuilder/src/libABil/bil.c +++ b/cde/programs/dtappbuilder/src/libABil/bil.c @@ -1275,22 +1275,22 @@ static BOOL bil_token_table_inited = FALSE; /* * Compares to entries (for qsort) */ -static int +static long bil_token_entry_compare(const void *leftEntry, const void *rightEntry) { - return ((int)(((BilTokenIndexEntry)leftEntry)->string)) - - ((int)(((BilTokenIndexEntry)rightEntry)->string)); + return ((long)(((BilTokenIndexEntry)leftEntry)->string)) + - ((long)(((BilTokenIndexEntry)rightEntry)->string)); } /* * Compares a key to an entry (for bsearch) */ -static int +static long bil_token_key_compare(const void *voidIstr, const void *voidEntry) { - return ((int)((ISTRING)(voidIstr))) - - ((int)(((BilTokenIndexEntry)voidEntry)->string)); + return ((long)((ISTRING)(voidIstr))) + - ((long)(((BilTokenIndexEntry)voidEntry)->string)); } @@ -1720,9 +1720,9 @@ BIL_TOKEN bilP_string_to_token(STRING strToken) { ISTRING istrToken = istr_create(strToken); - register int midDiff; - register int midIndex; - int minIndex, maxIndex; + register long midDiff; + register long midIndex; + long minIndex, maxIndex; bil_token_table_check_init(); /* @@ -1733,8 +1733,8 @@ bilP_string_to_token(STRING strToken) while (minIndex < maxIndex) { midIndex = ((minIndex + maxIndex)>>1); - midDiff = (((int)bil_token_table_index[midIndex].string) - - ((int)istrToken)); + midDiff = (((long)bil_token_table_index[midIndex].string) + - ((long)istrToken)); if (midDiff < 0) { /* mid is too small - take upper half */ diff --git a/cde/programs/dtappbuilder/src/libABil/bil_loadatt.c b/cde/programs/dtappbuilder/src/libABil/bil_loadatt.c index 9098f8a6d..a9a7e5459 100644 --- a/cde/programs/dtappbuilder/src/libABil/bil_loadatt.c +++ b/cde/programs/dtappbuilder/src/libABil/bil_loadatt.c @@ -2417,7 +2417,7 @@ bilP_load_attachment_value(BIL_TOKEN valueToken) { ABObj target = NULL; STRING name = NULL; - int value = 0; + long value = 0; AB_COMPASS_POINT cp = AB_CP_UNDEF; util_dprintf(3, "bilP_load_attachment_value: %d/%s\n\t%d/%s\n", diff --git a/cde/programs/dtappbuilder/src/libABil/bil_store.c b/cde/programs/dtappbuilder/src/libABil/bil_store.c index f387334bf..c70771b65 100644 --- a/cde/programs/dtappbuilder/src/libABil/bil_store.c +++ b/cde/programs/dtappbuilder/src/libABil/bil_store.c @@ -2304,7 +2304,7 @@ store_attribute( { AB_ARG_TYPE type = AB_ARG_UNDEF; - if ((type = obj_get_arg_type(obj)) != NULL) + if ((type = obj_get_arg_type(obj)) != 0) { switch (type) { @@ -2382,7 +2382,7 @@ store_attribute( break; case AB_ATTACH_GRIDLINE: case AB_ATTACH_CENTER_GRIDLINE: - abio_put_integer(outFile, (int)obj_get_attach_value(obj, AB_CP_NORTH)); + abio_put_integer(outFile, (long)obj_get_attach_value(obj, AB_CP_NORTH)); break; case AB_ATTACH_POINT: case AB_ATTACH_NONE: @@ -2415,7 +2415,7 @@ store_attribute( break; case AB_ATTACH_GRIDLINE: case AB_ATTACH_CENTER_GRIDLINE: - abio_put_integer(outFile, (int)obj_get_attach_value(obj, AB_CP_SOUTH)); + abio_put_integer(outFile, (long)obj_get_attach_value(obj, AB_CP_SOUTH)); break; default: abio_put_integer(outFile, 0); @@ -2447,7 +2447,7 @@ store_attribute( break; case AB_ATTACH_GRIDLINE: case AB_ATTACH_CENTER_GRIDLINE: - abio_put_integer(outFile, (int)obj_get_attach_value(obj, AB_CP_EAST)); + abio_put_integer(outFile, (long)obj_get_attach_value(obj, AB_CP_EAST)); break; default: abio_put_integer(outFile, 0); @@ -2479,7 +2479,7 @@ store_attribute( break; case AB_ATTACH_GRIDLINE: case AB_ATTACH_CENTER_GRIDLINE: - abio_put_integer(outFile, (int)obj_get_attach_value(obj, AB_CP_WEST)); + abio_put_integer(outFile, (long)obj_get_attach_value(obj, AB_CP_WEST)); break; default: abio_put_integer(outFile, 0); diff --git a/cde/programs/dtappbuilder/src/libABil/gil_loadobj.c b/cde/programs/dtappbuilder/src/libABil/gil_loadobj.c index 95f7e94cb..857b7e90b 100644 --- a/cde/programs/dtappbuilder/src/libABil/gil_loadobj.c +++ b/cde/programs/dtappbuilder/src/libABil/gil_loadobj.c @@ -116,7 +116,7 @@ gilP_load_object2(FILE * inFile, ABObj obj, ABObj parent) attr = gilP_string_to_att(istr_string(keyword)); if ((rc = gilP_load_attribute_value( - inFile, obj, attr, parent)) != NULL) + inFile, obj, attr, parent)) != 0) { return_value = rc; goto epilogue; diff --git a/cde/programs/dtappbuilder/src/libABobj/obj_fields.c b/cde/programs/dtappbuilder/src/libABobj/obj_fields.c index 225d958b5..65c4032a6 100644 --- a/cde/programs/dtappbuilder/src/libABobj/obj_fields.c +++ b/cde/programs/dtappbuilder/src/libABobj/obj_fields.c @@ -2443,7 +2443,7 @@ obj_set_to(ABObj obj, ABObj to) if (!obj_is_action(obj)) { member_error(obj, "to"); - return NULL; + return 0; } obj->info.action.to = to; return 0; @@ -2468,7 +2468,7 @@ obj_set_from(ABObj obj, ABObj from) if (!obj_is_action(obj)) { member_error(obj, "from"); - return NULL; + return 0; } obj->info.action.from = from; return 0; @@ -2686,7 +2686,7 @@ obj_set_when(ABObj obj, AB_WHEN when) if (obj->type != AB_TYPE_ACTION) { member_error(obj, "when"); - return NULL; + return 0; } obj->info.action.when = when; return 0; @@ -2978,7 +2978,7 @@ obj_get_attach_offset( default: if (util_get_verbosity() > 0) fprintf(stderr, "obj_get_attach_offset: invalid direction\n"); - return NULL; + return 0; } } @@ -3879,6 +3879,8 @@ obj_set_help_button(ABObj obj, BOOL has_button) obj->info.message.help_button = has_button; return 0; } + +int obj_set_tooltalk_level(ABObj obj, AB_TOOLTALK_LEVEL tt_level) { verify_for_write(obj); diff --git a/cde/programs/dtappbuilder/src/libABobj/obj_list.c b/cde/programs/dtappbuilder/src/libABobj/obj_list.c index 24ba6787e..6f5eba309 100644 --- a/cde/programs/dtappbuilder/src/libABobj/obj_list.c +++ b/cde/programs/dtappbuilder/src/libABobj/obj_list.c @@ -74,7 +74,7 @@ static int objlistP_build_user_data_array( ((((_list)->user_datas == NULL) && ((_data) != NULL))? \ objlistP_build_user_data_array(_list, _index, _data) \ : \ - ((int)((_list)->user_datas[(_index)] = (_data))) \ + ((long)((_list)->user_datas[(_index)] = (_data))) \ ) */ @@ -85,7 +85,7 @@ static int objlistP_build_user_data_array( : \ objlistP_build_user_data_array(_list, _index, _data)) \ : \ - ((int)((_list)->user_datas[(_index)] = (_data))) \ + ((long)((_list)->user_datas[(_index)] = (_data))) \ ) #define objlistP_get_user_data(_list,_index) \ @@ -260,7 +260,7 @@ objlist_add_obj(ABObjList list, ABObj obj, void *clientData) */ if (list->unique) { - int index = objlist_get_obj_index(list, obj); + long index = objlist_get_obj_index(list, obj); if (index >= 0) { objlistP_add_user_data(list, index, clientData); diff --git a/cde/programs/dtappbuilder/src/libABobj/obj_names_list.c b/cde/programs/dtappbuilder/src/libABobj/obj_names_list.c index ee151c34b..7dc2add43 100644 --- a/cde/programs/dtappbuilder/src/libABobj/obj_names_list.c +++ b/cde/programs/dtappbuilder/src/libABobj/obj_names_list.c @@ -176,7 +176,7 @@ objP_tree_add_to_names_list(ABObj tree) } if (names == NULL) { - return NULL; + return 0; } for (trav_open(&trav, tree, AB_TRAV_ALL); @@ -207,7 +207,7 @@ objP_tree_remove_from_names_list(ABObj tree) } if (names == NULL) { - return NULL; + return 0; } for (trav_open(&trav, tree, AB_TRAV_ALL); diff --git a/cde/programs/dtappbuilder/src/libABobj/obj_scoped.c b/cde/programs/dtappbuilder/src/libABobj/obj_scoped.c index 423baeb9a..2442ac914 100644 --- a/cde/programs/dtappbuilder/src/libABobj/obj_scoped.c +++ b/cde/programs/dtappbuilder/src/libABobj/obj_scoped.c @@ -115,7 +115,7 @@ obj_scoped_find_by_name(ABObj searchFirstObj, STRING objName) moduleNameEndChar = *moduleNameEndPtr; *moduleNameEndPtr = 0; } - while (((*objNamePtr) != NULL) && (isspace(*objNamePtr))) + while (((*objNamePtr) != 0) && (isspace(*objNamePtr))) { ++objNamePtr; } diff --git a/cde/programs/dtappbuilder/src/libABobj/obj_utils.c b/cde/programs/dtappbuilder/src/libABobj/obj_utils.c index fbd44da17..cd08c837c 100644 --- a/cde/programs/dtappbuilder/src/libABobj/obj_utils.c +++ b/cde/programs/dtappbuilder/src/libABobj/obj_utils.c @@ -196,7 +196,7 @@ ab_ident_is_ok(STRING ident) { return FALSE; } - for (cp = ident; *cp != NULL; ++cp) + for (cp = ident; *cp != 0; ++cp) { if (isspace(*cp)) { @@ -789,7 +789,7 @@ obj_scoped_name_split( moduleNameEndChar = *module_name_end_ptr; *module_name_end_ptr = 0; } - while (((*obj_name_ptr) != NULL) && (isspace(*obj_name_ptr))) + while (((*obj_name_ptr) != 0) && (isspace(*obj_name_ptr))) { ++obj_name_ptr; } @@ -1146,7 +1146,7 @@ obj_verify(ABObj obj) obj_name, (_fieldName))) #define check_str(obj, _field) \ - ( ((int)(last_field = #_field)), \ + ( ((long)(last_field = #_field)), \ (istr_verify(obj->_field) >= 0)? \ (0) \ : \ diff --git a/cde/programs/dtappbuilder/src/libABobjXm/objxm_args.c b/cde/programs/dtappbuilder/src/libABobjXm/objxm_args.c index bb01f3abc..a85f8af57 100644 --- a/cde/programs/dtappbuilder/src/libABobjXm/objxm_args.c +++ b/cde/programs/dtappbuilder/src/libABobjXm/objxm_args.c @@ -1382,7 +1382,7 @@ objxm_dump_arglist_indented( case AB_ARG_WIDGET: if (cgen_args) { - util_dprintf(0,"%s ", args[i].value != NULL? + util_dprintf(0,"%s ", args[i].value != 0? istr_string((ISTRING)(args[i].value)) : "NULL"); } else diff --git a/cde/programs/dtappbuilder/src/libABobjXm/objxm_strs.c b/cde/programs/dtappbuilder/src/libABobjXm/objxm_strs.c index dc6cc1278..89a98cce2 100644 --- a/cde/programs/dtappbuilder/src/libABobjXm/objxm_strs.c +++ b/cde/programs/dtappbuilder/src/libABobjXm/objxm_strs.c @@ -68,7 +68,7 @@ */ typedef struct { - int rec_num; /* record # (offset) in table */ + long rec_num; /* record # (offset) in table */ } TableIndexEntryRec, *TableIndexEntry, *TableIndex; @@ -519,7 +519,7 @@ objxm_get_enum_xmdef( ISTRING strdef ) { - unsigned char xmdef = NULL; + unsigned char xmdef = 0; int i; ObjxmEnumTable *enum_table = NULL; ISTRING istr_xmname = istr_dup_existing(xmname); @@ -1052,12 +1052,12 @@ load_res_table( } -static int +static long xm_res_table_entry_xmname_compare(const void *leftEntry, const void *rightEntry) { return - ((int)xm_res_table[((TableIndexEntry)leftEntry)->rec_num].xmname) - - ((int)xm_res_table[((TableIndexEntry)rightEntry)->rec_num].xmname); + ((long)xm_res_table[((TableIndexEntry)leftEntry)->rec_num].xmname) + - ((long)xm_res_table[((TableIndexEntry)rightEntry)->rec_num].xmname); } @@ -1115,7 +1115,7 @@ find_res_entry_by_xmname(ISTRING istr_xmname) midIndex = ((minIndex + maxIndex)>>1); entry = get_indexed_entry( xm_res_table,xm_res_table_xmname_index,midIndex); - midDiff = ((int)(entry->xmname)) - ((int)istr_xmname); + midDiff = ((long)(entry->xmname)) - ((long)istr_xmname); if (midDiff < 0) { /* mid is too small - take upper half */ diff --git a/cde/programs/dtappbuilder/src/libABobjXm/objxm_util.c b/cde/programs/dtappbuilder/src/libABobjXm/objxm_util.c index 0c0c22062..263cdeb11 100644 --- a/cde/programs/dtappbuilder/src/libABobjXm/objxm_util.c +++ b/cde/programs/dtappbuilder/src/libABobjXm/objxm_util.c @@ -142,7 +142,7 @@ objxm_color_exists( String colorname ) { - static Colormap colormap = NULL; + static Colormap colormap = 0; static Display *display = NULL; XColor color; XColor exact_color; @@ -194,7 +194,7 @@ objxm_filebase_to_pixmap( if (util_strempty(filebase)) return ERR_BAD_PARAM2; - *pixmap_p = NULL; + *pixmap_p = 0; /* Use Pixmap conversion callback if it exists */ if (ObjxmP_filename_to_pixmap_cb != NULL) @@ -308,7 +308,7 @@ convert_file_to_pixmap( Pixel fgPixel = 0; Pixel bgPixel = 0; - *pixmap_p = NULL; + *pixmap_p = 0; /* * Get default values @@ -329,7 +329,7 @@ convert_file_to_pixmap( * In CDE, XmGetPixmap handles .xpm files, as well. */ *pixmap_p = XmGetPixmap(screen, filename, fgPixel, bgPixel); - if ((*pixmap_p == NULL) || (*pixmap_p == XmUNSPECIFIED_PIXMAP)) + if ((*pixmap_p == 0) || (*pixmap_p == XmUNSPECIFIED_PIXMAP)) { return -1; } diff --git a/cde/programs/dtappbuilder/src/libAButil/istr.c b/cde/programs/dtappbuilder/src/libAButil/istr.c index b972c4b35..81af6d10b 100644 --- a/cde/programs/dtappbuilder/src/libAButil/istr.c +++ b/cde/programs/dtappbuilder/src/libAButil/istr.c @@ -85,7 +85,7 @@ typedef struct BUCKET */ STRING Istr_null_string= "(nil)"; STRN *int_array= NULL; /* unique number array */ -int num_count = 1; /* unique number counter */ +long num_count = 1; /* unique number counter */ static BucketRec hashtable[NUMBUCKETS]; @@ -94,10 +94,10 @@ STRN *debug_istr= NULL; /* debugging shortcut for clients (see */ /* comment at top of this file) */ #endif /* DEBUG */ -static int *freelist; /* freelist for unused numbers */ +static long *freelist; /* freelist for unused numbers */ -static int freecount = 0; /* freelist count */ -static int hash_count = 0; /* total number that has been inserted */ +static long freecount = 0; /* freelist count */ +static long hash_count = 0; /* total number that has been inserted */ static unsigned hashing( char *p @@ -125,7 +125,7 @@ static int istrP_errmsg_noexist(int istr_value); #define int_array_set(ptr) (int_array = (ptr)) #endif #define istrP_int_to_client(intVal) ((ISTRING)(intVal)) -#define istrP_client_to_int(istrVal) ((int)(istrVal)) +#define istrP_client_to_int(istrVal) ((long)(istrVal)) #define return_istr(x) return istrP_int_to_client(x) /*****************************************************************************/ @@ -142,7 +142,7 @@ istr_create ( ) { int hashval; - int str_exists; + long str_exists; Bucket new_bucket; int i; Bucket entry; @@ -310,7 +310,7 @@ istrP_create_alloced_impl( ) { int hashval; - int str_exists; + long str_exists; Bucket new_bucket; int i; Bucket entry; @@ -487,7 +487,7 @@ istr_create_const( ) { int hashval; - int str_exists; + long str_exists; Bucket new_bucket; int i; Bucket entry; @@ -668,7 +668,7 @@ istr_dup_existing( ) { int hashval; - int str_exists; + long str_exists; if (string == NULL) { @@ -696,7 +696,7 @@ istrP_destroy_impl( ISTRING *istringClientPtr ) { - int istring = (int)(*istringClientPtr); + long istring = (long)(*istringClientPtr); int val; /* hashing value */ int i; Bucket entry; @@ -712,7 +712,7 @@ istrP_destroy_impl( (int_array[istring].read_const == 0))) { istrP_errmsg_noexist(istring); - return NULL; + return 0; } if (int_array[istring].read_const == 1) /* const entry */ { @@ -752,13 +752,13 @@ istrP_destroy_impl( /* put unused int_array location of the freelist */ if(free_num == 0) { - freelist = (int *)malloc(ARRAYSIZE * sizeof(int)); + freelist = (long *)malloc(ARRAYSIZE * sizeof(long)); if (freelist == NULL) { fprintf(stderr, catgets(UTIL_MESSAGE_CATD, UTIL_MESSAGE_SET, 3, "ISTR: error in allocating memory\n") ); - return NULL ; + return 0 ; } free_num = 1; } @@ -771,15 +771,15 @@ istrP_destroy_impl( else /* need more freelist space */ { free_num++; - freelist = (int *)realloc(freelist, - (ARRAYSIZE * free_num) * sizeof(int)); + freelist = (long *)realloc(freelist, + (ARRAYSIZE * free_num) * sizeof(long)); assert(freelist != NULL); if (freelist == NULL) { fprintf(stderr, catgets(UTIL_MESSAGE_CATD, UTIL_MESSAGE_SET, 3, "ISTR: error in allocating memory\n") ); - return NULL ; + return 0 ; } freelist[freecount] = istring; freecount++; @@ -789,7 +789,7 @@ istrP_destroy_impl( /* * Set the client's variable to NULL */ - istring = NULL; + istring = 0; (*istringClientPtr) = istrP_int_to_client(istring); return 1; } @@ -804,7 +804,7 @@ istr_dup( ISTRING istringClientVal ) { - int istring= istrP_client_to_int(istringClientVal); + long istring= istrP_client_to_int(istringClientVal); if(istring == 0) { @@ -831,7 +831,7 @@ istrP_get_string_verify( ISTRING istringClientVal ) { - int istring = istrP_client_to_int(istringClientVal); + long istring = istrP_client_to_int(istringClientVal); if(istring == 0) { @@ -932,13 +932,13 @@ insert_array( if(hash_count == 0) { - int_array_set((STRN *)malloc(ARRAYSIZE * sizeof(STRN))); + int_array_set((STRN *)calloc(ARRAYSIZE, sizeof(STRN))); if (int_array == NULL) { fprintf(stderr, catgets(UTIL_MESSAGE_CATD, UTIL_MESSAGE_SET, 3, "ISTR: error in allocating memory\n") ); - return NULL ; + return 0 ; } array_num = 1; } @@ -973,7 +973,7 @@ insert_array( fprintf(stderr, catgets(UTIL_MESSAGE_CATD, UTIL_MESSAGE_SET, 3, "ISTR: error in allocating memory\n") ); - return NULL ; + return 0 ; } int_array[val].refcount =1; if (flag == 1) diff --git a/cde/programs/dtappbuilder/src/libAButil/istr.h b/cde/programs/dtappbuilder/src/libAButil/istr.h index 358281484..6fc01dcca 100644 --- a/cde/programs/dtappbuilder/src/libAButil/istr.h +++ b/cde/programs/dtappbuilder/src/libAButil/istr.h @@ -240,7 +240,7 @@ extern ISTRING istrP_create_alloced_impl9726039350PrivF(STRING*); extern int istrP_notify_invalid2160413670PrivF(ISTRING); extern STRING istrP_get_string_fast3718930164PrivF(ISTRING); extern STRING istrP_get_string_verify4521632085PrivF(ISTRING); -extern int istrP_num_count7608925912PrivD; +extern long istrP_num_count7608925912PrivD; extern ISTR_PRIVT_STRN *istrP_int_array1809065681PrivD; @@ -272,7 +272,7 @@ extern ISTR_PRIVT_STRN *istrP_int_array1809065681PrivD; #define istr_string_safe(s) ((s) == NULL? Istr_null_string:istr_string(s)) #define istrP_get_string_fast3718930164PrivF(istring) \ - ((istring)==NULL ? Istr_null_string : (istrP_int_array1809065681PrivD[((long)istring)].str)) + (istrP_int_array1809065681PrivD[((long)istring)].str) /* istr_string - if debugging is turned on, checks ISTRINGS for validity */ #ifdef DEBUG diff --git a/cde/programs/dtappbuilder/src/libAButil/strlist.c b/cde/programs/dtappbuilder/src/libAButil/strlist.c index 09b46b4ed..a402a3240 100644 --- a/cde/programs/dtappbuilder/src/libAButil/strlist.c +++ b/cde/programs/dtappbuilder/src/libAButil/strlist.c @@ -69,7 +69,7 @@ static int strlistP_build_user_data_array( ((((_list)->user_datas == NULL) && ((_data) != NULL))? \ strlistP_build_user_data_array(_list, _index, _data) \ : \ - ((int)((_list)->user_datas[(_index)] = (_data))) \ + ((long)((_list)->user_datas[(_index)] = (_data))) \ ) @@ -189,10 +189,10 @@ strlist_istr_exists(StringList list, ISTRING istring) } -int +long strlist_set_istr_data(StringList list, ISTRING istring, void *data) { - int index = strlist_get_istr_index(list, istring); + long index = strlist_get_istr_index(list, istring); if (index < 0) { return index; @@ -215,10 +215,10 @@ strlist_get_istr_data(StringList list, ISTRING istring) /* * Returns the index of the given string, or -1 if it doesn't exist */ -int +long strlist_get_istr_index(StringList list, ISTRING string) { - int index = -1; + long index = -1; int i = 0; int num_strings = list->num_strings; @@ -293,10 +293,10 @@ epilogue: } -int +long strlist_remove_istr(StringList list, ISTRING istring) { - int index = strlist_get_istr_index(list, istring); + long index = strlist_get_istr_index(list, istring); if (index < 0) { return 0; @@ -485,10 +485,10 @@ strlist_str_exists(StringList list, STRING string) } -int +long strlist_get_str_index(StringList list, STRING string) { - int index = -1; + long index = -1; ISTRING istring = istr_create(string); if (istring != NULL) { @@ -506,10 +506,10 @@ strlist_get_str(StringList list, int whichString, void **clientDataOut) } -int +long strlist_remove_str(StringList list, STRING string) { - int return_value = 0; + long return_value = 0; ISTRING istring = istr_dup_existing(string); if (istring != NULL) { @@ -520,10 +520,10 @@ strlist_remove_str(StringList list, STRING string) } -int +long strlist_set_str_data(StringList list, STRING string, void *data) { - int return_value = 0; + long return_value = 0; ISTRING istring = istr_dup_existing(string); if (istring != NULL) { @@ -571,6 +571,7 @@ strlist_dup(StringList list) **************************************************************************/ +int strlistP_shrink_array(StringList list, int sizeDiff) { int return_value = 0; diff --git a/cde/programs/dtappbuilder/src/libAButil/strlist.h b/cde/programs/dtappbuilder/src/libAButil/strlist.h index 941328212..9c505196e 100644 --- a/cde/programs/dtappbuilder/src/libAButil/strlist.h +++ b/cde/programs/dtappbuilder/src/libAButil/strlist.h @@ -104,12 +104,12 @@ int strlist_dump(StringList list); * STRING interfaces */ int strlist_add_str(StringList, STRING s, void *userData); -int strlist_remove_str(StringList, STRING s); +long strlist_remove_str(StringList, STRING s); BOOL strlist_str_exists(StringList list, STRING s); -int strlist_get_str_index(StringList list, STRING s); +long strlist_get_str_index(StringList list, STRING s); STRING strlist_get_str(StringList, int whichString, void **userDataOut); -int strlist_set_str_data(StringList, STRING string, void *data); +long strlist_set_str_data(StringList, STRING string, void *data); void *strlist_get_str_data(StringList, STRING string); StringList strlist_dup(StringList); @@ -120,14 +120,14 @@ StringList strlist_dup(StringList); * The STRINGs and ISTRING are kept in the same list, and behave identically */ int strlist_add_istr(StringList, ISTRING s, void *userData); -int strlist_add_index_istr(StringList, +long strlist_add_index_istr(StringList, int index, ISTRING s, void *userData); BOOL strlist_istr_exists(StringList list, ISTRING s); -int strlist_get_istr_index(StringList list, ISTRING s); +long strlist_get_istr_index(StringList list, ISTRING s); ISTRING strlist_get_istr(StringList, int whichString, void **userDataOut); -int strlist_set_istr_data(StringList, ISTRING istring, void *data); +long strlist_set_istr_data(StringList, ISTRING istring, void *data); void *strlist_get_istr_data(StringList, ISTRING istring); -int strlist_remove_istr(StringList, ISTRING s); +long strlist_remove_istr(StringList, ISTRING s); #endif /* _ABUTIL_STRLIST_H_ */ diff --git a/cde/programs/dthelp/parser/canon1/parser/parser.h b/cde/programs/dthelp/parser/canon1/parser/parser.h index b7e7eb696..6584c8c93 100644 --- a/cde/programs/dthelp/parser/canon1/parser/parser.h +++ b/cde/programs/dthelp/parser/canon1/parser/parser.h @@ -439,7 +439,7 @@ M_PAREXTERN int m_argc ; M_PAREXTERN char **m_argv ; /* PARSER output file */ -#if defined(linux) +#if defined(linux) || defined(CSRG_BASED) M_PAREXTERN FILE *m_outfile; M_PAREXTERN FILE *m_errfile; #else diff --git a/cde/programs/dthelp/parser/pass1/parser/parser.h b/cde/programs/dthelp/parser/pass1/parser/parser.h index 06e4ce7b2..839381fd1 100644 --- a/cde/programs/dthelp/parser/pass1/parser/parser.h +++ b/cde/programs/dthelp/parser/pass1/parser/parser.h @@ -437,7 +437,7 @@ M_PAREXTERN int m_argc ; M_PAREXTERN char **m_argv ; /* PARSER output file */ -#if defined(linux) +#if defined(linux) || defined(CSRG_BASED) M_PAREXTERN FILE *m_outfile; M_PAREXTERN FILE *m_errfile; #else diff --git a/cde/programs/dthelp/parser/pass2/parser/parser.h b/cde/programs/dthelp/parser/pass2/parser/parser.h index e47dd77b1..b9a3300c1 100644 --- a/cde/programs/dthelp/parser/pass2/parser/parser.h +++ b/cde/programs/dthelp/parser/pass2/parser/parser.h @@ -437,7 +437,7 @@ M_PAREXTERN int m_argc ; M_PAREXTERN char **m_argv ; /* PARSER output file */ -#if defined(linux) +#if defined(linux) || defined(CSRG_BASED) M_PAREXTERN FILE *m_outfile; M_PAREXTERN FILE *m_errfile; #else diff --git a/cde/programs/dtksh/Imakefile b/cde/programs/dtksh/Imakefile index 0b7872697..f5071a305 100644 --- a/cde/programs/dtksh/Imakefile +++ b/cde/programs/dtksh/Imakefile @@ -135,4 +135,4 @@ ComplexProgramTarget($(PROGRAMS)) clean:: @echo " Cleaning ksh directories" - ./MakeClean + $(SHELL) MakeClean diff --git a/cde/programs/dtksh/dtkcvt.c b/cde/programs/dtksh/dtkcvt.c index ff5f892e2..fe69042d2 100644 --- a/cde/programs/dtksh/dtkcvt.c +++ b/cde/programs/dtksh/dtkcvt.c @@ -67,7 +67,8 @@ #include "xmwidgets.h" #include "msgs.h" -#if defined(SYSV) || defined(SVR4_0) || defined(SVR4) || defined(DEC) +#if defined(SYSV) || defined(SVR4_0) || defined(SVR4) || defined(DEC) \ + || defined(CSRG_BASED) || defined(linux) #define lsprintf sprintf #endif @@ -430,7 +431,7 @@ DtkshCvtStringToCallback( cb = (XtCallbackList)XtMalloc(sizeof(XtCallbackRec)*2); cb[0].callback = (XtCallbackProc)stdCB; - cdata = GetNewCBData((String)fval->addr, w, DTKSHConversionResource, NULL); + cdata = GetNewCBData((String)fval->addr, w, DTKSHConversionResource, None); cb[0].closure = (caddr_t)cdata; cb[1].callback = NULL; @@ -572,7 +573,7 @@ static EventMaskTable eventMasks[] = { {"PropertyChangeMask", PropertyChangeMask}, {"ColormapChangeMask", ColormapChangeMask}, {"OwnerGrabButtonMask", OwnerGrabButtonMask}, - {NULL, NULL}, + {NULL, NoEventMask}, }; @@ -739,7 +740,7 @@ static MWMTable mwmDecorations[] = { {"MWM_DECOR_MENU", MWM_DECOR_MENU}, {"MWM_DECOR_MINIMIZE", MWM_DECOR_MINIMIZE}, {"MWM_DECOR_MAXIMIZE", MWM_DECOR_MAXIMIZE}, - {NULL, NULL}, + {NULL, 0}, }; static MWMTable mwmFunctions[] = { @@ -749,7 +750,7 @@ static MWMTable mwmFunctions[] = { {"MWM_FUNC_MINIMIZE", MWM_FUNC_MINIMIZE}, {"MWM_FUNC_MAXIMIZE", MWM_FUNC_MAXIMIZE}, {"MWM_FUNC_CLOSE", MWM_FUNC_CLOSE}, - {NULL, NULL}, + {NULL, 0}, }; static void diff --git a/cde/programs/dtksh/ksh93/Imakefile b/cde/programs/dtksh/ksh93/Imakefile index 410a9c49a..9e1003281 100644 --- a/cde/programs/dtksh/ksh93/Imakefile +++ b/cde/programs/dtksh/ksh93/Imakefile @@ -15,7 +15,7 @@ CCFLAGS = .NO_PARALLEL: #endif /* SunArchitecture */ -FORCE_SHIP = -E +FORCE_SHIP = -F MALLOCOBJ = @@ -31,7 +31,6 @@ KSH_OBJS = \ OBJS = $(KSH_OBJS) $(KSH_LIBS) - SUIDEXECDEFINES = \ -DPROFILEPATH=\"$(CDE_CONFIGURATION_TOP)/config/profile\" \ -DSUIDPROFILEPATH=\"$(CDE_CONFIGURATION_TOP)/config/suid_profile\" \ @@ -57,15 +56,7 @@ ALL_SUBS = * ksh93src: $(RM) $(SHIP_DIR)/$(ALL_SUBS)/$(ALL_SUBS)/BUILT; \ - if [ -f /bin/ksh ]; \ - then \ - SHELL=/bin/ksh CC=$(CC) CCFLAGS="$(CCFLAGS)" /bin/ksh ship/shipin $(FORCE_SHIP); \ - elif [ -f /bin/sh ]; \ - then \ - SHELL=/bin/sh CC=$(CC) CCFLAGS="$(CCFLAGS)" /bin/sh ship/shipin $(FORCE_SHIP); \ - else \ - SHELL="" CC=$(CC) CCFLAGS="$(CCFLAGS)" ship/shipin $(FORCE_SHIP); \ - fi + SHELL=$(KORNSHELL) CC=$(CC) CCFLAGS="$(CCFLAGS)" $(KORNSHELL) ship/shipin $(FORCE_SHIP) ksh93.o: $(OBJS) $(LD) -r -o $@ $(OBJS) diff --git a/cde/programs/dtksh/ksh93/man/man1/sh.1 b/cde/programs/dtksh/ksh93/man/man1/sh.1 deleted file mode 100644 index fa0303807..000000000 --- a/cde/programs/dtksh/ksh93/man/man1/sh.1 +++ /dev/null @@ -1,5986 +0,0 @@ -.\" $XConsortium: sh.1 /main/2 1995/07/17 14:27:13 drk $ -.\" -.\" David Korn -.\" AT&T Bell Laboratories -.\" -.\" @(#)sh.1 (ulysses!dgk) 01/14/93-beta15 -.\" -.nr Z 0 \" set to 1 when command name is ksh rather than sh -.nr Y 0 \" set to 1 for R&D UNIX -.if \nY=1 .nr Z 1 -.ds OK [\| -.ds CK \|] -.ds ' \s+4\v@.3m@\'\v@-.3m@\s-4 -.ds ` \s+4\v@.3m@\`\v@-.3m@\s-4 -.de P -.br -.. -.if \nZ=0 .TH SH 1 -.if \nZ=1 .TH KSH 1 "User Environment Utilities" "RDS Standard" -.SH NAME -.if \nZ=0 sh, rsh \- shell, the -.if \nZ=1 ksh, rksh \- KornShell, a -standard/restricted command and programming language -.SH SYNOPSIS -.if \nZ=0 .B sh -.if \nZ=1 .B ksh -[ -.B \(+-abcefhikmnoprstuvxCP -] [ -.B \-I -file ] [ -.B \(+-o -option ] .\|.\|. [ -.B \- -] [ arg .\|.\|. ] -.br -.if \nZ=0 .B rsh -.if \nZ=1 .B rksh -[ -.B \(+-abcefhikmnoprstuvxCP -] [ -.B \-I -file ] [ -.B \(+-o -option ] .\|.\|. [ -.B \- -] [ arg .\|.\|. ] -.SH DESCRIPTION -.if \nZ=0 .I Sh\^ -.if \nZ=1 .I Ksh\^ -is a command and programming language -that executes commands read from a terminal -or a file. -.if \nZ=0 .I Rsh\^ -.if \nZ=1 .I Rksh\^ -is a restricted version of the -.if \nZ=0 standard -command interpreter -.if \nZ=0 .IR sh ; -.if \nZ=1 .IR ksh ; -it is used to set up login names and execution environments whose -capabilities are more controlled than those of the standard shell. -See -.I Invocation\^ -below -for the meaning of arguments to the shell. -.SS Definitions. -A -.I metacharacter\^ -is one of the following characters: -.RS -.PP -\f3; & ( ) \(bv < > new-line space tab\fP -.RE -.PP -A -.I blank\^ -is a -.B tab -or a -.BR space . -An -.I identifier\^ -is a sequence of letters, digits, or underscores -starting with a letter or underscore. -Identifiers are used as components of -.I variable\^ -names. -A -.I vname\^ -is a sequence of one or more identifiers -separated by a \fB\s+2.\s-2\fP and optionally preceded -by a \fB\s+2.\s-2\fP. -Vnames are used as function and variable names. -A -.I word\^ -is a sequence of -.I characters\^ -excluding non-quoted -.IR metacharacters . -.P -A -.I command\^ -is a sequence of characters in the syntax -of the shell language. -The shell reads each command and -carries out the desired action either directly or by invoking -separate utilities. -A built-in command is a command that is carried out by the -shell itself without creating a separate process. -Some commands are built-in purely for convenience -and are not documented here. -Built-ins that cause -side effects in the shell environment and -built-ins that are found before performing a -path search (see -.I Execution\^ -below) -are documented here. -For historical reasons, some of -these built-ins behave differently than -other built-ins and are called -.IR "special built-ins" . -.SS Commands. -A -.I simple-command\^ -is a list of variable assignments -(see -.I Variable Assignments\^ -below) -or a sequence of -.I blank\^ -separated words -which may be preceded by a list of variable assignments -(see -.I Environment\^ -below). -The first word specifies the name of the command to -be executed. -Except as specified below, -the remaining words are passed as arguments -to the invoked command. -The command name is passed as argument 0 -(see -.IR exec (2)). -The -.I value\^ -of a simple-command is its exit status; 0-255 -if it terminates normally; 256+\f2signum\^\fP if -it terminates abnormally (the name of the signal corresponding -to the exit status can be -obtained via the -.B "\-l $?" -option of the -.B kill\^ -built-in utility). -.PP -An -.I "arithmetic command" -begins with a -.BR (( , -and consists of an arithmetic expression formed by -all the characters until a matching -.BR )) . -(See -.I "Arithmetic evaluation" -below.) -The exit status of an arithmetic command is 0 when the -arithmetic expression evaluates to a non-zero value and -is 1 when the arithmetic expression evaluates to 0. -.PP -A -.I pipeline\^ -is a sequence of one or more -.I commands\^ -separated by -.BR \(bv . -The standard output of each command but the last -is connected by a -.IR pipe (2) -to the standard input of the next command. -Each command, -except possibly the last, -is run as a separate process; -the shell waits for the last command to terminate. -The exit status of a pipeline is the exit -status of the last command. -Each pipeline can be preceded by the -.I "reserved word" -.B ! -which negates the exit status of the pipeline. -.PP -A -.I list\^ -is a sequence of one or more -pipelines -separated by -.BR ; , -.BR & , -.BR \(bv& , -.BR && , -or -.BR \(bv\|\(bv , -and optionally terminated by -.BR ; , -.BR & , -or -.BR \(bv& . -Of these five symbols, -.BR ; , -.BR & , -and -.B \(bv& -have equal precedence, -which is lower than that of -.B && -and -.BR \(bv\|\(bv . -The symbols -.B && -and -.B \(bv\|\(bv -also have equal precedence. -A semicolon -.RB ( ; ) -causes sequential execution of the preceding pipeline; an ampersand -.RB ( & ) -causes asynchronous execution of the preceding pipeline (i.e., the shell does -.I not\^ -wait for that pipeline to finish). -The symbol -.B \(bv& -causes asynchronous execution of the preceding pipeline -with a two-way pipe established to the parent shell; -the standard input and output of the spawned pipeline -can be written to and read from by the parent shell -by applying -the redirection operators -.B <& -and -.B >& -with arg -.B p -to commands and by using -.B \-p -option of -the built-in commands -.B read -and -.B print -described later. -The symbol -.B && -.RB (\| \(bv\|\(bv \^) -causes the -.I list\^ -following it to be executed only if the preceding -pipeline -returns a zero (non-zero) value. -An arbitrary number of new-lines may appear in a -.I list\^ -instead of a semicolon, -to delimit a command. -.PP -A -.I command\^ -is either a simple-command -or one of the following. -Unless otherwise stated, -the value returned by a command is that of the -last simple-command executed in the command. -.TP -\f3for\fP \f2vname\^\fP \*(OK \f3in\fP \f2word\^\fP .\|.\|. \*(CK \f3;do\fP \f2list\^\fP \f3;done\fP -Each time a -.B for -command is executed, -.I name\^ -is set to the next -.I word\^ -taken from the -.B in -.I word\^ -list. -If -.BI in " word\^" -\&.\|.\|. -is omitted, then -the -.B for -command executes the \f3do\fP \f2list\^\fP once for each positional parameter -that is set -(see -.I "Parameter Expansion\^" -below). -Execution ends when there are no more words in the list. -.TP -\f3for ((\fP \*(OK\f2expr1\^\fP\*(CK \f3;\fP \*(OK\f2expr2\^\fP\*(CK \f3;\fP \*(OK\f2expr3\^\fP\*(CK \f3))\fP \f3;do\fP \f2list\^\fP \f3;done\fP -The arithmetic expression -.I expr1 -is evaluated first. -(See -.I "Arithmetic evaluation" -below.) -The arithmetic expression -.I expr2 -is repeatedly evaluated until it evalues to zero and when non-zero, -.I list -is executed and the arithmetic expression -.I expr3 -evaluated. -If any expression -is omitted, then it behaves as if it evaluated to 1. -.TP -\f3select\fP \f2vname\^\fP \*(OK \f3in\fP \f2word\^\fP .\|.\|. \*(CK \f3;do\fP \f2list\^\fP \f3;done\fP -A -.B select -command prints on standard error (file descriptor 2) the set of -.IR word s, -each preceded by a number. -If -.BI in " word\^" -\&.\|.\|. -is omitted, then -the -positional parameters -are used instead -(see -.I "Parameter Expansion\^" -below). -The -.SM -.B PS3 -prompt is printed -and a line is read from the standard input. -If this line consists of the number -of one of the listed -.IR word s, -then the value of the variable -.I vname\^ -is set to the -.I word\^ -corresponding to this number. -If this line is empty the selection list is -printed again. -Otherwise the value of the variable -.I vname\^ -is set to -.IR null . -The contents of the line read from standard input is -saved in -the variable -.SM -.BR REPLY . -The -.I list\^ -is executed for each selection until a -.B break\^ -or -.I end-of-file\^ -is encountered. -If the -.SM -.B REPLY -variable is set to -.I null\^ -by the execution of -.IR list , -then the selection list is printed before -displaying the -.SM -.B PS3 -prompt for the next selection. -.TP -\f3case\fP \f2word\^\fP \f3in\fP \*(OK \*(OK\f3(\fP\*(CK\f2pattern\^\fP \*(OK \(bv \f2pattern\^\fP \*(CK .\|.\|. \f3)\fP \f2list\^\fP \f3;;\fP \*(CK .\|.\|. \f3esac\fP -A -.B case -command executes the -.I list\^ -associated with the first -.I pattern\^ -that matches -.IR word . -The form of the patterns is -the same as that used for -file-name generation (see -.I "File Name Generation\^" -below). -The -.B ;; -operator causes execution of -.B case -to terminate. -If -.B ;& -is used in place of -.B ;; -the next subsequent list, if any, is executed. -.ll +3 -.TP -\f3if\fP \f2list\^\fP \f3;then\fP \f2list\^\fP \*(OK \ -\f3elif\fP \f2list\^\fP \f3;then\fP \f2list\^\fP \*(CK .\|.\|. \ -\*(OK \f3;else\fP \f2list\^\fP \*(CK \f3;f\&i\fP -.ll -3 -The -.I list\^ -following \f3if\fP is executed and, -if it -returns a zero exit status, the -.I list\^ -following -the first -.B then -is executed. -Otherwise, the -.I list\^ -following \f3elif\fP -is executed and, if its value is zero, -the -.I list\^ -following -the next -.B then -is executed. -Failing that, the -.B else -.I list\^ -is executed. -If the -.B if -.I list\^ -has non-zero exit status -and there is no -.B else -.IR list , -then the -.B if -command returns a zero exit status. -.TP -.PD 0 -\f3while\fP \f2list\^\fP \f3;do\fP \f2list\^\fP \f3;done\fP -.TP -\f3until\fP \f2list\^\fP \f3;do\fP \f2list\^\fP \f3;done\fP -.PD -A -.B while -command repeatedly executes the -.B while -.I list\^ -and, if the exit status of the last command in the list is zero, executes -the -.B do -.IR list ; -otherwise the loop terminates. -If no commands in the -.B do -.I list\^ -are executed, then the -.B while -command returns a zero exit status; -.B until -may be used in place of -.B while -to negate -the loop termination test. -.TP -\f3(\fP\f2list\^\fP\f3)\fP -.br -Execute -.I list\^ -in a separate environment. -Note, that if two adjacent open parentheses are -needed for nesting, a space must be inserted to avoid -evaluation as an arithmetic command as described above. -.TP -\f3{ \fP\f2list\^\fP\f3;}\fP -.br -.I list\^ -is simply executed. -Note that unlike the metacharacters -.B ( -and -.BR ) , -.B { -and -.B } -are -.IR "reserved word" s -and must occur -at the beginning of a line or after a -.B ; -in order to be recognized. -.TP -\f3[[\fP\f2 expression \^\fP\f3]]\fP -.br -Evaluates -.I expression\^ -and returns a zero exit status when -.I expression\^ -is true. -See -.I "Conditional Expressions\^" -below, for a description of -.IR expression . -.TP -.PD 0 -\f3function\fP \f2varname\^\fP \f3{\fP \f2list\^\fP \f3;}\fP -.TP -\f2varname\^\fP \f3() {\fP \f2list\^\fP \f3;}\fP -.PD -Define a function which is referenced by -.IR varname . -A function whose -.I varname\^ -contains a -.B \s+2.\s-2 -is called a discipline function and the portion -of the -.I varname\^ -preceding the last -.B \s+2.\s-2 -must refer to an existing variable. -The body of the function is the -.I list\^ -of commands between -.B { -and -.BR } . -A function defined with the \f3function\fP \f2varname\^\fP -syntax can also be used as an argument to the \f3.\fP -special built-in command to get the equivalent behavior -as if the \f2varname\^\fP\f3()\fP syntax were used to define it. -(See -.I Functions\^ -below.) -.TP -\f3time\fP \*(OK \f2pipeline\^\fP \*(CK -.br -If \f2pipeline\^\fP is omitted the user and system time for -the current shell and completed child processes is printed -on standard error. -Otherwise, -.I pipeline\^ -is executed and the elapsed time as well as -the user and system time are printed on standard error. -.PP -The following reserved words -are only recognized as such when they are the first word of a command -and are not quoted: -.if t .RS -.PP -.B -.if n if then else elif fi case esac for while until do done { } function select time [[ ]] ! -.if t if then else elif fi case esac for while until do done { } function select time [[ ]] ! -.if t .RE -.SS Variable Assignments. -One or more variable assignments can start a simple command -or can be an arguments to the -.BR typeset , -.BR export , -or -.B readonly -special built-in commands. -The syntax for an \f2assignment\^\fP is of the form: -.TP -.PD 0 -\f2varname\^\fP\f3=\fP\f2word\^\fP -.TP -\f2varname\^\fP\f3[\fP\f2word\^\fP\f3]\fP=\fP\f2word\^\fP -.PD -No space is permitted between \f2varname\^\fP and the \f3=\fP or -between \f3=\fP and \fIword\^\fP. -.TP -\f2varname\^\fP\f3=(\fP\f2assign_list\^\fP\f3)\fP -No space is permitted between \f2varname\^\fP and the \f3=\fP. -An \f2assign_list\^\fP can be one of the following: -.RS 15 -.PD 0 -.TP -\f2word\^\fP ... -Indexed array assignment. -.TP -\f3[\fP\f2word\^\fP\f3]=\fP\f2word\^\fP .\|.\|. -Associative array assignment. -.TP -\f2assignment\^\fP .\|.\|. -Nested variable assignment. -.TP -\f3typeset\fP \*(OK\f2options\fP\*(CK \f2assignment\^\fP .\|.\|. -Nested variable assignment. Multiple assignments -can be specified by separating each of them with a \f3;\fP. -.PD -.RE -.SS Comments. -.PD 0 -A word beginning with -.B # -causes that word and all the following characters up to a new-line -to be ignored. -.SS Aliasing. -The first word of each command is replaced by the text of an -.B alias -if an -.B alias -for this word has been defined. -An -.B alias -name consists of any number of characters excluding metacharacters, -quoting characters, -file expansion characters, -parameter expansion and command substitution -characters, -and -.BR = . -The replacement string can contain any -valid shell script -including the metacharacters listed above. -The first word of each command in the -replaced text, -other than -any that are in the process of being replaced, -will be tested for aliases. -If the last character of the alias value is a -.I blank\^ -then the word following the alias will also be checked for alias -substitution. -Aliases can be used to redefine -built-in commands but cannot be used to redefine -the reserved words listed above. -Aliases can be created and listed with the -.B alias -command and can be removed with the -.B unalias -command. -.PP -.I Aliasing\^ -is performed when -scripts are read, -not while they are executed. -Therefore, -for an alias to take effect -the -.B -alias -definition command has to be executed before -the command which references the alias is read. -.PP -The following -.I exported aliases -are compiled into the shell -but can be unset or redefined: -.RS 20 -.PD 0 -.TP -.B "autoload=\(fmtypeset \-fu\(fm" -.TP -.B "command=\(fmcommand \(fm" -.TP -.B "fc=hist" -.TP -.B "float=\(fmtypeset \-E\(fm" -.TP -.B "functions=\(fmtypeset \-f\(fm" -.TP -.B "hash=\(fmalias \-t \-\-\(fm" -.TP -.B "history=\(fmhist \-l\(fm" -.TP -.B "integer=\(fmtypeset \-i\(fm" -.TP -.B "nameref=\(fmtypeset \-n\(fm" -.TP -.B "nohup=\(fmnohup \(fm" -.TP -.B "r=\(fmhist \-s\(fm" -.TP -.B "redirect=\(fmcommand exec\(fm" -.TP -.B "stop=\(fmkill \-s \s-1STOP\s+1\(fm" -.TP -.B "times=\(fm{ {time;} 2>&1;}\(fm" -.TP -.B "type=\(fmwhence \-v\(fm" -.PD -.RE -.SS Tilde Substitution. -After alias substitution is performed, each word -is checked to see if it begins with an unquoted -.BR \(ap . -For tilde substitution, -.I word\^ -also refers to the -.I word\^ -portion of parameter expansion -( see -.I "Parameter Expansion\^" -below.) -If it does, then the word up to a -.B / -is checked to see if it matches a user name in the -password database ( -often the -.B /etc/passwd -file). -If a match is found, the -.B \(ap -and the matched login name are replaced by the -login directory of the matched user. -If no match is found, the original text is left unchanged. -A -.B \(ap -by itself, or in front of a -.BR / , -is replaced by -.SM -.BR $HOME . -A -.B \(ap -followed by a -.B + -or -.B \- -is replaced by the value of -.B -.SM $PWD -and -.B -.SM $OLDPWD -respectively. -.PP -In addition, -when expanding a -.IR "variable assignment" , -.I tilde -substitution is attempted when -the value of the assignment -begins with a -.BR \(ap , -and when a -.B \(ap -appears after a -.BR : . -The -.B : -also terminates a -.B \(ap -login name. -.if \nY=1 \{.PP -On R&D UNIX Systems with RFS, an additional capability, -.BR \(aphost!user , -has been added to -.IR ksh . -See -.IR logdir (1) -for a complete description of the capability.\} -.SS Command Substitution. -The standard output from a command enclosed in -parentheses preceded by a dollar sign ( -.B $(\|) -) -or a pair of grave accents (\^\f3\*`\^\*`\fP\^) -may be used as part or all -of a word; -trailing new-lines are removed. -In the second (obsolete) form, the string between the quotes is processed -for special quoting characters before the command is executed (see -.I Quoting\^ -below). -The command substitution -\^\f3$(\^cat file\^)\fP\^ -can be replaced by the equivalent but faster -\^\f3$(\^(\fP\f2list\^\fP\f3)\fP -will run process -.I list -asynchronously connected to some file in -.BR /dev/fd . -The name of this file will become the argument to the command. -If the form with -.B > -is selected then writing on this file will provide input for -.IR list . -If -.B < -is used, -then the file passed as an argument will contain the output of the -.I list -process. -For example, -.RS -.PP -\f3paste <(cut \-f1\fP \f2file1\fP\f3) <(cut \-f3\fP \f2file2\f3) | tee >(\fP\f2process1\fP\f3) >(\fP\f2process2\fP\f3)\fP -.RE -.PP -.I cuts -fields 1 and 3 from -the files -.I file1 -and -.I file2 -respectively, -.I pastes -the results together, and -sends it -to the processes -.I process1 -and -.IR process2 , -as well as putting it onto the standard output. -Note that the file, which is passed as an argument to the command, -is a UNIX -.IR pipe (2) -so programs that expect to -.IR lseek (2) -on the file will not work. -.SS Parameter Expansion. -A -.I parameter\^ -is an -.IR variable , -one or more digits, -or any of the characters -.BR \(** , -.BR @ , -.BR # , -.BR ? , -.BR \- , -.BR $ , -and -.BR !\\^ . -A -.I variable\^ -is denoted by a \f2vname\fP. -To create a variable whose -.I vname\^ -contains a \f3\s+2.\s-2\fP, -a variable whose -.I vname\^ -consists of everything before the last \f3\s+2.\s-2\fP must already exist. -A -.I variable\^ -has a -.I value\^ -and zero or more -.IR attributes . -.I Variables\^ -can be assigned -.I values\^ -and -.I attributes -by using the -.B typeset\^ -special built-in command. -The attributes supported by the shell are described -later with the -.B typeset\^ -special built-in command. -Exported variables pass values and attributes to -the environment. -.PP -The shell supports both indexed and associative arrays. -An element of an array variable is referenced by a -.IR subscript . -A -.I subscript\^ -for an indexed array is denoted by -an -.I arithmetic expression\^ -(see -.I "Arithmetic evaluation" -below) -between a -.B [ -and a -.BR ] . -To assign values to an indexed array, use -\f3set \-A\fP \f2vname\fP \f2value\fP .\|.\|. . -The value of all -subscripts must be in the -range of -0 through 4095. -Indexed arrays need not be declared. -Any reference to a variable -with a valid subscript is -legal and an array will be created if necessary. -.PP -An associative array is created with the -.B \-A -option to -.BR typeset. -A -.I subscript\^ -for an associative array is denoted by -a string enclosed between -.B [ -and -.BR ] . -.PP -Referencing any array without a subscript -is equivalent to referencing the array with subscript 0. -.PP -The -.I value\^ -of a -.I variable\^ -may be assigned by writing: -.RS -.PP -.IB vname = value\^\| -\*(OK -.IB vname = value\^ -\*(CK .\|.\|. -.RE -.PP -.PD 0 -or -.RS -.PP -.IB vname [ subscript ]= value\^\| -\*(OK -.IB vname [ subscript ]= value\^ -\*(CK .\|.\|. -.RE -Note that no space is allowed before or after the -.BR = . -.PP -.PD 0 -A -.I nameref\^ -is a variable that is a reference to another variable. -A nameref is created with the -.B \-n -attribute of -.B typeset . -The value of the variable at the time of the -.B typeset -command becomes the variable that will be referenced whenever -the nameref variable is used. -The name of a nameref variable cannot contain a \fB\s+2.\s-2\fP. -When a variable or function name contains a \fB\s+2.\s-2\fP, and the portion -of the name up to the first \fB\s+2.\s-2\fP matches the -name of a nameref, the variable referred to is obtained by -replacing the nameref portion with the name of the variable -referenced by the nameref. -A nameref provides a convenient way to refer to the variable -inside a function whose name is passed as an argument to a function. -For example, if the name of a variable is passed as the first -argument to a function, the command -.RS -.PP -typeset \-n var=$1 -.RE -.PP -inside the function causes references and assignments to -.B var -to be references and assignments to the variable whose -name has been passed to the function. -.PP -If either of the floating point attributes, -.BR \-E , -or -.BR \-F , -or the integer attribute, -.BR \-i , -is set for -.IR vname , -then the -.I value\^ -is subject to arithmetic evaluation as described below. -.PP -Positional parameters, -parameters denoted by a number, -may be assigned values with the -.B set\^ -special built-in command. -Parameter -.B $0 -is set from argument zero when the shell -is invoked. -.PP -The character -.B $ -is used to introduce substitutable -.IR parameters . -.TP -\f3${\fP\f2parameter\^\fP\f3}\fP -The shell -reads all the characters from -.B ${ -to the matching -.B } -as part of the same word even if it contains -braces or metacharacters. -The value, if any, of the parameter is substituted. -The braces are required when -.I parameter\^ -is followed by a letter, digit, or underscore -that is not to be interpreted as part of its name, -when the variable name contains a \fB\s+2.\s-2\fP, -or when a variable is subscripted. -If -.I parameter\^ -is one or more digits then it is a positional parameter. -A positional parameter of more than one digit must be -enclosed in braces. -If -.I parameter\^ -is -.B \(** -or -.BR @ , -then all the positional -parameters, starting with -.BR $1 , -are substituted -(separated by a field separator character). -If an array -.I vname\^ -with subscript -.B \(** -or -.B @ -is used, -then the value -for each of the -elements -is substituted -(separated by a field separator character). -.TP -\f3${#\fP\f2parameter\^\fP\f3}\fP -If -.I parameter\^ -is -.B \(** -or -.BR @ , -the number of positional parameters is substituted. -Otherwise, the length of the value of the -.I parameter\^ -is substituted. -.TP -\f3${#\fP\f2vname\fP\f3[*]}\fP -The number of elements in the array -.I vname\^ -is substituted. -.TP -\f3${!\fP\f2vname\^\fP\f3}\fP -Expands to the name of the variable referred to by -.IR vname . -This will be -.I vname\^ -except when -.I vname\^ -is a name reference. -.TP -\f3${!\fP\f2vname\^\fP\f3[\f2subscript\^\f3]}\fP -Expands to name of the subscript unless -.I subscript\^ -is -.BR * , -or -.BR @ . -When -.I subscript\^ -is -.BR * , -the list of array subscripts for \f2vname\^\fP -is generated. -For a variable that is not an array, the value is 0 if the variable -is set. Otherwise it is null. -When -.I subscript\^ -is -.BR @ , -same as above, except that when used in double quotes, -each array subscript yields a separate -argument. -.TP -\f3${!\fP\f2prefix\^\fP\f3*}\fP -Expands to the names of the variables whose names begin with -.IR prefix . -.TP -\f3${\fP\f2parameter\^\fP\f3:\-\fP\f2word\^\fP\f3}\fP -If -.I parameter\^ -is set and is non-null then substitute its value; -otherwise substitute -.IR word . -.TP -\f3${\fP\f2parameter\^\fP\f3:=\fP\f2word\^\fP\f3}\fP -If -.I parameter\^ -is not set or is null then set it to -.IR word ; -the value of the parameter is then substituted. -Positional parameters may not be assigned to -in this way. -.TP -\f3${\fP\f2parameter\^\fP\f3:?\fP\f2word\^\fP\f3}\fP -If -.I parameter\^ -is set and is non-null then substitute its value; -otherwise, print -.I word\^ -and exit from the shell. -If -.I word\^ -is omitted then a standard message is printed. -.TP -\f3${\fP\f2parameter\^\fP\f3:+\fP\f2word\^\fP\f3}\fP -If -.I parameter\^ -is set and is non-null then substitute -.IR word ; -otherwise substitute nothing. -.TP -.PD 0 -\f3${\fP\f2parameter\^\fP\f3:\fP\f2offset\^\fP\f3:\fP\f2length\^\fP\f3}\fP -.TP -\f3${\fP\f2parameter\^\fP\f3:\fP\f2offset\^\fP\f3}\fP -Expands to the portion of the value of -.I parameter\^ -starting at the character determined by expanding -.I offset\^ -as an arithmetic expression and consisting of the -number of characters determined by the arithmetic expression -defined by -.IR length. -In the second form, the remainder of the value is used. -If -.I parameter\^ -is -.B \(** -or -.BR @ , -or is an array name indexed by -.B \(** -or -.BR @ , -then -.I offset\^ -and -.I length\^ -refer to the array index and number -of elements respectively. -.TP -.PD 0 -\f3${\fP\f2parameter\^\fP\f3#\fP\f2pattern\^\fP\f3}\fP -.TP -\f3${\fP\f2parameter\^\fP\f3##\fP\f2pattern\^\fP\f3}\fP -.PD -If -the shell -.I pattern\^ -matches the beginning of the value of -.IR parameter , -then the value of -this expansion is the value of the -.I parameter\^ -with the matched portion deleted; -otherwise the value of this -.I parameter\^ -is substituted. -In the first form the smallest matching pattern is deleted and in the -second form the largest matching pattern is deleted. -When -.I parameter\^ -is -.BR @ , -.BR * , -or an array variable with subscript -.BR @ , -or -.BR * , -the substring operation is applied to each element in turn. -.TP -.PD 0 -\f3${\fP\f2parameter\^\fP\f3%\fP\f2pattern\^\fP\f3}\fP -.TP -\f3${\fP\f2parameter\^\fP\f3%%\fP\f2pattern\^\fP\f3}\fP -.PD -If -the shell -.I pattern\^ -matches the end of the value of -.IR parameter , -then the value of -this expansion is the value of the -.I parameter\^ -with the matched part deleted; -otherwise substitute the value of -.IR parameter . -In the first form the smallest matching pattern is deleted and in the -second form the largest matching pattern is deleted. -When -.I parameter\^ -is -.BR @ , -.BR * , -or an array variable with subscript -.BR @ , -or -.BR * , -the substring operation is applied to each element in turn. -.TP -.PD 0 -\f3${\fP\f2parameter\^\fP\f3/\fP\f2pattern\^\fP\f3/\f2string\^\fP\f3}\fP -.TP -\f3${\fP\f2parameter\^\fP\f3//\fP\f2pattern\^\fP\f3/\f2string\^\fP\f3}\fP -.PD -Expands -.I parameter\^ -and replaces -.I pattern\^ -with the given -.IR string. -In the first form, -only the first occurrence of -.I pattern\^ -is replaced. -In the second form, -each match for -.I pattern\^ -is replaced by the given -.IR string. -When -.I string\^ -is null, the -.I pattern\^ -will be deleted and the -.B / -in front of -.I string\^ -may be omitted. -When -.I parameter\^ -is -.BR @ , -.BR * , -or an array variable with subscript -.BR @ , -or -.BR * , -the substitution operation is applied to each element in turn. -.PP -In the above, -.I word\^ -is not evaluated unless it is -to be used as the substituted string, -so that, in the following example, -.B pwd\^ -is executed only if -.B d\^ -is not set or is null: -.RS -.PP -print \|${d:\-\^$(\^pwd\^)\^} -.RE -.PP -If the colon ( -.B : ) -is omitted from the above expressions, -then the shell only checks whether -.I parameter\^ -is set or not. -.PP -The following -parameters -are automatically set by the shell: -.RS -.PD 0 -.TP -.B # -The number of positional parameters in decimal. -.TP -.B \- -Options supplied to the shell on invocation or by -the -.B set -command. -.TP -.B ? -The decimal value returned by the last executed command. -.TP -.B $ -The process number of this shell. -.TP -.B _ -Initially, the value of -.B _ -is an absolute pathname of the shell or script being executed -as passed in the -.IR environment . -Subsequently it is assigned the last argument of the previous command. -This parameter is not set for commands which are asynchronous. -This parameter is also used to hold the name of the matching -.B -.SM MAIL -file when checking for mail. -.TP -.B ! -The process number of the last background command invoked. -.TP -.B .sh.edchar -This variable contains the value of the keyboard character -(or sequence of characters if the first character is an ESC, ascii -.B 033 ) -that has -been entered when processing a -.B -.SM KEYBD -trap. -If the value is changed as part of the trap action, then the new -value replaces the key (or key sequence) that caused the trap. -.TP -.B .sh.edcol -The character position of the cursor at the time of the most recent -.B -.SM KEYBD -trap. -.TP -.B .sh.edmode -The value is set to ESC when processing a -.B -.SM KEYBD -trap while in -.B vi -insert mode. (See -.I "Vi Editing Mode"\^ -below.) -Otherwise, -.B .sh.edmode -is null when processing a -.B -.SM KEYBD -trap. -.TP -.B .sh.edtext -The characters in the input buffer at the time of the most recent -.B -.SM KEYBD -trap. -The value is null when not processing a -.B -.SM KEYBD -trap. -.TP -.B .sh.name -Set to the name of the variable at the time of a -.B set -or -.B get -discipline is invoked. -.TP -.B .sh.subscript -Set to the name subscript of the variable at the time of a -.B set -or -.B get -discipline is invoked. -.TP -.B .sh.value -Set to the value of the variable at the time of a -.B set -discipline. -.TP -.B .sh.version -Set to a value that identifies the version of this shell. -.TP -.B -.SM LINENO -The line number of the current line within the script or -function being executed. -.TP -.B -.SM OLDPWD -The previous working directory set by the -.B cd -command. -.TP -.B -.SM OPTARG -The value of the last option argument processed by the -.B getopts -built-in command. -.TP -.B -.SM OPTIND -The index of the last option argument processed by the -.B getopts -built-in command. -.TP -.B -.SM PPID -The process number of the parent of the shell. -.TP -.B -.SM PWD -The present working directory set by the -.B cd -command. -.TP -.B -.SM RANDOM -Each time this variable is referenced, a random integer, -uniformly distributed between 0 and 32767, is generated. -The sequence of random numbers can be initialized by assigning -a numeric value to -.SM -.BR RANDOM . -.TP -.B -.SM REPLY -This variable is set by the -.B select -statement and by -the -.B read -built-in command when no arguments are supplied. -.TP -.B -.SM SECONDS -Each time this variable is referenced, the number of -seconds since shell invocation is returned. -If this variable is -assigned a value, then the value returned upon reference will -be the value that was assigned plus the number of seconds since the assignment. -.PD -.RE -.PP -The following -variables -are used by the shell: -.RS -.PD 0 -.TP -.B -.SM CDPATH -The search path for the -.B cd -command. -.TP -.B -.SM COLUMNS -If this variable is set, -the value is used to define the width of the edit window -for the shell edit modes and for printing -.B select -lists. -.TP -.B -.SM EDITOR -If the value of this variable ends in -.IR emacs , -.IR gmacs , -or -.I vi -and the -.B -.SM VISUAL -variable is not set, -then the corresponding option -(see Special Command -.B set -below) -will be turned on. -.TP -.SM -.B ENV -If this variable is set, then -parameter expansion, command substitution, and arithmetic substitution, -are performed on -the value to generate -the pathname of the script that will be -executed when the shell -is invoked. -(See -.I Invocation\^ -below.) -This file is typically used for -.I alias -and -.I function -definitions. -.TP -.B -.SM FCEDIT -Obsolete name for -the default editor name for the -.B hist -command. -.B -.SM FCEDIT -is not used when -.B -.SM HISTEDIT -is set. -.TP -.SM -.B FIGNORE -A pattern that defines the set of filenames that will be -ignored when performing filename matching. -.TP -.SM -.B FPATH -The search path for function definitions. -This path is searched when a function with the -.B \-u -attribute is referenced and when a command is not found. -If an executable file is found, then it is read and executed -in the current environment. -.TP -.SM -.B IFS -Internal field separators, -normally -.BR space , -.BR tab , -and -.B new-line -that are used to separate the results of -command substitution or parameter expansion -and to separate fields with the built-in command -.BR read . -The first character of the -.SM -.B IFS -variable is used to separate arguments for the -.B -"$\(**" -substitution. (See -.I Quoting -below.) -Each single occurrence of -an -.SM -.B IFS -character in the string to be split, -except -.BR space , -.BR tab , -and -.BR new-line , -separates a field. -One or more -.BR space , -.BR tab , -or -.B new-line -characters separate a field. -.TP -.B -.SM HISTEDIT -Name for -the default editor name for the -.B hist -command. -.TP -.SM -.B HISTFILE -If this variable is set when the shell is invoked, then -the value is the pathname of the file that will be -used to store the command history. -(See -.I "Command re-entry\^" -below.) -.TP -.SM -.B HISTSIZE -If this variable is set when the shell is invoked, then -the number of previously entered commands that -are accessible by this shell -will be greater than or equal to this number. -The default is 128. -.TP -.B -.SM HOME -The default argument (home directory) for the -.B cd -command. -.TP -.B -.SM LINES -If this variable is set, -the value is used to determine the column length for printing -.B select -lists. -Select lists will print vertically until about two-thirds of -.B -.SM LINES -lines are filled. -.TP -.B -.SM MAIL -If this variable is set to the name of a mail file -.I and\^ -the -.B -.SM MAILPATH -variable is not set, -then the shell informs the user of arrival of mail -in the specified file. -.TP -.B -.SM MAILCHECK -This variable specifies how often (in seconds) the -shell will check for changes in the modification time -of any of the files specified by the -.B -.SM MAILPATH -or -.B -.SM MAIL -variables. -The default value is 600 seconds. -When the time has elapsed -the shell will check before issuing the next prompt. -.TP -.B -.SM MAILPATH -A colon ( -.B : -) -separated list of file names. -If this variable is set -then the shell informs the user of -any modifications to the specified files -that have occurred within the last -.B -.SM MAILCHECK -seconds. -Each file name can be followed by a -.B ? -and a message that will be printed. -The message will undergo parameter expansion, command substitution, -and arithmetic substitution -with the variable -.B $_ -defined as the name of the file that has changed. -The default message is -.I you have mail in $_\^. -.TP -.B -.SM PATH -The search path for commands (see -.I Execution\^ -below). -The user may not change -.B \s-1PATH\s+1 -if executing under -.if \nZ=0 .B rsh -.if \nZ=1 .B rksh -(except in -.BR .profile\^). -.TP -.SM -.B PS1 -The value of this variable is expanded for parameter -expansion, command substitution, and arithmetic substitution to define the -primary prompt string which by default is -.RB `` "$\|\|\|" ''. -The character -.B ! -in the primary prompt string is replaced by the -.I command\^ -number (see -.I "Command Re-entry"\^ -below). -Two successive occurrences of -.B ! -will produce a single -.B ! -when the prompt string is printed. -.TP -.SM -.B PS2 -Secondary prompt string, by default -.RB `` "> \|" ''. -.TP -.SM -.B PS3 -Selection prompt string -used within a -.B select -loop, by default -.RB `` "#? \|" ''. -.TP -.SM -.B PS4 -The value of this variable is expanded for parameter evaluation, -command substitution, and arithmetic substitution -and precedes each line of an execution trace. -If omitted, the execution trace prompt is -.RB `` "+ \|" ''. -.TP -.SM -.B SHELL -The pathname of the -.I shell\^ -is kept in the environment. -At invocation, if the basename of this variable is -.BR rsh , -.BR rksh , -or -.BR krsh , -then the shell becomes restricted. -.TP -.B -.SM TMOUT -If set to a value greater than zero, -the -.B read -built-in command terminates after -.B -.SM TMOUT -seconds when input is from a terminal. -Otherwise, -the shell will terminate if a line is not entered within -the prescribed number of seconds while reading from a terminal. -(Note that the shell can be compiled with a maximum bound -for this value which cannot be exceeded.) -.TP -.B -.SM VISUAL -If the value of this variable ends in -.IR emacs , -.IR gmacs , -or -.I vi -then the corresponding option -(see Special Command -.B set -below) -will be turned on. -.PD -.RE -.PP -The shell gives default values to -\f3\s-1PATH\s+1\fP, \f3\s-1PS1\s+1\fP, \f3\s-1PS2\s+1\fP, -\f3\s-1PS3\s+1\fP, \f3\s-1PS4\s+1\fP, \f3\s-1MAILCHECK\s+1\fP, \f3\s-1HISTEDIT\s+1\fP, -\f3\s-1TMOUT\s+1\fP and \f3\s-1IFS\s+1\fP, -while -.SM -.BR HOME , -.SM -.BR SHELL , -.SM -.BR ENV , -and -.SM -.B MAIL -are -not set at all by the shell (although -.SM -.B HOME -.I is\^ -set by -.IR login (1)). -On some systems -.SM -.B MAIL -and -.SM -.B SHELL -are also -set by -.IR login (1). -.SS Field Splitting -After parameter expansion and command substitution, -the results of substitutions are scanned for the field separator -characters (those found in -.SM -.B IFS\^\c -) -and split into distinct fields where such characters are found. -Explicit null fields (\^\f3"\^"\fP or \f3\*\(fm\^\*\(fm\fP\^) are retained. -Implicit null fields -(those resulting from -.I parameters\^ -that have no values or command substitutions with no output) are removed. -.SS File Name Generation. -Following splitting, each field is scanned for the characters -.BR \(** , -.BR ? , -.BR ( , -and -.B \*(OK\^ -unless the -.B \-f -option has been set. -If one of these characters appears -then the word is regarded as a -.IR pattern . -Each file name component that contains any pattern character -is replaced with a lexicographically sorted set of names -that matches the pattern -from -that directory. -If no file name is found that matches the pattern, then -that component of the filename is left unchanged. -If -.SM -.B FIGNORE -is set, -then each file name component -that matches the pattern defined by the value of -.SM -.B FIGNORE -is ignored when generating the matching filenames. -The names -.B . -and -.B .. -are also ignored. -If -.SM -.B FIGNORE -is not set, -the character -.B . -at the start of each file name component -will be ignored unless the first character of the pattern -corresponding to this component is the character -.BR . -itself. -Note, that for other -uses of pattern matching the -.B / -and -.B . -are not treated specially. -.PP -.PD 0 -.RS -.TP -.B \(** -Matches any string, including the null string. -.TP -.B ? -Matches any single character. -.TP -.BR \*(OK \^.\|.\|.\^ \*(CK -Matches any one of the enclosed characters. -A pair of characters separated by -.B \- -matches any -character lexically between the pair, inclusive. -If the first character following the opening -.B \*(OK\^ -is a -.B ! -then any character not enclosed is matched. -A -.B \- -can be included in the character set by putting it as the -first or last character. -.br -Within -.B \*(OK\^ -and -.B \*(CK\^ -character classes can be specified with the syntax -\f3[:\fP\f2class\fP\f3:]\fP -where class is one of the following: -.if t .RS -.PP -.B -.if n alnum alpha cntrl digit graph lower print punct space upper xdigit -.if t alnum alpha cntrl digit graph lower print punct space upper xdigit -.if t .RE -.PD -.RE -A -.I pattern-list -is a list of one or more patterns separated from each other -with a -.BR \(bv . -Composite patterns can be formed with one or more of the following: -.PD 0 -.RS -.TP -\f3?(\fP\f2pattern-list\^\fP\f3)\fP -Optionally matches any one of the given patterns. -.TP -\f3*(\fP\f2pattern-list\^\fP\f3)\fP -Matches zero or more occurrences of the given patterns. -.TP -\f3+(\fP\f2pattern-list\^\fP\f3)\fP -Matches one or more occurrences of the given patterns. -.TP -\f3\&@\&(\fP\f2pattern-list\^\fP\f3)\fP -Matches exactly one of the given patterns. -.br -.TP -\f3!(\fP\f2pattern-list\^\fP\f3)\fP -Matches anything except one of the given patterns. -.PD -.RE -.SS Quoting. -Each of the -.I metacharacters\^ -listed earlier (see -.I Definitions\^ -above) -has a special meaning to the shell -and causes termination of a word unless quoted. -A character may be -.I quoted\^ -(i.e., made to stand for itself) -by preceding -it with a -.BR \e . -The pair -.B \enew-line -is removed. -All characters enclosed between a pair of single quote marks -(\^\f3\(fm\^\(fm\fP\^) -that is not preceded by a -.B $ -are quoted. -A single quote cannot appear within the single quotes. -A single quoted string preceded an unquoted -.B $ -is processed as an ANSI-C string -except that -.B \e0 -within the string causes the remainder of the -string to be ignored and -.B \eE -is equivalent to the escape characer -(ascii -.BR 033 ). -Inside double quote marks -(\f3"\^"\fP), -parameter and command substitution occur and -.B \e -quotes the characters -.BR \e , -.BR \*` , -\f3"\fP, -and -.BR $ . -The meaning of -.B "$\(**" -and -.B "$@" -is identical when not quoted or when used as a variable assignment value -or as a file name. -However, when used as a command argument, -.B -"$\(**" -is equivalent to -\f3"$1\fP\f2d\fP\f3\|$2\fP\f2d\fP\|.\|.\|.\f3"\fP, -where -.I d -is the first character of the -.SM -.B IFS -variable, whereas -.B -"$@" -is equivalent to -.B -"$1"\| -.B -"$2"\| -\&.\|.\|.\^. -Inside grave quote marks -(\f3\*`\^\*`\fP), -.B \e -quotes the characters -.BR \e , -.BR \*` , -and -.BR $ . -If the grave quotes occur within double quotes then -.B \e -also quotes the character -\f3"\fP. -.PP -The special meaning of reserved words or aliases can be removed by quoting any -character of the reserved word. -The recognition of function names or built-in command names listed below -cannot be altered by quoting them. -.SS Arithmetic Evaluation. -The shell performs arithmetic evaluation for -arithmetic substitution, to evaluate an arithmetic command, -to evaluate an indexed array subscript, -and to evaluate arguments to -the built-in commands -.B shift\^ -and -.BR let . -Evaluations are performed using -double precision floating point -arithmetic. -Floating point constants follow the ANSI-C programming language -conventions. -Integer constants are of the form -\*(OK\f2base\f3#\^\f1\*(CK\f2n\^\fP -where -.I base\^ -is a decimal number between two and sixty-four -representing the arithmetic base -and -.I n\^ -is a number in that base. -The digits above 9 are represented -by the lower case characters, the upper case characters, -.BR @ , -and -.B _ -respectively. -For bases less than 36, upper and lower case -character can be used interchangeably. -If -.I base\^ -is omitted -then base 10 is used. -.PP -An arithmetic expression uses the same syntax, precedence, and -associativity of -expression as the C language. -All the C language operators -that apply to floating point quantities can be used. -In addition, when the value of an arithmetic variable -or sub-expression can be represented as a long integer, -all C language integer arithmetic operations can be performed. -Variables can be referenced by name within an arithmetic expression -without using the parameter expansion syntax. -When a variable is referenced, its value is evaluated as -an arithmetic expression. -The following math library functions can be used with an arithmetic -expression: -.if t .RS -.PP -.B -.if n abs acos asin atan cos cosh exp int log sin sinh sqrt tan tanh -.if t abs acos asin atan cos cosh exp int log sin sinh sqrt tan tanh -.if t .RE -.PP -An internal representation of a -.I variable\^ -as a double precision floating point can be specified with the -\f3\-E\fP \*(OK\f2n\^\fP\*(CK -or -\f3\-F\fP \*(OK\f2n\^\fP\*(CK -option of the -.B typeset -special built-in command. -The -.B \-E -option causes the expansion of the value to be represented using -scientific notation when it is expanded. -The optional option argument -.I n -defines the number of significant figures. -The -.B \-F -option causes the expansion to be represented as a floating decimal number -when it is expanded. -The optional option argument -.I n -defines the number of places after the decimal point in this case. -.PP -An internal integer representation of a -.I variable\^ -can be specified with the -\f3\-i\fP \*(OK\f2n\^\fP\*(CK -option of the -.B typeset -special built-in command. -The optional option argument -.I n -specifies an arithmetic base to be used when expanding the variable. -If you do not specify an arithmetic base, -the first assignment to the -variable determines the arithmetic base. -.PP -Arithmetic evaluation is performed on the value of each -assignment to a variable with the -.BR \-E , -.BR \-F , -or -.B \-i -attribute. -Assigning a floating point number to a -variable whose type is an integer causes the fractional -part to be truncated. -.PP -.SS Prompting. -When used interactively, -the shell prompts with the value of -.SM -.B PS1 -after expanding it for parameter expansion, command substitution, and -arithmetic substitution, -before reading a command. -In addition, each single -.B ! -in the prompt is replaced by the command number. -A -.B !! -is required to place -.B ! -in the prompt. -If at any time a new-line is typed and further input is needed -to complete a command, then the secondary prompt -(i.e., the value of -.BR \s-1PS2\s+1 ) -is issued. -.SS Conditional Expressions. -A -.I "conditional expression" -is used with the -.B [[ -compound command to test attributes of files and to compare -strings. -Field splitting and file name generation are -not performed on the words between -.B [[ -and -.BR ]] . -Each expression can be constructed from one or more -of the following unary or binary expressions: -.PD 0 -.TP -\f2string\fP -True, if -.I string -is not null. -.TP -\f3\-a\fP \f2file\fP -Same is \f3\-e\fP below. -This is obsolete. -.TP -\f3\-b\fP \f2file\fP -True, if -.I file -exists and is a block special file. -.TP -\f3\-c\fP \f2file\fP -True, if -.I file -exists and is a character special file. -.TP -\f3\-d\fP \f2file\fP -True, if -.I file -exists and is a directory. -.TP -\f3\-e\fP \f2file\fP -True, if -.I file -exists. -.TP -\f3\-f\fP \f2file\fP -True, if -.I file -exists and is an ordinary file. -.TP -\f3\-g\fP \f2file\fP -True, if -.I file -exists and is has its setgid bit set. -.TP -\f3\-k\fP \f2file\fP -True, if -.I file -exists and is has its sticky bit set. -.TP -\f3\-n\fP \f2string\fP -True, if length of -.I string -is non-zero. -.TP -\f3\-o\fP \f2option\fP -True, if option named -.I option -is on. -.TP -\f3\-p\fP \f2file\fP -True, if -.I file -exists and is a fifo special file or a pipe. -.TP -\f3\-r\fP \f2file\fP -True, if -.I file -exists and is readable by current process. -.TP -\f3\-s\fP \f2file\fP -True, if -.I file -exists and has size greater than zero. -.TP -\f3\-t\fP \f2fildes\fP -True, if file descriptor number -.I fildes -is open and associated with a terminal device. -.TP -\f3\-u\fP \f2file\fP -True, if -.I file -exists and is has its setuid bit set. -.TP -\f3\-w\fP \f2file\fP -True, if -.I file -exists and is writable by current process. -.TP -\f3\-x\fP \f2file\fP -True, if -.I file -exists and is executable by current process. -If -.I file -exists and is a directory, then true if the current process -has permission to search in the directory. -.TP -\f3\-z\fP \f2string\fP -True, if length of -.I string -is zero. -.TP -\f3\-L\fP \f2file\fP -True, if -.I file -exists and is a symbolic link. -.TP -\f3\-O\fP \f2file\fP -True, if -.I file -exists and is owned by the effective user id of this process. -.TP -\f3\-G\fP \f2file\fP -True, if -.I file -exists and its group matches the effective group id of this process. -.TP -\f3\-S\fP \f2file\fP -True, if -.I file -exists and is a socket. -.TP -\f2file1\fP \f3\-nt\fP \f2file2\fP -True, if -.I file1 -exists and is newer than -.IR file2 . -.TP -\f2file1\fP \f3\-ot\fP \f2file2\fP -True, if -.I file1 -exists and is older than -.IR file2 . -.TP -\f2file1\fP \f3\-ef\fP \f2file2\fP -True, if -.I file1 -and -.I file2 -exist and refer to the same file. -.TP -\f2string\fP \f3==\fP \f2pattern\fP -True, if -.I string -matches -.IR pattern . -Any part of -.I pattern\^ -can be quoted to cause it to be matched as a string. -.TP -\f2string\fP \f3=\fP \f2pattern\fP -Same as \f3==\fP above, but is obsolete. -.TP -\f2string\fP \f3!=\fP \f2pattern\fP -True, if -.I string -does not match -.IR pattern . -.TP -\f2string1\fP \f3<\fP \f2string2\fP -True, if -.I string1 -comes before -.I string2 -based on ASCII value of their characters. -.TP -\f2string1\fP \f3>\fP \f2string2\fP -True, if -.I string1 -comes after -.I string2 -based on ASCII value of their characters. -.PP -The following obsolete arithmetic comparisons are also permitted: -.PD 0 -.TP -\f2exp1\fP \f3\-eq\fP \f2exp2\fP -True, if -.I exp1 -is equal to -.IR exp2 . -.TP -\f2exp1\fP \f3\-ne\fP \f2exp2\fP -True, if -.I exp1 -is not equal to -.IR exp2 . -.TP -\f2exp1\fP \f3\-lt\fP \f2exp2\fP -True, if -.I exp1 -is less than -.IR exp2 . -.TP -\f2exp1\fP \f3\-gt\fP \f2exp2\fP -True, if -.I exp1 -is greater than -.IR exp2 . -.TP -\f2exp1\fP \f3\-le\fP \f2exp2\fP -True, if -.I exp1 -is less than or equal to -.IR exp2 . -.TP -\f2exp1\fP \f3\-ge\fP \f2exp2\fP -True, if -.I exp1 -is greater than or equal to -.IR exp2 . -.PD -.PP -In each of the above expressions, if -.I file -is of the form -\f3/dev/fd/\fP\f2n\fP, -where -.I n -is an integer, -then the test is applied to the open file whose -descriptor number is -.IR n . -.PP -A compound expression can be constructed from these primitives by -using any of the following, listed in decreasing order of precedence. -.PD 0 -.TP -\f3(\fP\f2expression\fP\f3)\fP -True, if -.I expression -is true. -Used to group expressions. -.TP -\f3!\fP \f2expression\fP -True if -.I expression -is false. -.TP -\f2expression1\fP \f3&&\fP \f2expression2\fP -True, if -.I expression1 -and -.I expression2 -are both true. -.TP -\f2expression1\fP \f3\(bv\(bv\fP \f2expression2\fP -True, if either -.I expression1 -or -.I expression2 -is true. -.PD -.SS Input/Output. -Before a command is executed, its input and output -may be redirected using a special notation interpreted by the shell. -The following may appear anywhere in a simple-command -or may precede or follow a -.I command\^ -and are -.I not\^ -passed on to the invoked command. -Command substitution, parameter expansion, -and arithmetic substitution occur before -.I word\^ -or -.I digit\^ -is used except as noted below. -File name generation -occurs only if the shell is interactive and -the pattern matches a single file, -Field splitting is not performed. -.TP 14 -.BI < word -Use file -.I word\^ -as standard input (file descriptor 0). -.TP -.BI > word -Use file -.I word\^ -as standard output (file descriptor 1). -If the file does not exist then it is created. -If the file exists, and the -.B noclobber -option is on, -this causes an error; -otherwise, it is truncated to zero length. -.TP -.BI >| word -Sames as -.BR > , -except that it overrides the -.B noclobber -option. -.TP -.BI >> word -Use file -.I word\^ -as standard output. -If the file exists then output is appended to it (by first seeking to the end-of-file); -otherwise, the file is created. -.TP -.BI <> word -Open file -.I word\^ -for reading and writing -as standard input. -.TP -\f3<<\fP\*(OK\f3\-\fP\*(CK\f2word\fP -The shell input is read up to a line that is the same as -.IR word -after any quoting has been removed remove, -or to an end-of-file. -No parameter substitution, command substitution, arithmetic substitution or -file name generation is performed on -.IR word . -The resulting document, -called a -.IR here-document , -becomes -the standard input. -If any character of -.I word\^ -is quoted, then no interpretation -is placed upon the characters of the document; -otherwise, parameter expansion, command substitution, and arithmetic -substitution occur, -.B \enew-line -is ignored, -and -.B \e -must be used to quote the characters -.BR \e , -.BR $ , -.BR \*` . -If -.B \- -is appended to -.BR << , -then all leading tabs are stripped from -.I word\^ -and from the document. -.TP -.BI <& digit -The standard input is duplicated from file descriptor -.I digit -(see -.IR dup (2)). -Similarly for the standard output using -\f3>&\^\f2digit\fR. -.TP -.B <&\- -The standard input is closed. -Similarly for the standard output using -.BR >&\- . -.TP -.B <&p -The input from the co-process is moved to standard input. -.TP -.B >&p -The output to the co-process is moved to standard output. -.PP -If one of the above is preceded by a digit, -then the -file descriptor number referred to is that specified -by the digit -(instead of the default 0 or 1). -For example: -.RS -.PP -\&.\|.\|. \|2>&1 -.RE -.PP -means file descriptor 2 is to be opened -for writing as a duplicate -of file descriptor 1. -.PP -The order in which redirections are specified is significant. -The shell evaluates each redirection in terms of the -.RI ( "file descriptor" ", " file ) -association at the time of evaluation. -For example: -.RS -.PP -\&.\|.\|. \|1>\f2fname\^\fP 2>&1 -.RE -.PP -first associates file descriptor 1 with file -.IR fname\^ . -It then associates file descriptor 2 with the file associated with file -descriptor 1 (i.e. -.IR fname\^ ). -If the order of redirections were reversed, file descriptor 2 would be associated -with the terminal (assuming file descriptor 1 had been) and then file descriptor -1 would be associated with file -.IR fname\^ . -.PP -If a command is followed by -.B & -and job control is not active, -then the default standard input -for the command -is the empty file -.BR /dev/null . -Otherwise, the environment for the execution of a command contains the -file descriptors of the invoking shell as modified by -input/output specifications. -.SS Environment. -The -.I environment\^ -(see -.IR environ (7)) -is a list of name-value pairs that is passed to -an executed program in the same way as a normal argument list. -The names must be -.I identifiers\^ -and the values are character strings. -The shell interacts with the environment in several ways. -On invocation, the shell scans the environment -and creates a -variable -for each name found, -giving it the corresponding value and attributes and marking it -.IR export . -Executed commands inherit the environment. -If the user modifies the values of these -variables -or creates new ones, -using the -.B export -or -.B typeset \-x -commands they become part of the -environment. -The environment seen by any executed command is thus composed -of any name-value pairs originally inherited by the shell, -whose values may be modified by the current shell, -plus any additions -which must be noted in -.B export -or -.B typeset \-x -commands. -.PP -The environment for any -.I simple-command\^ -or function -may be augmented by prefixing it with one or more variable assignments. -A variable assignment argument is a word of the form -.IR identifier=value . -Thus: -.RS -.PP -\s-1TERM\s+1=450 \|cmd \|args and -.br -(export \|\s-1TERM\s+1; \|\s-1TERM\s+1=450; \|cmd \|args) -.RE -.PP -are equivalent (as far as the above execution of -.I cmd\^ -is concerned except for special built-in commands listed below \- -those that are -preceded with a dagger). -.PP -If the obsolete -.B \-k -option is set, -.I all\^ -variable assignment arguments are placed in the environment, -even if they occur after the command name. -The following -first prints -.B "a=b c" -and then -.BR c : -.PP -.RS -.nf -echo \|a=b \|c -set \|\-k -echo \|a=b \|c -.fi -.RE -This feature is intended for use with scripts written -for early versions of the shell and its use in new scripts -is strongly discouraged. -It is likely to disappear someday. -.SS Functions. -.PP -For historical reasons, there are two -ways to define functions, -the -.IB name (\^) -syntax and -the -.B function -.I name\^ -syntax, described in the -.I Commands -section above. -Shell functions are read in and stored internally. -Alias names are resolved when the function is read. -Functions are executed like commands with the arguments -passed as positional parameters. -(See -.I Execution -below.) -.PP -Functions defined by the -.B function -.I name -syntax and called by name execute in the same process as the caller and -share all files -and present working directory with the -caller. -Traps caught by the caller are reset to their default action -inside the function. -A trap condition that is not caught or ignored by the -function causes the function to terminate and the condition -to be passed on to the caller. -A trap on -.SM -.B EXIT -set inside a function -is executed after the function completes in the environment -of the caller. -Ordinarily, -variables are shared between the calling program -and the function. -However, -the -.B typeset -special built-in command used within a function -defines local variables whose scope includes -the current function and -all functions it calls. -Errors within functions return control to the caller. -.PP -Functions defined with the -.IB name (\^) -syntax and functions defined with the -.B function -.I name -syntax that are invoked with the \f3\s+2.\s-2\fP -special built-in -are executed in the caller's -environment and share all variables -and traps with the caller. -Errors within these function executions cause the script that contains -them to abort. -.PP -The special built-in command -.B return -is used to return -from function calls. -.PP -Function names -can be listed with the -.B \-f -or -.B +f -option of the -.B typeset -special built-in command. -The text of functions, when available, will also -be listed with -.BR \-f . -Functions can be undefined with the -.B \-f -option of the -.B unset -special built-in command. -.PP -Ordinarily, functions are unset when the shell executes a shell script. -Functions that need to be defined across separate -invocations of the shell should -be placed in a directory and the -.B -.SM -FPATH -variable should contains the name of this directory. -They may also -be specified in the -.B -.SM -ENV -file. -.SS Jobs. -.PP -If the -.B monitor -option of the -.B set -command is turned on, -an interactive shell associates a \fIjob\fR with each pipeline. -It keeps -a table of current jobs, printed by the -.B jobs -command, and assigns them small integer numbers. -When a job is started asynchronously with -.BR & , -the shell prints a line which looks -like: -.PP -.DT - [1] 1234 -.PP -indicating that the job which was started asynchronously was job number -1 and had one (top-level) process, whose process id was 1234. -.PP -This paragraph and the next require features that are -not in all versions of UNIX and may not apply. -If you are running a job and wish to do something else you may hit the key -\fB^Z\fR (control-Z) which sends a STOP signal to the current job. -The shell will then normally indicate that the job has been `Stopped', -and print another prompt. -You can then manipulate the state of this job, -putting it in the background with the -.B bg -command, or run some other -commands and then eventually bring the job back into the foreground with -the foreground command -.BR fg . -A \fB^Z\fR takes effect immediately and -is like an interrupt in that pending output and unread input are discarded -when it is typed. -.PP -A job being run in the background will stop if it tries to read -from the terminal. -Background jobs are normally allowed to produce output, -but this can be disabled by giving the command ``stty tostop''. -If you set this -tty option, then background jobs will stop when they try to produce -output like they do when they try to read input. -.PP -There are several ways to refer to jobs in the shell. -A job can be referred to by the process id of any process of the job -or by one of the following: -.PD 0 -.TP -.BI % number -The job with the given number. -.TP -.BI % string -Any job whose command line begins with -.IR string . -.TP -.BI %? string -Any job whose command line contains -.IR string . -.TP -.BI %% -Current job. -.TP -.BI %+ -Equivalent to -.BR %% . -.TP -.BI %\- -Previous job. -.PD -.PP -The shell learns immediately whenever a process changes state. -It normally informs you whenever a job becomes blocked so that -no further progress is possible, but only just before it prints -a prompt. -This is done so that it does not otherwise disturb your work. -The -.B notify -option causes -the shell to print these job change messages -as soon as they occur. -.PP -When the -.B monitor -option is on, each background job that completes -triggers any trap set for -.BR CHLD . -.PP -When you try to leave the shell while jobs are running or stopped, you will -be warned that `You have stopped(running) jobs.' -You may use the -.B jobs -command to see what they are. -If you immediately try to -exit again, the shell will not warn you a second time, and the stopped -jobs will be terminated. -When a login shell receives a HUP signal, it sends -a HUP signal to each job that has not been disowned witha the -.B disown -built-in command described below. -.SS Signals. -The \s-1INT\s+1 and \s-1QUIT\s+1 signals for an invoked -command are ignored if the command is followed by -.B & -and the -.B monitor -option is not active. -Otherwise, signals have the values -inherited by the shell from its parent -(but see also -the -.B trap -built-in command below). -.SS Execution. -Each time a command is read, the above substitutions -are carried out. -If the command name matches one -of the -.I "Special built-in Commands\^" -listed below, -it is executed within the -current shell process. -Next, the command name is checked to see if -it matches a user defined function. -If it does, -the positional parameters are saved -and then reset to the arguments of the -.I function\^ -call. -When the -.I function\^ -completes or issues a -.BR return , -the positional parameter list is restored. -For functions defined with the -.B function -.I name\^ -syntax, -any trap set on -.SM -.B EXIT -within the function is executed. -The value of a -.I function\^ -is the value of the last command executed. -A function is also executed in the -current shell process. -If a command name is not a -.I "special built-in command\^" -or a user defined -.IR function , -but it is one of the built-in commands listed below -it is executed in the current shell process. -.PP -The shell variable -.B -.SM PATH -defines the search path for -the directory containing the command. -Alternative directory names are separated by -a colon -.RB ( : ). -The default path is -.B /bin:/usr/bin: -(specifying -.BR /bin , -.BR /usr/bin , -and the current directory -in that order). -The current directory can be specified by -two or more adjacent colons, or by a colon -at the beginning or end of the path list. -If the command name contains a \f3/\fP then the search path -is not used. -Otherwise, each directory in the path is -searched for an executable file that is not a directory. -If the shell -determines that there is a built-in version -of a command corresponding to a given pathname, -this built-in is invoked in the current process. -A process is created and -an attempt is made to execute the command via -.IR exec (2). -If the file has execute permission but is not an -.B a.out -file, -it is assumed to be a file containing shell commands. -A separate shell is spawned to read it. -All non-exported variables are removed in this case. -If the shell command -file doesn't have read permission, -or if the -.I setuid -and/or -.I setgid -bits are set on the file, -then the shell executes an agent whose job it is to -set up the permissions and execute the shell with the -shell command file passed down as an open file. -A parenthesized command is executed in -a sub-shell without removing non-exported variables. -.SS Command Re-entry. -The text of the last -.B -.SM -HISTSIZE -(default 128) -commands entered from a terminal device -is saved in a -.I history -file. -The file -.B \s-1$HOME\s+1/.sh_history -is used if the -.B -.SM -HISTFILE -variable is not set -or if the file it names is not writable. -A shell can access the commands of -all -.I interactive -shells which use the same named -.SM -.BR HISTFILE . -The built-in command -.B hist\^ -is used to list or -edit a portion of this file. -The portion of the file to be edited or listed can be selected by -number or by giving the first character or -characters of the command. -A single command or range of commands can be specified. -If you do not specify an editor program as -an argument to -.B hist\^ -then the value of the variable -.SM -.B HISTEDIT -is used. -If -.SM -.B HISTEDIT -is unset, the obsolete variable -.SM -.B FCEDIT -is used. -If -.SM -.B FCEDIT -is not defined then -.B /bin/ed -is used. -The edited command(s) is printed and re-executed upon -leaving the editor unless you quit without writing. -The -.B \-s -option -( -an in obsolete versions, the editor name -.B \- -) -is used to skip the editing phase and -to re-execute the command. -In this case a substitution parameter of the form -\f2old\fP\f3=\fP\f2new\fP -can be used to modify the command before execution. -For example, with the preset alias -.BR r , -which is aliased to -.BR "\(fmhist \-s\(fm" , -typing -`\f3r bad=good c\fP' -will re-execute the most recent command which starts with the letter -.BR c , -replacing the first occurrence of the string -.B bad -with the string -.BR good . -.SS In-line Editing Options -Normally, each command line entered from a terminal device is simply -typed followed by a \f3new-line\fP (`RETURN' or `LINE\ FEED'). -If either the -.BR emacs , -.BR gmacs , -or -.B vi -option is active, the user can edit the command line. -To be in either of these edit modes -.B set -the corresponding -option. -An editing option is automatically selected each time the -.SM -.B VISUAL -or -.SM -.B EDITOR -variable is assigned a value ending in either of these -option names. -.PP -The editing features require that the user's terminal -accept `RETURN' as carriage return without line feed -and that a space (`\ ') must overwrite the current character on -the screen. -.PP -The editing modes implement a concept where the user is looking through a -window at the current line. -The window width is the value of -.SM -.B COLUMNS -if it is defined, otherwise 80. -If the window width is too small to display the prompt and leave -at least 8 columns to enter input, the prompt is truncated from the -left. -If the line is longer than the window width minus two, a mark is -displayed at the end of the window to notify the user. -As the cursor moves and reaches the window boundaries the window will be -centered about the cursor. -The mark is a -.BR > " (<" , -.BR * ) -if the line extends on the -right (left, both) side(s) of the window. -.PP -The search commands in each edit mode provide access to the history file. -Only strings are matched, not patterns, although a leading -.B ^ -in the string restricts the match -to begin at the first character in the line. -.PP -Each of the edit modes has an operation to list the files -or commands that match a partially entered word. -When applied to the first word on the line, -or the first word after a -.BR ; , -.BR \(bv , -.BR & , -or -.BR ( , -and the word does not begin with -.B \(ap -or contain a -.BR / , -the list of aliases, functions, and executable commands -defined by the -.B -.SM PATH -variable that could match the partial word is displayed. -Otherwise, the list of files that match the given -word is displayed. -If the partially entered word does not contain any -file expansion characters, a -.B * -is appended before generating these lists. -After displaying the generated list, the input line -is redrawn. -These operations are called command name listing and file name listing, -respectively. -There are additional operations, referred to as command name -completion and file name completion, which compute the list -of matching commands or files, but instead of printing the list, -replace -the current word with a complete or partial match. -For file name completion, -if the match is unique, a -.B / -is appended if the file is a directory and a space is -appended if the file is not a directory. -Otherwise, the longest common prefix for all the matching -files replaces the word. -For command name completion, only the portion of the file names -after the last -.B / -are used to find the longest command prefix. -If only a single name matches this prefix, then the -word is replaced with the command name followed by a space. -.SS Key Bindings. -The -.B -.SM KEYBD -trap can be used to intercept keys as they are typed -and change the characters that are actually seen by -the shell. -This trap is executed after each character -( or sequence of characters when the first character is -.B ESC -) is entered while reading from a terminal. -The variable -.B .sh.edchar -contains the character or character sequence which -generated the trap. -Changing the value of -.B .sh.edchar -in the trap action causes the shell to behave as if the -new value were entered from the keyboard rather than -the original value. -.PP -The variable -.B .sh.edcol -is set to the input column number of the cursor at the time -of the input. -The variable -.B .sh.edmode -is set to -.B ESC -when in vi insert mode (see below) and is null otherwise. -By prepending -.B ${.sh.editmode} -to a value assigned to -.B .sh.edchar -it will cause the shell -to change to control mode if it is not already in this mode. -.PP -This trap is not invoked for characters entered as arguments to -editing directives, or while reading input for a character search. -.SS Emacs Editing Mode. -This mode is entered by enabling either the -.I emacs -or -.I gmacs -option. -The only difference between these two modes is the way -they handle -.BR ^T . -To edit, the user -moves the cursor to the point needing correction and -then inserts or deletes characters or words as needed. -All the editing commands are control characters or escape -sequences. -The notation for control characters is caret ( -.B ^ -) followed -by the character. -For example, -.B ^F -is the notation for control -.BR F . -This is entered by depressing `f' while holding down the -`CTRL' (control) key. -The `SHIFT' key is -.I not -depressed. -(The notation -.B ^? -indicates the DEL (delete) key.) -.PP -The notation for escape sequences is -.B M- -followed by a -character. -For example, -.B M-f -(pronounced Meta f) -is entered by depressing ESC -(ascii -.BR 033 ) -followed by `f'. -.RB ( M-F -would be the notation for ESC followed by `SHIFT' (capital) `F'.) -.PP -All edit commands -operate from any place on the line -(not just at the beginning). -Neither the "RETURN" nor the "LINE FEED" key is -entered after edit commands except when noted. -.PP -.PD 0 -.TP 10 -.BI ^F -Move cursor forward (right) one character. -.PP -.TP 10 -.BI M-f -Move cursor forward one word. -(The -.B emacs -editor's idea of a word is a string of characters -consisting of only letters, digits and underscores.) -.PP -.TP 10 -.BI ^B -Move cursor backward (left) one character. -.PP -.TP 10 -.BI M-b -Move cursor backward one word. -.PP -.TP 10 -.BI ^A -Move cursor to start of line. -.PP -.TP 10 -.BI ^E -Move cursor to end of line. -.PP -.TP 10 -.BI ^] char -Move cursor forward to character -.I char -on current line. -.PP -.TP 10 -.BI M-^] char -Move cursor backward to character -.I char -on current line. -.PP -.TP 10 -.BI ^X^X -Interchange the cursor and mark. -.PP -.TP 10 -.I erase -(User defined erase character as defined -by the -.IR stty (1) -command, usually -.B ^H -or -.BR # .) -Delete previous character. -.PP -.TP 10 -.BI ^D -Delete current character. -.PP -.TP 10 -.BI M-d -Delete current word. -.PP -.TP 10 -.BI M-^H -(Meta-backspace) Delete previous word. -.PP -.TP 10 -.BI M-h -Delete previous word. -.PP -.TP 10 -.BI M-^? -(Meta-DEL) Delete previous word (if your interrupt character is -.B ^? -(DEL, the default) then this command will not work). -.PP -.TP 10 -.BI ^T -Transpose current character with next character in -.I emacs -mode. -Transpose two previous characters in -.I gmacs -mode. -.PP -.TP 10 -.BI ^C -Capitalize current character. -.PP -.TP 10 -.BI M-c -Capitalize current word. -.PP -.TP 10 -.BI M-l -Change the current word to lower case. -.PP -.TP 10 -.BI ^K -Delete from the cursor to the end of the line. -If preceded by a numerical parameter whose value is less than the -current cursor position, then delete from given position -up to the cursor. -If preceded by a numerical parameter whose value is greater than the -current cursor position, then delete from cursor up to -given cursor position. -.PP -.TP 10 -.BI ^W -Kill from the cursor to the mark. -.PP -.TP 10 -.BI M-p -Push the region from the cursor to the mark on the stack. -.PP -.TP 10 -.I kill -(User defined kill character as defined -by the stty command, usually -.B ^G -or -.BR @ .) -Kill the entire current line. -If two -.I kill -characters are entered in succession, all -kill characters from then on cause a line feed -(useful when using paper terminals). -.PP -.TP 10 -.BI ^Y -Restore last item removed from line. (Yank item back to the line.) -.PP -.TP 10 -.BI ^L -Line feed and print current line. -.PP -.TP 10 -.BI ^@ -(Null character) Set mark. -.PP -.TP 10 -.BI M- space -(Meta space) Set mark. -.PP -.TP 10 -.BI ^J -(New\ line) Execute the current line. -.PP -.TP 10 -.BI ^M -(Return) Execute the current line. -.PP -.TP 10 -.I eof -End-of-file character, -normally -.BR ^D , -is processed as an End-of-file only -if the current line is null. -.PP -.TP 10 -.BI ^P -Fetch previous command. -Each time -.B ^P -is entered -the previous command back in time is accessed. -Moves back one line when not on the first line of a multi-line command. -.PP -.TP 10 -.BI M-< -Fetch the least recent (oldest) history line. -.PP -.TP 10 -.BI M-> -Fetch the most recent (youngest) history line. -.PP -.TP 10 -.BI ^N -Fetch next command line. -Each time -.B ^N -is entered -the next command line forward in time is accessed. -.PP -.TP 10 -.BI ^R string -Reverse search history for a previous command line containing -.IR string . -If a parameter of zero is given, the search is forward. -.I String -is terminated by a "RETURN" or "NEW\ LINE". -If string is preceded by a -.BR ^ , -the matched line must begin with -.IR string . -If -.I string -is omitted, -then the next command line containing the most recent -.I string -is accessed. -In this case a parameter of zero -reverses the direction of the search. -.PP -.TP 10 -.B ^O -Operate \- Execute the current line and fetch -the next line relative to current line from the -history file. -.PP -.TP 10 -.BI M- digits -(Escape) Define numeric parameter, the digits -are taken as a parameter to the next command. -The commands that accept a parameter are -.BR ^F , -.BR ^B , -.IR erase , -.BR ^C , -.BR ^D , -.BR ^K , -.BR ^R , -.BR ^P , -.BR ^N , -.BR ^] , -.BR M-. , -.BR M-^] , -.BR M-_ , -.BR M-b , -.BR M-c , -.BR M-d , -.BR M-f , -.BR M-h , -.B M-l -and -.BR M-^H . -.PP -.TP 10 -.BI M- letter -Soft-key \- Your alias list is searched for an -alias by the name -.BI _ letter -and if an alias of this name is defined, its -value will be inserted on the input queue. -The -.I letter -must not be one of the above meta-functions. -.PP -.TP 10 -.BI M-[ letter -Soft-key \- Your alias list is searched for an -alias by the name -.BI _\&_ letter -and if an alias of this name is defined, its -value will be inserted on the input queue. -The can be used to program functions keys on many terminals. -.PP -.TP 10 -.B M-. -The last word of the previous command is inserted -on the line. -If preceded by a numeric parameter, the value -of this parameter determines which word to insert rather than -the last word. -.PP -.TP 10 -.B M-_ -Same as -.BR M-. . -.PP -.TP 10 -.B M-* -Attempt file name generation on the current word. -An asterisk is appended if the word doesn't match any file -or contain any special -pattern characters. -.PP -.TP 10 -Command or file name completion as described above. -.PP -.TP 10 -.B M-= -Command or file name listing as described above. -.PP -.TP 10 -.BI ^U -Multiply parameter of next command by 4. -.PP -.TP 10 -.BI \e -Escape next character. -Editing characters, the user's erase, kill and -interrupt (normally -.BR ^? ) -characters -may be entered -in a command line or in a search string if preceded by a -.BR \e . -The -.B \e -removes the next character's -editing features (if any). -.PP -.TP 10 -.BI ^V -Display version of the shell. -.PP -.TP 10 -.BI M-\# -If the line does not begin with a -.BR \# , -a -.B \# -is inserted -at the beginning of the line -and after each new-line, -and the line is entered. -This causes a comment to be inserted in the history file. -If the line begins with a -.BR \# , -the -.B \# -is deleted and one -.B \# -after each new-line is also deleted. -.PD -.SS Vi Editing Mode. -There are two typing modes. -Initially, when you enter a command you are in the -.I input\^ -mode. -To edit, the user enters -.I control\^ -mode by typing ESC -.RB ( 033 ) -and moves the cursor to the point needing correction and -then inserts or deletes characters or words as needed. -Most control commands accept an optional repeat -.I count -prior to the command. -.P -When in -.B vi -mode on most systems, -canonical processing is initially enabled and the -command will be echoed again if the speed is 1200 baud or greater and it -contains any control characters or less than one second has elapsed -since the prompt was printed. -The ESC character terminates canonical processing for the remainder of the command -and the user can then modify the command line. -This scheme has the advantages of canonical processing with the type-ahead -echoing of raw mode. -.P -If the option -.B viraw\^ -is also set, the terminal will always have canonical processing -disabled. -This mode is implicit for systems that do not support two -alternate end of line delimiters, -and may be helpful for certain terminals. -.SS "\ \ \ \ \ Input Edit Commands" -.PP -.RS -By default the editor is in input mode. -.PD 0 -.TP 10 -.I erase -(User defined erase character as defined -by the stty command, usually -.B ^H -or -.BR # .) -Delete previous character. -.TP 10 -.BI ^W -Delete the previous blank separated word. -One some systems the \f3viraw\fP option -may be required for this to work. -.TP 10 -.I eof -As the first character of the line causes -the shell to terminate unless the \f3ignoreeof\fP -option is set. -Otherwise this character is ignored. -.TP 10 -.BI ^V -Escape next character. -Editing characters and the user's erase or kill -characters may be entered -in a command line or in a search string if preceded by a -.BR ^V . -The -.B ^V -removes the next character's -editing features (if any). -One some systems the \f3viraw\fP option -may be required for this to work. -.TP 10 -.BI \e -Escape the next -.I erase -or -.I kill -character. -.P -.RE -.SS "\ \ \ \ \ Motion Edit Commands" -.RS -These commands will move the cursor. -.TP 10 -[\f2count\fP]\f3l\fP -Cursor forward (right) one character. -.TP 10 -[\f2count\fP]\f3w\fP -Cursor forward one alpha-numeric word. -.TP 10 -[\f2count\fP]\f3W\fP -Cursor to the beginning of the next word that follows a blank. -.TP 10 -[\f2count\fP]\f3e\fP -Cursor to end of word. -.TP 10 -[\f2count\fP]\f3E\fP -Cursor to end of the current blank delimited word. -.TP 10 -[\f2count\fP]\f3h\fP -Cursor backward (left) one character. -.TP 10 -[\f2count\fP]\f3b\fP -Cursor backward one word. -.TP 10 -[\f2count\fP]\f3B\fP -Cursor to preceding blank separated word. -.TP 10 -[\f2count\fP]\f3\(bv\fP -Cursor to column -.IR count . -.TP 10 -[\f2count\fP]\f3f\fP\f2c\fP -Find the next character \fIc\fP in the current line. -.TP 10 -[\f2count\fP]\f3F\fP\f2c\fP -Find the previous character \fIc\fP in the current line. -.TP 10 -[\f2count\fP]\f3t\fP\f2c\fP -Equivalent to -.B f -followed by -.BR h . -.TP 10 -[\f2count\fP]\f3T\fP\f2c\fP -Equivalent to -.B F -followed by -.BR l . -.TP 10 -[\f2count\fP]\f3;\fP -Repeats -.I count -times, -the last single character find command, -.BR f , -.BR F , -.BR t , -or -.BR T . -.TP 10 -[\f2count\fP]\f3,\fP -Reverses the last single character find command -.I count -times. -.TP 10 -.B 0 -Cursor to start of line. -.TP 10 -.B ^ -Cursor to first non-blank character in line. -.TP 10 -.B $ -Cursor to end of line. -.TP 10 -.B % -Moves to balancing -.BR ( , -.BR ) , -.BR { , -.BR } , -.BR [ , -or -.BR ] . -If cursor is not on one of the above characters, -the remainder of the line is searched for the first -occurrence of one of the above characters first. -.RE -.SS "\ \ \ \ \ Search Edit Commands" -.RS -These commands access your command history. -.TP 10 -[\f2count\fP]\f3k\fP -Fetch previous command. -Each time -.B k -is entered -the previous command back in time is accessed. -.TP 10 -[\f2count\fP]\f3\-\fP -Equivalent to -.BR k . -.TP 10 -[\f2count\fP]\f3j\fP -Fetch next command. -Each time -.B j -is entered -the next command forward in time is accessed. -.TP 10 -[\f2count\fP]\f3+\fP -Equivalent to -.BR j . -.TP 10 -[\f2count\fP]\f3G\fP -The command number -.I count -is fetched. -The default is the least recent history command. -.TP 10 -.BI / string -Search backward through history for a previous command containing -.IR string . -.I String -is terminated by a "RETURN" or "NEW\ LINE". -If string is preceded by a -.BR ^ , -the matched line must begin with -.IR string . -If \fIstring\fP is null the previous string will be used. -.TP 10 -.BI ? string -Same as -.B / -except that search will be in the forward direction. -.TP 10 -.B n -Search for next match of the last pattern to -.B / -or -.B ? -commands. -.TP 10 -.B N -Search for next match of the last pattern to -.B / -or -.BR ? , -but in reverse direction. -.RE -.SS "\ \ \ \ \ Text Modification Edit Commands" -.RS -These commands will modify the line. -.TP 10 -.B a -Enter input mode and enter text after the current character. -.TP 10 -.B A -Append text to the end of the line. -Equivalent to -.BR $a . -.TP 10 -[\f2count\fP]\f3c\fP\f2motion\fP -.TP 10 -\f3c\fP[\f2count\fP]\f2motion\fP -Delete current character through the character that -.I motion -would move the cursor to and enter input mode. -If \fImotion\fP is -.BR c , -the entire line will be deleted and -input mode entered. -.TP 10 -.B C -Delete the current character through the end of line and enter input mode. -Equivalent to -.BR c$ . -.TP 10 -.B S -Equivalent to -.BR cc . -.TP 10 -.B D -Delete the current character through the end of line. -Equivalent to -.BR d$ . -.TP 10 -[\f2count\fP]\f3d\fP\f2motion\fP -.TP 10 -\f3d\fP[\f2count\fP]\f2motion\fP -Delete current character through the character that -.I motion -would move to. -If \fImotion\fP is -.B d , -the entire line will be deleted. -.TP 10 -.B i -Enter input mode and insert text before the current character. -.TP 10 -.B I -Insert text before the beginning of the line. -Equivalent to -.BR 0i . -.TP 10 -[\f2count\fP]\f3P\fP -Place the previous text modification before the cursor. -.TP 10 -[\f2count\fP]\f3p\fP -Place the previous text modification after the cursor. -.TP 10 -.B R -Enter input mode and -replace characters on the screen with characters you type overlay fashion. -.TP 10 -[\f2count\fP]\f3r\fP\f2c\fP -Replace the -.I count -character(s) starting at the current cursor position with -.IR c , -and advance the cursor. -.TP 10 -[\f2count\fP]\f3x\fP -Delete current character. -.TP 10 -[\f2count\fP]\f3X\fP -Delete preceding character. -.TP 10 -[\f2count\fP]\f3.\fP -Repeat the previous text modification command. -.TP 10 -[\f2count\fP]\f3\(ap\fP -Invert the case of the -.I count -character(s) starting at the current cursor position and advance the cursor. -.TP 10 -[\f2count\fP]\f3_\fP -Causes the -.I count\^ -word of the previous command to be appended and -input mode entered. -The last word is used -if -.I count\^ -is omitted. -.TP 10 -.B * -Causes an -.B * -to be appended to the current word and file name generation attempted. -If no match is found, -it rings the bell. -Otherwise, the word is replaced -by the matching pattern and input mode is entered. -.TP 10 -.B \e -Command or file name completion as described above. -.RE -.SS "\ \ \ \ \ Other Edit Commands" -.RS -Miscellaneous commands. -.TP 10 -[\f2count\fP]\f3y\fP\f2motion\fP -.TP 10 -\f3y\fP[\f2count\fP]\f2motion\fP -Yank current character through character that -.I motion -would move the cursor to and puts them into the delete buffer. -The text and cursor are unchanged. -.TP 10 -.B Y -Yanks from current position to end of line. -Equivalent to -.BR y$ . -.TP 10 -.B u -Undo the last text modifying command. -.TP 10 -.B U -Undo all the text modifying commands performed on the line. -.TP 10 -[\f2count\fP]\f3v\fP -Returns the command -.BI "hist \-e ${\s-1VISUAL\s+1:\-${\s-1EDITOR\s+1:\-vi}}" " count" -in the input buffer. -If -.I count\^ -is omitted, then the current line is used. -.TP 10 -.BI ^L -Line feed and print current line. -Has effect only in control mode. -.TP 10 -.BI ^J -(New\ line) Execute the current line, regardless of mode. -.TP 10 -.BI ^M -(Return) Execute the current line, regardless of mode. -.TP 10 -.B \# -If the first character of the command is a -.BR \# , -then this command deletes this -.B \# -and each -.B \# -that follows a newline. -Otherwise, -sends the line after -inserting a -.B \# -in front of each line in the command. -Useful for causing the current line to be -inserted in the history as a comment and -uncommenting previously commented commands -in the history file. -.TP 10 -.B = -Command or file name listing as described above. -.TP 10 -.BI @ letter -Your alias list is searched for an -alias by the name -.BI _ letter -and if an alias of this name is defined, its -value will be inserted on the input queue for processing. -.RE -.PD -.SS Built-in Commands. -The following simple-commands are executed in the shell process. -Input/Output redirection is permitted. -Unless otherwise indicated, the output is written on file descriptor 1 -and the exit status, when there is no syntax error, is zero. -Except for -.BR : , -.BR true , -.BR false , -.BR echo , -.BR command , -.BR newgrp , -and -.BR login , -all built-in commands accept -.B \-\- -to indicate end of options. -They also interpret the option -.B \-? -as a help request and print a -.I usage\^ -message -on standard error. -Commands that are preceded by one or two \(dg -are special built-in commands and -are treated specially in the following ways: -.PD 0 -.TP -1. -Variable assignment lists preceding the command -remain in effect when the command completes. -.TP -2. -I/O redirections are processed after variable assignments. -.TP -3. -Errors -cause a script -that contains them to abort. -.TP -4. -They are not valid function names. -.TP -5. -Words, -following a command preceded by \(dg\(dg -that are in the format of a variable assignment, -are expanded with the same rules as a variable assignment. -This means that -tilde substitution is performed after the -.B = -sign and field splitting and file name generation are not -performed. -.PD -.TP -\(dg \f3:\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -The command only expands parameters. -.br -.ne 2 -.TP -\(dg \f3\|. \f2name\^\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -If -.I name\^ -is a function defined with the -.B function -.I name\^ -reserved word syntax, -the function is executed in the current environment -( as if it had been defined with the -.IB name () -syntax.) -Otherwise if -.I name\^ -refers to a file, the -file is read in its entirety and the commands are -executed in the current shell environment. -The search path -specified by -.B -.SM PATH -is used to find the directory containing file. -If any arguments -.I arg\^ -are given, -they become the positional parameters while processing -the -.B . -command and are restored upon completion. -Otherwise the positional parameters are unchanged. -The exit status is the exit status of the last command executed. -.TP -\(dg\(dg \f3alias\fP \*(OK \f3\-ptx\fP \*(CK \*(OK \f2name\fP\*(OK \f3=\fP\f2value\^\fP \*(CK \*(CK .\|.\|. -.B alias\^ -with no arguments prints the list of aliases -in the form -.I name=value\^ -on standard output. -The -.B \-p -option -causes the word -.B alias -to be inserted before each one. -When one or more arguments are given -an -.I alias\^ -is defined -for each -.I name\^ -whose -.I value\^ -is given. -A trailing space in -.I value\^ -causes the next word to be checked for -alias substitution. -The obsolete -.B \-t -option is used to set and list tracked aliases. -The value of a tracked alias is the full pathname -corresponding to the given -.IR name . -The value becomes undefined when the value of -.SM -.B PATH -is reset but the alias remains tracked. -Without the -.B \-t -option, -for each -.I name\^ -in the argument list -for which no -.I value\^ -is given, the name -and value of the alias is printed. -The obsolete -.B \-x -option has no effect. -The exit status is non-zero if a -.I name\^ -is given, but no value, and no alias has been defined for the -.IR name\^ . -.TP -\f3bg\fP \*(OK \f2job\^\fP.\|.\|. \*(CK -This command is only on systems that support job control. -Puts each specified -.I job\^ -into the background. -The current job is put in the background -if -.I job\^ -is not specified. -See -.I Jobs -for a description of the format of -.IR job . -.TP -\(dg \f3break\fP \*(OK \f2n\^\fP \*(CK -Exit from the enclosing -.BR for\^ , -.BR while\^ , -.BR until\^ , -or -.B select\^ -loop, if any. -If -.I n\^ -is specified then break -.I n\^ -levels. -.TP -\f3builtin\fP \*(OK \f3\-ds\fP \*(CK \*(OK \f3\-f\fP \f2file\^\fP \*(CK \*(OK \f2name\^\fP .\|.\|. \*(CK -If -.I name\^ -is not specified, the built-ins are printed on standard output. -The -.B \-s -option prints only the special built-ins. -Otherwise, each -.I name\^ -represents the pathname whose basename is the name of the built-in. -The entry point function name is determined by prepending -.B b_ -to the built-in name. -Special built-ins cannot be bound to a pathname or deleted. -The -.B \-d -option deletes each of the given built-ins. -On systems that support dynamic loading, the -.B \-f -option names a shared library containing the code for built-ins. -Once a library is loaded, its symbols become available -for subsequent invocations of -.BR builtin . -Multiple libraries can be specified with separate invocations -of the -.B builtin -command. -Libraries are searched in the reverse order in which they are specified. -.TP -.PD 0 -\f3cd\fP \*(OK \f3\-LP\fP \*(CK \*(OK \f2arg\^\fP \*(CK -.TP -\f3cd\fP \*(OK \f3\-LP\fP \*(CK \f2old\^\fP \f2new\^\fP -.PD -This command can be in either of two forms. -In the first form it -changes the current directory to -.IR arg . -If -.I arg\^ -is -.B \- -the directory is changed to the previous -directory. -The shell -variable -.B -.SM HOME -is the default -.IR arg . -The variable -.SM -.B PWD -is set to the current directory. -The shell variable -.B -.SM CDPATH -defines the search path for -the directory containing -.IR arg . -Alternative directory names are separated by -a colon -.RB ( : ). -The default path is -.B -(specifying the current directory). -Note that the current directory is specified by a null path name, -which can appear immediately after the equal sign -or between the colon delimiters anywhere else in the path list. -If -.I arg -begins with a \f3/\fP then the search path -is not used. -Otherwise, each directory in the path is -searched for -.IR arg . -.P -The obsolete second form of -.B cd -substitutes the string -.I new -for the string -.I old -in the current directory name, -.SM -.B PWD -and tries to change to this new directory. -.P -By default, symbolic links are not followed when -finding the directory name. -This is equivalent to the -.B \-L -option. -The -.B \-P -option causes -symbolic links to be followed when determining the directory. -The last instance of -.B \-L -or -.B \-P -determines which method is used. -.P -The -.B cd\^ -command may not be executed by -.if \nZ=0 .B rsh\^. -.if \nZ=1 .B rksh\^. -.TP -\f3command\fP \*(OK \f3\-pvV\fP \*(CK \f2name\^\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -Without the -.B \-v -or -.B \-V -options, -.B command -executes -.I name\^ -with the arguments given by -.IR arg . -The -.B \-p -option causes -a default path to be searched -rather than the one defined by the value of -.SM -.BR PATH . -Functions will not be searched for when finding -.IR name . -In addition, if -.I name\^ -refers to a special built-in, -none of the special properties associated with the leading -daggers will be honored. -( -For example, the predefined alias -.B "redirect=\(fmcommand exec\(fm" -prevents a script from terminating when an invalid -redirection is given.) -With the -.B \-v -option, -.B command -is equivalent to the built-in -.B whence -command described below. -The -.B \-V -options, causes -.B command -to -.BR "whence \-v" . -.TP -\(dg \f3continue\fP \*(OK \f2n\^\fP \*(CK -Resume the next iteration of the enclosing -.BR for\^ , -.BR while\^ , -.BR until\^ , -or -.B select\^ -loop. -If -.I n\^ -is specified then resume at the -.IR n -th -enclosing loop. -.TP -\f3disown\fP \*(OK \f2job\^\fP.\|.\|. \*(CK -Causes the shell not to send a HUP signal to -each given -.IR job , -or all active jobs if -.I job -is omitted, -when a login shell terminates. -.TP -\f3echo\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -When the first -.I arg\^ -does not begin with a \-, and -none of the arguments contain a \e, -then -.B echo -prints each of its arguments separated by a space -and terminated by a new-line. -Otherwise, the behavior of -.B echo -is system dependent -and -.B print -or -.B printf -described below should be used. -See -.IR echo (1) -for usage and description. -.TP -\(dg \f3eval\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -The arguments are read as input -to the shell -and the resulting command(s) executed. -.TP -\(dg \f3exec\fP \*(OK \f3\-c\fP \*(CK \*(OK \f3\-a\fP \f2name\^\fP \*(CK \*(OK \f2arg\^\fP .\|.\|. \*(CK -If -.I arg\^ -is given, -the command specified by -the arguments is executed in place of this shell -without creating a new process. -The -.B \-c -option causes the environment to be cleared before applying -variable assignments associated with the -.B exec -invocation. -The -.B \-a -option -causes -.I name\^ -rather than the first -.IR arg , -to become -.B argv[0] -for the new process. -Input/output arguments may appear and -affect the current process. -If -.I arg\^ -is not given -the effect of this command is to -modify file descriptors -as prescribed by the input/output redirection list. -In this case, -any file descriptor numbers greater than 2 that are -opened with this mechanism are closed when invoking -another program. -.TP -\(dg \f3exit\fP \*(OK \f2n\^\fP \*(CK -Causes the shell to exit -with the exit status specified by -.IR n . -The value will be the least significant 8 bits of the specified status. -If -.I n\^ -is omitted then the exit status is that of the last command executed. -An end-of-file will also cause the shell to exit -except for a -shell which has the -.I ignoreeof -option (see -.B set -below) turned on. -.TP -\(dg\(dg \f3export\fP \*(OK \f3\-p\fP \*(CK \*(OK \f2name\^\fP\*(OK\f3=\fP\f2value\^\fP\*(CK \*(CK .\|.\|. -If -.I name\^ -is not given, -the names and values of each variable with -the export attribute are printed with the values -quoted in a manner that allows them to be re-inputed. -The -.B \-p -option -causes the word -.B export -to be inserted before each one. -Otherwise, the given -.IR name s -are marked for automatic -export to the -.I environment\^ -of subsequently-executed commands. -.TP -\f3fg\fP \*(OK \f2job\^\fP.\|.\|. \*(CK -This command is only on systems that support job control. -Each -.I job\^ -specified is brought to the foreground and waited for in -the specified order. -Otherwise, the current job is -brought into the foreground. -See -.I Jobs -for a description of the format of -.IR job . -.TP -\f3getconf\fP \f2name\^\fP \*(OK \f2pathname\^\fP \*(CK -Prints the current value of the configuration parameter given by -.IR name . -.TP -\f3getopts\fP \f2optstring vname\^\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -Checks -.I arg -for legal options. -If -.I arg -is omitted, -the positional parameters are used. -An option argument begins with a -.B + -or a -.BR \- . -An option not beginning with -.B + -or -.B \- -or the argument -.B \-\|\- -ends the options. -.I optstring -contains the letters that -.I getopts -recognizes. -If a letter is followed by a -.BR : , -that option is expected to have an argument. -The options can be separated from the argument by blanks. -.P -.B -getopts -places the next option letter it finds inside variable -.I vname\^ -each time it is invoked with a -.B + -prepended when -.I arg -begins with a -.BR + . -The index of the next -.I arg -is stored in -.SM -.BR OPTIND . -The option argument, -if any, -gets stored in -.SM -.BR OPTARG . -.P -A leading -.B : -in -.I optstring -causes -.B getopts -to store the letter of an invalid -option in -.SM -.BR OPTARG , -and to set -.I vname -to -.B ? -for an unknown option and to -.B : -when a required option is missing. -Otherwise, -.B getopts -prints an error message. -The exit status is non-zero when there are no more options. -.P -There is no way to specify any of the options -.BR : , -.BR + , -.BR \- , -.BR ? , -.BR [ , -and -.BR ] . -The option -.B # -can only be specified as the first option. -.TP -.PD 0 -\f3hist\fP \*(OK \f3\-e\fP \f2ename\^\fP \ \*(CK \*(OK \f3\-nlr\^\fP \*(CK \*(OK \f2first\^\fP \*(OK \f2last\^\fP \*(CK \*(CK -.TP -\f3hist \-s \fP \*(OK \f2old\fP\f3\=\fP\f2new\^\fP \*(CK \*(OK \f2command\^\fP \*(CK -.PD -In the first form, -a range of commands from -.I first\^ -to -.I last\^ -is selected from the last -.SM -.B HISTSIZE -commands that were typed at the terminal. -The arguments -.I first\^ -and -.I last\^ -may be specified as a number or as a string. -A string is used to locate the most recent command starting with -the given string. -A negative number is used as an offset to the current command number. -If the -.B \-l -option -is selected, -the commands are listed on standard output. -Otherwise, the editor program -.I ename\^ -is invoked on a file containing these -keyboard commands. -If -.I ename\^ -is not supplied, then the value of the variable -.SM -.B HISTEDIT -is used. -If -.SM -.B HISTEDIT -is not set then -.SM -.B FCEDIT -(default -.BR /bin/ed\^ ) -is used as the editor. -When editing is complete, the edited command(s) -is executed if the changes have been saved. -If -.I last\^ -is not specified -then it will be set to -.IR first . -If -.I first\^ -is not specified -the default is the previous command -for editing and \-16 for listing. -The option -.B \-r -reverses the order of the commands and -the option -.B \-n -suppresses command numbers when listing. -In the second form the -.I command\^ -is re-executed after the substitution -\f2old\^\fP\f3=\fP\f2new\^\fP -is performed. -.TP -\f3jobs\fP \*(OK \f3\-lnp\^\fP \*(CK \*(OK \f2job\^\fP \.\|.\|. \*(CK -Lists information about each given job; or all active jobs if -.I job -is omitted. -The -.B \-l -option lists process ids in addition to the normal information. -The -.B \-n -option only displays jobs that have stopped or exited since last -notified. -The -.B \-p -option causes only the process group to be listed. -See -.I Jobs -for a description of the format of -.IR job . -.TP -.PD 0 -\f3kill\fP \*(OK \f3\-s\fP \f2signame\^\fP \*(CK \f2job\^\fP .\|.\|. -.TP -.PD 0 -\f3kill\fP \*(OK \f3\-n\fP \f2signum\^\fP \*(CK \f2job\^\fP .\|.\|. -.TP -\f3kill\fP \f3\-l\fP \*(OK \f2sig\^\fP .\|.\|. \*(CK -.PD -Sends either the TERM (terminate) signal or the -specified signal to the specified jobs or processes. -Signals are either given by number with the -.B \-n -option or by name with the -.B \-s -option -(as given in -.BR , -stripped of the prefix ``SIG'' with -the exception that SIGCLD is named CHLD). -For backward compatibility, the -.B n -and -.B s -can be omitted and the number or name placed immediately -after the -.BR \- . -If the signal being sent is TERM (terminate) or HUP (hangup), -then the job or process will be sent a CONT (continue) signal -if it is stopped. -The argument -.I job\^ -can be the process id of a process that is not a member of one of the -active jobs. -See -.I Jobs -for a description of the format of -.IR job . -In the third form, -.BR "kill \-l" , -if -.I sig\^ -is not specified, -the signal names are listed. -Otherwise, for each -.I sig\^ -that is a name, the corresponding signal number is listed. -For each -.I sig\^ -that is a number, the signal name corresponding to the -least significant 8 bits of -.I sig\^ -is listed. -.TP -\f3let\fP \f2arg\^\fP .\|.\|. -Each -.I arg -is a separate -.I "arithmetic expression" -to be evaluated. -See -.I "Arithmetic Evaluation" -above, for a description of arithmetic expression evaluation. -.P -The exit status is -0 if the value of the last expression -is non-zero, and 1 otherwise. -.TP -\(dg \f3newgrp\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -Equivalent to -.BI "exec /bin/newgrp" " arg\^" -\&.\|.\|.\^. -.TP -\f3print\fP \*(OK \f3\-Rnprs\^\fP \*(CK \*(OK \f3\-u\fP \f2unit\^\fP\*(CK \*(OK \f3\-f\fP \f2format\^\fP \*(CK \*(OK \f2arg\^\fP .\|.\|. \*(CK -With no options or with option -.B \- -or -.BR \-\|\- , -Each -.I arg -is printed -on standard output. -The -.B \-f -option causes the arguments to be printed as -described by -.BR printf . -In this case any -.BR n , -.BR r , -.B R -options are ignored. -Otherwise, -unless the -.B \-R -or -.BR \-r , -are specified, the following -escape conventions will be applied: -.RS -.PD 0 -.TP -.B \ea -The alert character (ascii -.BR 07 ). -.TP -.B \eb -The backspace character (ascii -.BR 010 ). -.TP -.B \ec -Causes -.B print -to end without processing more arguments and -not adding a new-line. -.TP -.B \ef -The formfeed character (ascii -.BR 014 ). -.TP -.B \en -The new-line character (ascii -.BR 012 ). -.TP -.B \er -The carriage return character (ascii -.BR 015 ). -.TP -.B \et -The tab character (ascii -.BR 011 ). -.TP -.B \ev -The vertical tab character (ascii -.BR 013 ). -.TP -.B \eE -The escape character (ascii -.BR 033 ). -.TP -.B \e\e -The backslash character \e. -.PD -.PP -The -.B \-R -option will print all subsequent arguments and options -other than -.BR \-n . -The -.B \-p -option causes the -arguments to be written onto the pipe -of the process spawned with -.B \(bv& -instead of standard output. -The -.B \-s -option causes the -arguments to be written onto the history file -instead of standard output. -The -.B \-u -option can be used to specify a one digit -file descriptor unit number -.I unit\^ -on which the -output will be placed. -The default is 1. -If the option -.B \-n -is used, no -.B new-line\^ -is added to the output. -.RE -.TP -\f3printf\fP \f2format\^\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK -The arguments -.I arg\^ -are printed on standard output -in accordance with the ANSI-C -formatting rules associated with the format string -.IR format . -The following extensions can also be used: -.BL -.LI -A -.B %b -format can be used instead of -.B %s -to cause escape sequences in the corresponding -.I arg\^ -to be expanded as described in -.BR print. -.LI -A -.B %P -format can be used instead of -.B %s -to cause -.I arg\^ -to be interpreted as an extended regular -expression and be printed as a shell pattern. -.LI -A -.B %q -format can be used instead of -.B %s -to cause the resulting string to be quoted in a manner than can -be reinput to the shell. -.LI -The precision field of the -.B %d -format can be followed by a -.B . -and the output base. -.LE -.TP -\f3pwd\fP \*(OK \f3\-LP\fP \*(CK -Outputs the value of the current working -directory. -If the -.B \-P -option is given, -all symbolic links are resolved from the name. -.TP -\f3read\fP \*(OK \f3\-Aprs\^\fP \*(CK \*(OK \f3\-d\fP \f2delim\^\fP\*(CK \*(OK \f3\-t\fP \f2timeout\^\fP\*(CK \*(OK \f3\-u\fP \f2unit\^\fP\*(CK \*(OK \f2vname\f3?\f2prompt\^\f1 \*(CK \*(OK \f2vname\^\fP .\|.\|. \*(CK -The shell input mechanism. -One line is read and -is broken up into fields using the characters in -.B -.SM IFS -as separators. -The escape character, -.BR \e , -is used to remove any special meaning for the next -character and for line continuation. -The -.B \-d -option -causes the read to continue to the first character of -.I delim\^ -rather than new-line. -In raw mode, -.B \-r, -the -.B \e -character is not treated specially. -The first -field is assigned to the first -.IR vname , -the second field -to the second -.IR vname , -etc., with leftover fields assigned to the last -.IR vname . -The -.B \-A -option causes the variable -.I vname\^ -to be unset and each field that is read to be stored in -successive elements of the indexed array -.IR vname. -The -.B \-p -option causes the input line -to be taken from the input pipe -of a process spawned by the shell -using -.BR \(bv& . -If the -.B \-s -option is present, -the input will be saved as a command in the history file. -The option -.B \-u -can be used to specify a one digit file -descriptor unit -.I unit\^ -to read from. -The file descriptor can be opened with the -.B exec\^ -special built-in command. -The default value of unit -.I n\^ -is 0. -The option -.B \-t -is used to specify a timeout in decimal -seconds when reading from a terminal or pipe. -If -.I vname\^ -is omitted then -.SM -.B REPLY -is used as the default -.IR vname . -An end-of-file with the -.B \-p -option causes cleanup for this process -so that another can be spawned. -If the first argument contains a -.BR ? , -the remainder of this word is used as a -.I prompt\^ -on standard error -when the shell is interactive. -The exit status is 0 unless an end-of-file is encountered -or read has timed out. -.TP -\(dg\(dg \f3readonly\fP \*(OK \f3\-p\fP \*(CK \*(OK \f2vname\fP\*(OK\f3=\fP\f2value\^\fP\*(CK \*(CK .\|.\|. -If -.I vname\^ -is not given -the names and values of each variable with -the readonly attribute is printed with the values -quoted in a manner that allows them to be re-inputed. -The -.B \-p -option -causes the word -.B readonly -to be inserted before each one. -Otherwise, the given -.IR vname s -are marked -readonly and these -names cannot be changed -by subsequent assignment. -.TP -\(dg \f3return\fP \*(OK \f2n\^\fP \*(CK -Causes a shell -.I function -or -\f3\|.\fP -script to return -to the invoking script -with the return status specified by -.IR n . -The value will be the least significant 8 bits of the specified status. -If -.I n\^ -is omitted then the return status is that of the last command executed. -If -.B return -is invoked while not in a -.I function -or a -\f3\|.\fP -script, -then it behaves the same as -.BR exit . -.TP -\(dg \f3set\fP \*(OK \f3\(+-CPabefhkmnopstuvx\fP \*(CK \*(OK \f3\(+-o\fP \f2option\^\fP \*(CK.\|.\|. \*(OK \f3\(+-A\fP \f2vname\^\fP \*(CK \*(OK \f2arg\^\fP .\|.\|. \*(CK -The options for this command have meaning as follows: -.RS -.PD 0 -.TP 8 -.B \-A -Array assignment. -Unset the variable -.I vname -and assign values sequentially from the -list -.IR arg . -If -.B +A -is used, the variable -.I vname -is not unset first. -.TP 8 -.B \-C -Prevents redirection -.B > -from truncating existing files. -Files that are created are opened with the O_EXCL mode. -Require -.B >\(bv -to truncate a file when turned on. -.TP 8 -.B \-P -Causes the -.B cd -and -.B pwd -built-in commands to default to physical mode. -.TP 8 -.B \-a -All subsequent variables that are defined are automatically exported. -.TP 8 -.B \-b -Prints job completion messages as soon as a background job changes -state rather than waiting for the next prompt. -.TP 8 -.B \-e -If a command has a non-zero exit status, -execute the -.SM -.B ERR -trap, if set, -and exit. -This mode is disabled while reading profiles. -.TP 8 -.B \-f -Disables file name generation. -.TP 8 -.B \-h -Each command -becomes a tracked alias when first encountered. -.TP 8 -.B \-k -(Obsolete). All variable assignment arguments are placed in the environment for a command, -not just those that precede the command name. -.TP 8 -.B \-m -Background jobs will run in a separate process group -and a line will print upon completion. -The exit status of background jobs is reported in a completion message. -On systems with job control, -this option is turned on automatically for -interactive shells. -.TP 8 -.B \-n -Read commands and check them for syntax errors, but do not execute them. -Ignored for interactive shells. -.TP 8 -.B \-o -The following argument can be one of the following option names: -.RS -.TP 8 -.B allexport -Same as -.BR \-a . -.TP 8 -.B errexit -Same as -.BR \-e . -.TP 8 -.B bgnice -All background jobs are run at a lower priority. -This is the default mode. -.TP 8 -.B emacs -Puts you in an -.I emacs -style in-line editor for command entry. -.TP 8 -.B gmacs -Puts you in a -.I gmacs -style in-line editor for command entry. -.TP 8 -.B ignoreeof -The shell will not exit on end-of-file. -The command -.B exit -must be used. -.TP 8 -.B keyword -Same as -.BR \-k . -.TP 8 -.B markdirs -All directory names resulting from file name generation have a trailing -.B / -appended. -.TP 8 -.B monitor -Same as -.BR \-m . -.TP 8 -.B noclobber -Same as -.BR \-C . -.TP 8 -.B noexec -Same as -.BR \-n . -.TP 8 -.B noglob -Same as -.BR \-f . -.TP 8 -.B nolog -Do not save function definitions in history file. -.TP 8 -.B notify -Same as -.BR \-b . -.TP 8 -.B nounset -Same as -.BR \-u . -.TP 8 -.B physical -Same as -.BR \-P . -.TP 8 -.B privileged -Same as -.BR \-p . -.TP 8 -.B verbose -Same as -.BR \-v . -.TP 8 -.B trackall -Same as -.BR \-h . -.TP 8 -.B vi -Puts you in insert mode of a -.I vi\^ -style in-line editor -until you hit escape character -.BR 033 . -This puts you in control mode. -A return sends the line. -.TP 8 -.B viraw -Each character is processed as it is typed -in -.I vi\^ -mode. -.TP 8 -.B xtrace -Same as -.BR \-x . -.TP 8 -If no option name is supplied then the current option settings are printed. -.RE -.TP 8 -.B \-p -Disables processing of the -.B \s-1$HOME\s+1/.profile -file and uses the file -.B /etc/suid_profile -instead of the -.SM -.B ENV -file. -This mode is on whenever the effective uid (gid) -is not equal to the real uid (gid). -Turning this off causes the effective uid and gid to be -set to the real uid and gid. -.TP 8 -.B \-s -Sort the positional parameters lexicographically. -.TP 8 -.B \-t -(Obsolete). Exit after reading and executing one command. -.TP 8 -.B \-u -Treat unset parameters as an error when substituting. -.TP 8 -.B \-v -Print shell input lines as they are read. -.TP 8 -.B \-x -Print commands and their arguments as they are executed. -.TP 8 -.B \-\|\- -Do not change any of the options; useful in setting -.B $1 -to a value beginning with -.BR \- . -If no arguments follow this option then the positional parameters are unset. -.PD -.PP -As an obsolete feature, -if the first -.I arg\^ -is -.B \- -then the -.B \-x -and -.B \-v -options are turned off and the next -.I arg -is treated as the first argument. -Using -.B \+ -rather than -.B \- -causes these options to be turned off. -These options can also be used upon invocation of the shell. -The current set of options may be found in -.BR $\- . -Unless -.B \-A -is specified, -the remaining arguments are positional -parameters and are assigned, in order, to -.B $1 -.B $2 -\&.\|.\|.\^. -If no arguments are given then the names and values -of all variables are printed on the standard output. -.RE -.TP -\(dg \f3shift\fP \*(OK \f2n\^\fP \*(CK -.br -The positional parameters from -\f3$\fP\f2n\fP\f3+1\fP -\&.\|.\|. -are renamed -.B $1 -\&.\|.\|.\^ -, default -.I n\^ -is 1. -The parameter -.I n\^ -can be any arithmetic expression that evaluates to a non-negative -number less than or equal to -.BR $# . -.TP -\f3sleep\fP \f2seconds\^\fP -Suspends execution for the number of decimal seconds or fractions of a -second given by -.IR seconds . -.TP -\(dg \f3trap\fP \*(OK \f3\-p\fP \*(CK \*(OK \f2action\^\fP \*(CK \*(OK \f2sig\^\fP \*(CK .\|.\|. -The \-p -option causes the trap -action associated with each trap as specified by the arguments -to be printed with appropriate quoting. -Otherwise, -.I action\^ -will be processed as if it were an argument to -.B eval -when the shell -receives signal(s) -.IR sig . -Each -.I sig\^ -can be given as a number or as the name of the signal. -Trap commands are executed in order of signal number. -Any attempt to set a trap on a signal that -was ignored on entry to the current shell -is ineffective. -If -.I action\^ -is omitted and the first -.I sig\^ -is a number, or if -.I action\^ -is -.BR \- , -then the trap(s) for each -.I sig\^ -are reset -to their original values. -If -.I action\^ -is the null -string then this signal is ignored by the shell and by the commands -it invokes. -If -.I sig\^ -is -.SM -.B ERR -then -.I action\^ -will be executed whenever a command has a non-zero exit status. -If -.I sig\^ -is -.SM -.B DEBUG -then -.I action\^ -will be executed before each command. -If -.I sig\^ -is -.B 0 -or -.SM -.B EXIT -and the -.B trap -statement is executed inside the body of a function, -then the command -.I action\^ -is executed -after the function completes. -If -.I sig\^ -is -.B 0 -or -.SM -.B EXIT -for a -.B trap -set outside any function -then the command -.I action\^ -is executed -on exit from the shell. -If -.I sig\^ -is -.SM -.B KEYBD -then -.I action\^ -will be executed whenever a key is read -while in -.BR emacs , -.BR gmacs , -or -.B vi\^ -mode. -The -.B trap -command -with no arguments prints a list -of commands associated with each signal number. -.TP -\(dg\(dg \f3typeset\fP \*(OK \f3\(+-AHflnprtux\^\fP \*(CK \*(OK \f3\(+-EFLRZi\*(OK\f2n\^\fP\*(CK \*(CK \*(OK \f2vname\^\fP\*(OK\f3=\fP\f2value\^\fP \*(CK \^ \*(CK .\|.\|. -Sets attributes and values for shell variables and functions. -When invoked inside a function, -a new instance of the variables -.I vname\^ -is created. -The variables' value and type are restored -when the function completes. -The following list of attributes may be specified: -.RS -.PD 0 -.TP -.B \-A -Declares -.I vname\^ -to be an associate array. -Subscripts are strings rather than arithmetic -expressions. -.TP -.B \-E -Declares -.I vname\^ -to be a double precision floating point number. -If -.I n\^ -is non-zero it defines the number of significant figures -that are used when expanding -.IR vname . -Otherwise ten significant figures will be used. -.TP -.B \-F -Declares -.I vname\^ -to be a double precision floating point number. -If -.I n\^ -is non-zero it defines the number of places after the -decimal point that are used when expanding -.IR vname . -Otherwise ten places after the decimal point will be used. -.TP -.B \-H -This option provides UNIX to host-name file mapping on non-UNIX -machines. -.TP -.B \-L -Left justify and remove leading blanks from -.IR value . -If -.I n\^ -is non-zero it defines the width -of the field, -otherwise it is determined by the width of the value of -first assignment. -When the variable is assigned to, it is -filled on the right with blanks or truncated, if necessary, to -fit into the field. -The -.B \-R -option is turned off. -.TP -.B \-R -Right justify and fill with leading blanks. -If -.I n\^ -is non-zero it defines the width -of the field, -otherwise it is determined by the width of the value of -first assignment. -The field is left filled with blanks or -truncated from the end if the -variable is reassigned. -The -.B \-L -option is turned off. -.TP -.B \-Z -Right justify and fill with leading zeros if -the first non-blank character is a digit and the -.B \-L -option has not been set. -Remove leading zeros if the -.B \-L -option is also set. -If -.I n\^ -is non-zero it defines the width -of the field, -otherwise it is determined by the width of the value of -first assignment. -.TP -.B \-f -The names refer to function names rather than -variable names. -No assignments can be made and the only other -valid options are -.BR \-t , -.B \-u -and -.BR \-x . -The option -.B \-t -turns on execution tracing for this function. -The option -.B \-u -causes this function to be marked undefined. -The -.SM -.B FPATH -variable will be searched to find the function definition -when the function is referenced. -.TP -.B \-i -Declares -.I vname\^ -to be represented internally as integer. -The right hand side of an assignment is evaluated as an -arithmetic expression when assigning to an integer. -If -.I n\^ -is non-zero it defines the output arithmetic base, -otherwise the the output base will be ten. -.TP -.B \-l -All upper-case characters are -converted to lower-case. -The upper-case option, -.B \-u -is turned off. -.TP -.B \-n -Declares -.I vname\^ -to be a reference to the variable whose name is -defined by the value of variable -.IR vname . -This is usually used to reference a variable inside -a function whose name has been passed as an argument. -.TP -.B \-r -The given -.IR vname s -are marked -readonly and these -names cannot be changed -by subsequent assignment. -.TP -.B \-t -Tags the variables. -Tags are user definable and have no special -meaning to the shell. -.TP -.B \-u -All lower-case characters are converted -to upper-case characters. -The lower-case option, -.BR \-l , -is turned off. -.TP -.B \-x -The given -.IR vname s -are marked for automatic -export to the -.I environment\^ -of subsequently-executed commands. -Variables whose names contain a \fB\s+2.\s-2\fP -can not be exported. -.PD -.PP -The -.B \-i -attribute can not be specified along with -.BR \-R , -.BR \-L , -.BR \-Z , -or -.BR \-f . -.PP -Using -.B \+ -rather than -.B \- -causes these options to be turned off. -If no -.I vname\^ -arguments are given -a list of -.I vnames\^ -(and optionally the -.IR values\^ ) -of the -.I variables\^ -is printed. -(Using -.B \+ -rather than -.B \- -keeps the -values from being printed.) -The -.B \-p -option causes -.B typeset -followed by the the option letters -to be printed before each name -rather than the names of the options. -If any option other than -.B \-p -is given, -only those variables -which have all of the given -options are printed. -Otherwise, the -.IR vname s -and -.I attributes\^ -of all -.I variables\^ -are printed. -.RE -.TP -\f3ulimit\fP \*(OK \f3\-HSacdfmnpstv\fP \*(CK \*(OK \f2limit\^\fP \*(CK -Set or display a resource limit. -The available resources limits are listed below. -Many systems do not contain one or more of these limits. -The limit for a specified resource is set when -.I limit\^ -is specified. -The value of -.I limit\^ -can be a number in the unit specified below with each resource, -or the value -.BR unlimited . -The -.B \-H -and -.B \-S -options specify whether the hard limit or the -soft limit for the given resource is set. -A hard limit cannot be increased once it is set. A soft -limit can be increased up to the value of the hard limit. -If neither the -.B H -or -.B S -options is specified, the limit applies to both. -The current resource limit is printed when -.I limit\^ -is omitted. -In this case the soft limit is printed unless -.B H -is specified. -When more that one resource is specified, then the limit -name and unit is printed before the value. -.RS -.PD 0 -.TP -.B \-a -Lists all of the current resource limits. -.TP -.B \-c -The number of 512-byte blocks on the size of core dumps. -.TP -.B \-d -The number of K-bytes on the size of the data area. -.TP -.B \-f -The number of 512-byte blocks on files that can be written the -current process or by child processes (files of any size may be read). -.TP -.B \-m -The number of K-bytes on the size of physical memory. -.TP -.B \-n -The number of file descriptors plus 1. -.TP -.B \-p -The number of 512-byte blocks for pipe buffering. -.TP -.B \-s -The number of K-bytes on the size of the stack area. -.TP -.B \-t -The number of seconds to be used by each process. -.TP -.B \-v -The number of K-bytes for virtual memory. -.PD -.PP -If no option is given, -.B \-f -is assumed. -.RE -.TP -\f3umask\fP \*(OK \f3\-S\fP \*(CK \*(OK \f2mask\^\fP \*(CK -The user file-creation mask is set to -.I mask\^ -(see -.IR umask (2)). -.I mask -can either be an octal number or -a symbolic value as described in -.IR chmod (1). -If a symbolic value is given, -the new -umask value is the complement of the result of -applying -.I mask\^ -to the complement of the previous umask value. -If -.I mask\^ -is omitted, the current value of the mask is printed. -The -.B \-S -option causes the mode to be printed as a symbolic -value. Otherwise, the -mask is printed in octal. -.TP -\(dg \f3unalias\fP \*(OK \f3\-a\fP \*(CK \f2name\^\fP .\|.\|. -The -.I aliases\^ -given by the list of -.IR name s -are removed from the -.I alias\^ -list. -The -.B \-a -option causes all the -aliases to be unset. -.TP -\(dg\f3unset\fP \*(OK \f3\-fv\fP \*(CK \f2vname\^\fP .\|.\|. -The variables given by the list of -.IR vname s -are unassigned, -i.e., -their values and attributes are erased. -Readonly variables cannot be unset. -If the -.B \-f -option -is set, then the names refer to -.I function\^ -names. -If the -.B \-v -option is set, then the names refer to -.I variable\^ -names. -The default is equivalent to -.BR \-v . -Unsetting -.SM -.BR ERRNO , -.SM -.BR LINENO , -.SM -.BR MAILCHECK , -.SM -.BR OPTARG , -.SM -.BR OPTIND , -.SM -.BR RANDOM , -.SM -.BR SECONDS , -.SM -.BR TMOUT , -and -.SM -.B _ -removes their special meaning even if they are -subsequently assigned to. -.TP -\f3wait\fP \*(OK \f2job\^\fP .\|.\|. \*(CK -Wait for the specified -.I job -and -report its termination status. -If -.I job\^ -is not given then all currently active child processes are waited for. -The exit status from this command is that of -the last process waited for. -See -.I Jobs -for a description of the format of -.IR job . -.TP -\f3whence\fP \*(OK \f3\-apv\fP \*(CK \f2name\^\fP .\|.\|. -For each -.IR name , -indicate how it -would be interpreted if used as a command name. -.P -The -.B \-v -option -produces a more verbose report. -.P -The -.B \-p -option -does a path search for -.I name\^ -even if name is an alias, a function, or a reserved word. -The -.B \-a -is similar to the -.B \-v -option but causes -all interpretations of the given name to be reported. -.SS Invocation. -If the shell is invoked by -.IR exec (2), -and the first character of argument zero -.RB ( $0 ) -is -.BR \- , -then the shell is assumed to be a -.I login -shell and -commands are read from -.B /etc/profile -and then from either -.B .profile -in the current directory or -.BR \s-1$HOME\s+1/.profile , -if either file exists. -Next, commands are read from -the file named by -performing parameter expansion, command substitution, -and arithmetic substitution on -the value of the environment variable -.SM -.B ENV -if the file exists. -If the -.B \-s -option is not present and -.I arg\^ -is, then a path search is performed on the first -.I arg\^ -to determine the name of the script to execute. -The script -.I arg\^ -must have read permission and any -.I setuid -and -.I getgid -settings will be ignored. -If the script is not found on the path, -.I arg\^ -is processed as if it named a built-in command or function. -Commands are then read as described below; -the following option are interpreted by the shell -when it is invoked: -.PP -.PD 0 -.TP 10 -.BI \-c -If the -.B \-c -option is present then -commands are read from the first -.IR arg . -Any remaining arguments become -position parameters starting at -.B 0 . -.TP -.B \-s -If the -.B \-s -option is present or if no -arguments remain -then commands are read from the standard input. -Shell output, -except for the output of the -.I Special Commands\^ -listed above, -is written to -file descriptor 2. -.TP -.B \-i -If the -.B \-i -option is present or -if the shell input and output are attached to a terminal (as told by -.IR ioctl (2)) -then this shell is -.IR interactive . -In this case \s-1TERM\s+1 is ignored (so that \f3kill 0\fP -does not kill an interactive shell) and \s-1INTR\s+1 is caught and ignored -(so that -.B wait -is interruptible). -In all cases, \s-1QUIT\s+1 is ignored by the shell. -.TP -.B \-r -If the -.B \-r -option is present the shell is a restricted shell. -.PD -.PP -The -.B \-I -.I filename\^ -option is used -to generate a cross reference database -that can be used by a separate utility -to find definitions and references for variables and commands. -.PP -The remaining options and arguments are described under the -.B set -command above. -An optional -.B \- -as the first argument is ignored. -.if \nZ=0 \{.SS Rsh Only. -.I Rsh\} -.if \nZ=1 \{.SS Rksh Only. -.I Rksh\} -is used to set up login names and execution environments whose -capabilities are more controlled than those of the standard shell. -The actions of -.if \nZ=0 .B rsh\^ -.if \nZ=1 .B rksh\^ -are identical to those of -.if \nZ=0 .BR sh\^ , -.if \nZ=1 .BR ksh\^ , -except that the following are disallowed: -.RS -.PD 0 -.PP -changing directory (see -.IR cd (1)), -.br -setting or unsetting the value or attributes of -.SM -.BR SHELL , -.SM -.BR ENV , -or -.SM -.BR PATH\*S, -.br -specifying path or -command names containing -.BR / , -.br -redirecting output -.RB ( > , -.BR >| , -.BR <> , -and -.BR >> ). -.PD -.RE -.PP -The restrictions above are enforced -after \f3.profile\fP and the -.SM -.B ENV -files are interpreted. -.PP -When a command to be executed is found to be a shell procedure, -.if \nZ=0 \{.B rsh\^ -invokes -.I sh\^\} -.if \nZ=1 \{.B rksh\^ -invokes -.I ksh\^\} -to execute it. -Thus, it is possible to provide to the end-user shell procedures -that have access to the full power of -the standard shell, -while imposing a limited menu of commands; -this scheme assumes that the end-user does not have write and -execute permissions in the same directory. -.PP -The net effect of these rules is that the writer of the -.B .profile -has complete control over user actions, -by performing guaranteed setup actions -and leaving the user in an appropriate directory -(probably -.I not\^ -the login directory). -.PP -The system administrator often sets up a directory -of commands -(i.e., -.BR /usr/rbin ) -that can be safely invoked by -.if \nZ=0 .BR rsh . -.if \nZ=1 .BR rksh . -.SH EXIT STATUS -Errors detected by the shell, such as syntax errors, -cause the shell -to return a non-zero exit status. -Otherwise, the shell returns the exit status of -the last command executed (see also the -.B exit -command above). -If the shell is being used non-interactively -then execution of the shell file is abandoned. -Run time errors detected by the shell are reported by -printing the command or function name and the error condition. -If the line number that the error occurred on is greater than one, -then the line number is also printed in square brackets -.RB ( "[]" ) -after the command or function name. -.SH FILES -/etc/passwd -.br -/etc/profile -.br -/etc/suid_profile -.br -\s-1$HOME\s+1/\f3.\fPprofile -.br -/tmp/sh\(** -.br -/dev/null -.SH SEE ALSO -cat(1), -cd(1), -chmod(1), -cut(1), -echo(1), -emacs(1), -env(1), -gmacs(1), -newgrp(1), -stty(1), -test(1), -umask(1), -vi(1), -dup(2), -exec(2), -fork(2), -ioctl(2), -lseek(2), -paste(1), -pipe(2), -umask(2), -ulimit(2), -wait(2), -rand(3), -a.out(5), -profile(5), -environ(7). -.PP -Morris I. Bolsky and David G. Korn, -.IR "The KornShell Command and Programming Language" , -Prentice Hall, 1989, ISBN 0-13-516972-0. -.SH CAVEATS -.PP -If a command -is executed, and then a command with the same name is -installed in a directory in the search path before the directory where the -original command was found, the shell will continue to -.I exec\^ -the original command. -Use the -.B \-t -option of the -.B alias\^ -command to correct this situation. -.PP -Some very old shell scripts contain a -.B ^ -as a synonym for the pipe character -.BR \(bv . -.PP -Using the -.B hist\^ -built-in command within a compound command will cause the whole -command to disappear from the history file. -.PP -The built-in command \f3\|.\fP \f2file\^\fP -reads the whole file before any commands are executed. -Therefore, -.B alias -and -.B unalias -commands in the file -will not apply to any commands defined in the file. -.PP -Traps are not processed while a job is waiting for a foreground process. -Thus, a trap on -.B CHLD -won't be executed until the foreground job terminates. - diff --git a/cde/programs/dtksh/ksh93/man/man3/nval.3 b/cde/programs/dtksh/ksh93/man/man3/nval.3 deleted file mode 100644 index 51b060561..000000000 --- a/cde/programs/dtksh/ksh93/man/man3/nval.3 +++ /dev/null @@ -1,351 +0,0 @@ -.\" $XConsortium: nval.3 /main/2 1995/07/17 14:27:24 drk $ -.TH NVAL 3 "12 Nov 1992" -.PP -\fBNAME\fP -.PP -\fBnval\fR \- a \f5ksh\fP name/value library -.PP -\fBSYNOPSIS\fP -.ta .8i 1.6i 2.4i 3.2i 4.0i 4.8i -.PP -.nf -.ft 5 -#include - -Namval_t *nv_namset(const char *\fIname\fP, Hashtab_t *\fItable\fP, int \fItype\fP); -Namval_t *nv_search(const char *\fIname\fP, Hashtab_t *\fItable\fP, int \fItype\fP); -void nv_free(Namval_t *\fInp\fP); - -char *nv_name(Namval_t *\fInp\fP); -char *nv_getval(Namval_t *\fInp\fP); -double nv_getnum(Namval_t *\fInp\fP); -void nv_putval(Namval_t *\fInp\fP, const char *\fIval\fP, int \fItype\fP); - -Namfun_t *nv_stack(Namval_t *\fInp\fP, Namfun_t *\fIfp\fP); -char *nv_getv(Namval_t *\fInp\fP, Namfun_t *\fIfp\fP); -double nv_getn(Namval_t *\fInp\fP, Namfun_t *\fIfp\fP); -void nv_putv(Namval_t *\fInp\fP, const char *\fIval\fP, int \fItype\fP, Namfun_t *\fIfp\fP); -char *nv_settrap(Namval_t *\fInp\fP, const char *\fIe\fP, Namval_t *\fIa\fP, Namfun_t *\fIfp\fP); -Namval_t *nv_create(Namval_t *\fInp\fP, const char *\fIname\fP, Namfun_t *\fIfp\fP); - -void nv_newtype(Namval_t *\fInp\fP, unsigned \fItype\fP, int \fIsize\fP); -unsigned nv_istype(Namval_t *\fInp\fP, unsigned \fItype\fP); -int nv_scan(Hashtab_t *\fItable\fP, void(*\fIfn\fP)(Namval_t*,int,int)); - -Namarr_t *nv_setarray(Namval_t *\fInp\fP,void*(*\fIfun\fP)(Namval_t*,const char*,int)); -Namval_t *nv_putsub(Namval_t *\fInp\fP, char *\fIname\fP, long \fImode\fP); -char *nv_getsub(Namval_t *\fInp\fP); -int nv_nextsub(Namval_t *\fInp\fP); -int nv_aindex(Namval_t *\fInp\fP); -void nv_setref(Namval_t *\fInp\fP); -void nv_setvtree(Namval_t *\fInp\fP); -.fR -.fi -.PP -\fBDESCRIPTION\fP -.PP -\fINval\fP is a library of functions for interacting with name-value -pairs as used in \f5ksh\fP. -It is built on top an the extensible hashing library facility -in \f5libast\fP. -Each name-value pair is represented by a -type named \f5Namval_t\fP. -A \f5Namval_t\fP contains the name, value and -attributes of a variable. -The following attributes can be associated with a name-value pair: -.IP -\f5NV_EXPORT\fP: -The export attribute. -.IP -\f5NV_RDONLY\fP: -The readonly attribute. -.IP -\f5NV_LTOU\fP: -Lower case characters are converted to upper case characters. -.IP -\f5NV_UTOL\fP: -Upper case characters are converted to lower case characters. -.IP -\f5NV_RJUST\fP: -Right justify and blank fill. -This attribute has an associated size that defines the -string length of the value. -.IP -\f5NV_LJUST\fP: -Left justify and blank fill. -This attribute has an associated size that defines the -string length of the value. -.IP -\f5NV_ZFILL\fP: -Without \f5NV_LJUST\fP, right justifies and fills with leading zeros. -With \f5NV_LJUST\fP, left justify and strip leading zeros. -Left justify and blank fill. -This attribute has an associated size that defines the -string length of the value. -.IP -\f5NV_TAGGED\fP: -Indicates the tagged attribute. -.IP -\f5NV_INTEGER\fP: -Causes value to be represented by a number. -This attribute has an associated number that defines the -arithmetic base to be used when the value is expanded as a string. -.IP -\f5NV_DOUBLE\fP: -Used in conjunction with \f5NV_INTEGER\fP to cause value -to be stored as a double precision floating point number. -This attribute has an associated number that defines the -number of places after the decimal point to be used when -the value is expanded as a string. -.IP -\f5NV_EXPNOTE\fP: -Used in conjunction with \f5NV_INTEGER\fP and \f5NV_DOUBLE\fP to -cause the value to be represented in scientific notation when -expanded as a string. -This attribute has an associated number that defines the -the precision of the mantissa. -.IP -\f5NV_REF\fP: -The name-value pair is a name reference variable. -.PP -The function \f5nv_namset()\fP returns a pointer to a name-value -pair corresponding to the given \fIname\fP. -If a name-value pair by this name does not already exist, it is -created unless \fItype\fP contains the \f5NV_NOADD\fP flag. -If the first identifier in \fIname\fP is a reference and is not -preceded by a \fB.\fP, -it will be replaced by the value of the reference -to find the name of a variable. -Unless \fItype\fP contains the \f5NV_REF\fP flag, -if the name-value pair give by \fIname\fP has the \f5NV_REF\fP -attribute, it will be replaced by the variable whose name -is the value of this name-value pair. -Unless prohibited by the \fItype\fP argument, -the \f5name\fP variable can contain an \f5=\fP -and a value that will be assigned to the name-value pair. -The argument \fItable\fP defines the table to search. -A \f5NULL\fP value causes the shell variable table to be searched. -The \fItype\fP argument consists of the bitwise-or of zero or more -of the following and zero or more of the attributes listed above. -.IP -\f5NV_VARNAME\fP: -An invalid variable name causes an error. -.IP -\f5NV_IDENTIFIER\fP: -An variable name that is not an identifier causes an error. -.IP -\f5NV_NOASSIGN\fP: -The \f5name\fP argument cannot contain an assignment. -.IP -\f5NV_ARRAY\fP: -The \f5name\fP argument cannot contain a subscript. -.IP -\f5NV_REF\fP: -Do not follow references when finding the name-value pair. -.IP -\f5NV_NOADD\fP: -The name-value pair will not be added if it doesn't exist. -Instead a \f5NULL\fP pointer will be returned. -.IP -\f5NV_NOSCOPE\fP: -Only the top level scope is used. -.PP -The \f5nv_search()\fP function returns a pointer -pointer to the name-value pair corresponding to the given name. -The \fItable\fP argument must always be specified. -The \fItype\fP argument must either be \f50\fP or \f5NV_ADD\fP. -A value of \f50\fP causes a \f5NULL\fP pointer to be returned -if the name-value pair does not already exist, whereas the value -\f5NV_ADD\fP causes the name-value pair to be created if it -does not already exist. -There is no validity check performed on the \fIname\fP argument. -.PP -The \f5nv_name()\fP function returns the name of the given name-value -pair \fInp\fP. -The \f5nv_getval()\fP function returns the value of the given -name-value pair as a string. A \f5NULL\fP return value indicates -that the name-value pair is unset. -The \f5nv_getnum()\fP function returns the value of the given -name-value pair as a double precision number. -For name-value pairs without the \f5NV_INTEGER\fP attribute, -the string value is evaluated as an arithmetic expression to -arrive at a numerical value. -.PP -The \f5nv_putval()\fP function is used to assign a \fIvalue\fP to -the name-value pair \fInp\fP. -The \fItype\fP argument consists zero or more of the bitwise-or -of \f5NV_INTEGER\fP and \f5NV_RDONLY\fP. -The presence of \f5NV_RDONLY\fP allows the assignment to occur -even if the name-value pair has the \f5NV_RDONLY\fP attribute. -The presence of \f5NV_INTEGER\fP indicates that the \fIvalue\fP -argument is actually a pointer to a double precision number -containing the value for this name-value pair. -In all cases, a copy of the value is stored as the value for -\fInp\fP. -.PP -The \f5nv_istype()\fP function can test whether or not any of -the attributes given by \fItype\fP is set. -The attribute \f5NV_ARRAY\fP can be used to test whether -or not the given name-value pair is an array. -The \f5nv_newtype()\fP function can be used to change the -attributes of the given name-value pair. -The \fIsize\fP argument is needed for attributes that require -an additional argument. -Changing the attribute may require changing the value -to agree with the new type. -For an array variable, each of the values will be changed. -.PP -A user can intercept the lookup and assignment operations by -supplying their own discipline. -A discipline is a set of functions that override the getting -and putting of values to a name-value pair. -A discipline is defined by the type -\f5Namfun_t\fP which contains the following public fields: -.nf - \f5void (*putval)();\fP - \f5char *(*getval)();\fP - \f5double (*getnum)();\fP - \f5char (*settrap)();\fP - \f5Namval_t (*create)();\fP -.fi -To create a discipline, a user creates an instance of the type -\f5Namfun_t\fP and assigns functions to one or more of these -fields. The remaining fields must be \f50\fP. -The instance must be at the beginning of a structure that contains -additional fields that are used within the discipline functions. -The discipline is installed or removed with the -\f5nv_stack()\fP function. -The \fIgetval\fP\f5()\fP discipline function is called with a pointer -to the name-value pair, \fInp\fP, and a pointer to the discipline, -\fIfp\fP. -Inside the \fIgetval\fP\f5()\fP function, the \f5nv_get()\fP function -can be used to get the value of the name-value pair that -would have resulted if the discipline were not used. -The \fIgetnum()\fP discipline is called whenever a numerical -value is needed for the name-value pair \fInp\fP. -The \fIputval\fP\f5()\fP discipline function is used to -override the assignment of values -to a name-value pair. When a name-value pair is unset, \fIputval\fP\f5()\fP -is called with \fIvalue\fP set to \f5NULL\fP. -The \f5nv_putv()\fP function is used within the \fIputval\fP\f5()\fP -to perform the assignment that would have occurred -if the discipline has not been installed. -.PP -The \fIcreate\fP\f5()\fP discipline function is called from -\f5nv_namset\fP\f5()\fP when the name-value pair for name containing a -.B \s+2.\s-2 -doesn't exist. -This function is passed the name-value pointer of the longest -parent name-value pair that exists, plus the remaining string. -The \fIcreate\fP\f5()\fP discipline function -must return the created name-value pair, otherwise the default action -will be taken. -The \f5nv_create()\fP function may be called within -the \fIcreate\fP\f5()\fP -discipline function -to perform the action that would have occurred -by an earlier discipline. -.PP -The \fIsettrap\fP\f5()\fP discipline function is used in conjunction with -user defined discipline shell functions whose are of the form -\fIvarname\fP\f5.\fP\fIevent\fP. -Whenever a function whose name is of the form \fIvarname\fP\f5.\fP\fIevent\fP, -is defined the \fIsettrap\fP\f5()\fP function is invoked with the same -argument format as \f5nv_settrap\fP\f5()\fP. -If the given event \fIe\fP is known by this discipline, -then the value of the action associated without the event should be returned. -Otherwise, this discipline function -should return the value of \f5nv_settrap()\fP. The \f5nv_settrap()\fP invokes -earlier disciplines to find the given event. -If the event \fIe\fP is NULL, the \fIsettrap\fP\f5()\fP must return the -name of the trap that follows the event name given by -\fIa\fP. If \fIa\fP is also NULL, the name of the first event -must be returned. -.PP -The \f5nv_scan()\fP function is used to walk through -all name-value pairs in the table given by \fItable\fP. -If \fIfn\fP is non-zero, then this function will be executed -for each name-value pair in the table. -The number of elements in the table will be returned. -.PP -The \f5nv_aindex()\fP function returns -the current index for -the indexed array given by the name-value pair pointer \fInp\fP. -The return value is negative if \fInp\fP refers to -an associative array. -.PP -The \f5nv_setarray()\fP function is used to create an associative array -from a name-value pair node. -The function \fIfun\fP defines the semantics of the associative -array. -Using \fIfun\fP equal to \f5nv_associative()\fP implements the default -associative array semantics -that is used with \f5typeset\ -A\fP. -This function \fIfun\fP will be called with third argument as follows: -.IP -\f5NV_AINIT\fP: -This will be called at initialization. -The function you supply must return a pointer to a structure -that contains the type \f5Namarr_t\fP as the first element. -All other calls receive this value as an argument. -.IP -\f5NV_AFREE\fP: -This will be called after all elements of the name-value pair have been -deleted and the array is to be freed. -.IP -\f5NV_ADELETE\fP: -The current element should be deleted. -.IP -\f5NV_ANEXT\fP: -This means that the array subscript should be advanced to the -next subscript. A \f5NULL\fP return indicates that there are -no more subscripts. -.IP -\f5NV_ANAME\fP: -The name of the current subscript must be returned. -.PP -If \fInp\fP refers to an array, -the \f5nv_getsub()\fP returns a pointer to -the name of the current subscript. -Otherwise, \f5nv_subscript()\fP -returns \f5NULL\fP. -.PP -The \f5nv_putsub()\fP function is used to -set the subscript for the next reference to \f5np\fP. -If the \f5name\fP argument is not \f5NULL\fP, -it defines the value of the next subscript. -The \f5mode\fP argument can contain one or more of the following flags: -.IP -\f5ARRAY_ADD\fP: -Add the subscript if not found. -Otherwise, \f5nv_putsub()\fP returns \f5NULL\fP if the -given subscript is not found. -.IP -\f5ARRAY_SCAN\fP: -Begin a walk through the subscripts starting at the subscript -given by \f5name\fP if given. Otherwise, -the walk is started from the beginning. -The \f5nv_nextsub()\fP function is used to advance to the -next subscript. -It returns 0 if there are no more subscripts or if called -when not in a scan. -.IP -\f5ARRAY_UNDEF\fP: -This causes any current scan to terminate and leaves the -subscript in an undefined state. -.PP -If \f5ARRAY_ADD\fP is not given and the subscript -does not exist, a \f5NULL\fP value is returned. -.PP -The \f5nv_setref()\fP function makes the name-value pair \f5np\fP -into a reference to the variable whose name is given by -the value of \f5np\fP. -.PP -The \f5nv_setvtree()\fP function makes the name-value pair \f5np\fP -into a tree structured variable so that \f5nv_getval()\fP -will return a string containing all the names and values of -children nodes in a format that can be used in -a shell compound assignment. -.PP -\fBAUTHOR\fP -David G. Korn (dgk@research.att.com). diff --git a/cde/programs/dtksh/ksh93/ship/shipin b/cde/programs/dtksh/ksh93/ship/shipin index 0a005168a..e91dbf260 100755 --- a/cde/programs/dtksh/ksh93/ship/shipin +++ b/cde/programs/dtksh/ksh93/ship/shipin @@ -727,110 +727,6 @@ esac esac trap 'exit 2' 1 2 -# -# check if we can use pax -- punt to cpio -# - -AR_DELTA= -NEED_pax= -_cpio_= -_cpio_local= -_pax_= -_pax_local= -for p in $_path_ -do case $AR_DELTA in - "") for f in $p/pax $p/pax.save - do if ($f -f /dev/null -z /dev/null) >/dev/null 2>&1 - then _pax_=$p/pax - c=pax; eval new=$_stamp_ - if test "$new" -ge "$OLDEST_pax" - then case $f in - $BIN/pax) if test ! -f $f.save - then $_trace_ cp $f $f.save - fi - ;; - esac - AR_DELTA=$f - break 2 - fi - fi - done - ;; - esac - case $_cpio_ in - "") if test -f $p/cpio - then case $p in - $BIN) _cpio_local=$p/cpio - ;; - *) _cpio_=$p/cpio - case $AR_DELTA in - ?*) break ;; - esac - ;; - esac - fi - ;; - esac - case $_pax_ in - "") if test -f $p/pax - then case $p in - $BIN) _pax_local=$p/pax - ;; - *) _pax_=$p/pax - case $AR_DELTA in - ?*) break ;; - esac - ;; - esac - fi - ;; - esac -done -case $_cpio_ in -"") _cpio_=$_cpio_local ;; -esac -case $_pax_ in -"") _pax_=$_pax_local ;; -esac -case $_pax_ in -?*) AR_PATH=$_pax_ - case $AR_DELTA in - "") AR_LIST="$AR_PATH" ;; - *) AR_LIST="$AR_PATH -x ignore" ;; - esac - AR_READ="$AR_PATH -r" - AR_WRITE="$AR_PATH -w" - ;; -*) AAR_PATH=tar - AAR_LIST="$AAR_PATH t" - AAR_READ="$AAR_PATH x" - AAR_WRITE="$AAR_PATH c" - case $_cpio_ in - ?*) AR_PATH=$_cpio_ - AR_LIST="$AR_PATH -ict" - AR_READ="$AR_PATH -icdmu" - AR_WRITE="$AR_PATH -oc" - ;; - *) AR_PATH=$AAR_PATH - AR_LIST=$AAR_LIST - AR_READ=$AAR_READ - AR_WRITE=$AAR_WRITE - AAR_PATH= - AAR_LIST= - AAR_READ= - AAR_WRITE= - ;; - esac -esac -case $AR_PATH in -"") echo $_command_: must have pax, cpio, or tar to uncrate >&2; exit 1 ;; -esac -OAR_PATH=$AR_PATH -OAR_LIST=$AR_LIST -OAR_READ=$AR_READ -OAR_WRITE=$AR_WRITE -OAR_DELTA=$AR_DELTA - # # check if we can use nmake from the start # if so then limit proto to notices only diff --git a/cde/programs/dtksh/ksh93/ship/shipproto.c b/cde/programs/dtksh/ksh93/ship/shipproto.c index 787f9700d..8d4165d39 100644 --- a/cde/programs/dtksh/ksh93/ship/shipproto.c +++ b/cde/programs/dtksh/ksh93/ship/shipproto.c @@ -104,6 +104,7 @@ # include # include +# include # undef ctime @@ -1331,7 +1332,7 @@ struct ppsymkey extern __MANGLE__ int access __PROTO__((const char*, int)); -extern __MANGLE__ __V_* calloc __PROTO__((int, int)); +extern __MANGLE__ __V_* calloc __PROTO__((size_t, size_t)); extern __MANGLE__ int close __PROTO__((int)); extern __MANGLE__ int creat __PROTO__((const char*, int)); extern __MANGLE__ char* ctime __PROTO__((time_t*)); diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/alarm.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/alarm.c index af880508e..a0a82914b 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/alarm.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/alarm.c @@ -134,7 +134,7 @@ static __V_ *time_add __PARAM__((struct tevent *item, __V_ *list), (item, list)) tp->next = item; } tp = item; - tp->timeout = (__V_*)timeradd(tp->milli,tp->flags&R_FLAG,trap_timeout,(__V_*)tp); + tp->timeout = (__V_*)kshtimeradd(tp->milli,tp->flags&R_FLAG,trap_timeout,(__V_*)tp); return(list); } diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/read.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/read.c index 9f7bec038..1af46e23e 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/read.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/read.c @@ -271,7 +271,7 @@ int sh_readline __PARAM__((char **names, int fd, int flags,long timeout), (names jmpval = sigsetjmp(buff.buff,0); if(jmpval) goto done; - timeslot = (__V_*)timeradd(timeout,0,timedout,(__V_*)iop); + timeslot = (__V_*)kshtimeradd(timeout,0,timedout,(__V_*)iop); } if(!(cp = (unsigned char*)sfgetr(iop,delim,0))) cp = (unsigned char*)sfgetr(iop,delim,-1); diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/sleep.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/sleep.c index 741a477d9..5a1ddb6ba 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/sleep.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/bltins/sleep.c @@ -157,7 +157,7 @@ unsigned sleep __PARAM__((unsigned sec), (sec)) __OTORP__(unsigned sec;){ __V_ *tp; expired = 0; sh.lastsig = 0; - tp = (__V_*)timeradd(1000*sec, 0, completed, (__V_*)0); + tp = (__V_*)kshtimeradd(1000*sec, 0, completed, (__V_*)0); do { pause(); diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/history.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/history.c index c9ccaaf5f..5d56fb320 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/history.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/history.c @@ -372,7 +372,7 @@ retry: #ifdef KSHELL (HISTCUR)->nvalue.lp = (&hp->histind); #endif /* KSHELL */ - timeradd(1000L*(HIST_RECENT-30), 1, hist_touch, (__V_*)hp->histname); + kshtimeradd(1000L*(HIST_RECENT-30), 1, hist_touch, (__V_*)hp->histname); #ifdef SHOPT_ACCTFILE if(sh_isstate(SH_INTERACTIVE)) acctinit(); diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/vi.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/vi.c index f0acfecb5..bfeffba7e 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/vi.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/edit/vi.c @@ -124,7 +124,6 @@ #define MAXCHAR MAXLINE-2 /* max char per line */ -#undef isblank #ifdef SHOPT_MULTIBYTE static int bigvi; # define gencpy(a,b) ed_gencpy(a,b) @@ -134,14 +133,14 @@ # define is_print(c) ((c&~STRIP) || isprint(c)) static int isalph __PROTO__((int)); static int ismetach __PROTO__((int)); - static int isblank __PROTO__((int)); + static int kshisblank __PROTO__((int)); # include "lexstates.h" #else # define gencpy(a,b) strcpy((char*)(a),(char*)(b)) # define genncpy(a,b,n) strncpy((char*)(a),(char*)(b),n) # define genlen(str) strlen(str) # define isalph(v) ((_c=virtual[v])=='_'||isalnum(_c)) -# define isblank(v) isspace(virtual[v]) +# define kshisblank(v) isspace(virtual[v]) # define ismetach(v) ismeta(virtual[v]) # define digit(c) isdigit(c) # define is_print(c) isprint(c) @@ -220,7 +219,7 @@ static char paren_chars[] = "([{)]}"; /* for % command */ #ifdef FIORDCHK static clock_t typeahead; /* typeahead occurred */ - extern __MANGLE__ int ioctl __PROTO__((int, int, ...)); + extern __MANGLE__ int ioctl __PROTO__((int, unsigned long, ...)); #else static int typeahead; /* typeahead occurred */ #endif /* FIORDCHK */ @@ -680,7 +679,7 @@ static void backword __PARAM__((int nwords, register int cmd), (nwords, cmd)) __ register int tcur_virt = cur_virt; while( nwords-- && tcur_virt > first_virt ) { - if( !isblank(tcur_virt) && isblank(tcur_virt-1) + if( !kshisblank(tcur_virt) && kshisblank(tcur_virt-1) && tcur_virt>first_virt ) --tcur_virt; else if(cmd != 'B') @@ -690,11 +689,11 @@ static void backword __PARAM__((int nwords, register int cmd), (nwords, cmd)) __ if((!cur && last) || (cur && !last)) --tcur_virt; } - while( isblank(tcur_virt) && tcur_virt>=first_virt ) + while( kshisblank(tcur_virt) && tcur_virt>=first_virt ) --tcur_virt; if( cmd == 'B' ) { - while( !isblank(tcur_virt) && tcur_virt>=first_virt ) + while( !kshisblank(tcur_virt) && tcur_virt>=first_virt ) --tcur_virt; } else @@ -703,7 +702,7 @@ static void backword __PARAM__((int nwords, register int cmd), (nwords, cmd)) __ while( isalph(tcur_virt) && tcur_virt>=first_virt ) --tcur_virt; else - while( !isalph(tcur_virt) && !isblank(tcur_virt) + while( !isalph(tcur_virt) && !kshisblank(tcur_virt) && tcur_virt>=first_virt ) --tcur_virt; } @@ -1185,7 +1184,7 @@ static int delmotion __PARAM__((int motion, int mode), (motion, mode)) __OTORP__ { /*** called by change operation, user really expects ***/ /* the effect of the eE commands, so back up to end of word */ - while( end>begin && isblank(end-1) ) + while( end>begin && kshisblank(end-1) ) --end; if( end == begin ) ++end; @@ -1220,13 +1219,13 @@ static void endword __PARAM__((int nwords, register int cmd), (nwords, cmd)) __O register int tcur_virt = cur_virt; while( nwords-- ) { - if( !isblank(tcur_virt) && tcur_virt<=last_virt ) + if( !kshisblank(tcur_virt) && tcur_virt<=last_virt ) ++tcur_virt; - while( isblank(tcur_virt) && tcur_virt<=last_virt ) + while( kshisblank(tcur_virt) && tcur_virt<=last_virt ) ++tcur_virt; if( cmd == 'E' ) { - while( !isblank(tcur_virt) && tcur_virt<=last_virt ) + while( !kshisblank(tcur_virt) && tcur_virt<=last_virt ) ++tcur_virt; } else @@ -1235,7 +1234,7 @@ static void endword __PARAM__((int nwords, register int cmd), (nwords, cmd)) __O while( isalph(tcur_virt) && tcur_virt<=last_virt ) ++tcur_virt; else - while( !isalph(tcur_virt) && !isblank(tcur_virt) + while( !isalph(tcur_virt) && !kshisblank(tcur_virt) && tcur_virt<=last_virt ) ++tcur_virt; } @@ -1258,7 +1257,7 @@ static void forward __PARAM__((register int nwords, int cmd), (nwords, cmd)) __O { if( cmd == 'W' ) { - while( !isblank(tcur_virt) && tcur_virt < last_virt ) + while( !kshisblank(tcur_virt) && tcur_virt < last_virt ) ++tcur_virt; } else @@ -1270,12 +1269,12 @@ static void forward __PARAM__((register int nwords, int cmd), (nwords, cmd)) __O } else { - while( !isalph(tcur_virt) && !isblank(tcur_virt) + while( !isalph(tcur_virt) && !kshisblank(tcur_virt) && tcur_virt < last_virt ) ++tcur_virt; } } - while( isblank(tcur_virt) && tcur_virt < last_virt ) + while( kshisblank(tcur_virt) && tcur_virt < last_virt ) ++tcur_virt; } cur_virt = tcur_virt; @@ -2528,7 +2527,7 @@ yankeol: } - static int isblank __PARAM__((register int c), (c)) __OTORP__(register int c;){ + static int kshisblank __PARAM__((register int c), (c)) __OTORP__(register int c;){ register int v = virtual[c]; return((v&~STRIP)==0 && isspace(v)); } diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/include/fault.h b/cde/programs/dtksh/ksh93/src/cmd/ksh93/include/fault.h index 0ad74319c..9eaf79214 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/include/fault.h +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/include/fault.h @@ -176,7 +176,7 @@ extern __MANGLE__ void sh_siginit __PROTO__((void)); extern __MANGLE__ void sh_sigtrap __PROTO__((int)); extern __MANGLE__ void sh_sigreset __PROTO__((int)); extern __MANGLE__ void sh_timetraps __PROTO__((void)); -extern __MANGLE__ __V_ *timeradd __PROTO__((unsigned long,int ,void (*)(__V_*),__V_*)); +extern __MANGLE__ __V_ *kshtimeradd __PROTO__((unsigned long,int ,void (*)(__V_*),__V_*)); extern __MANGLE__ void timerdel __PROTO__((__V_*)); extern __MANGLE__ const char e_alarm[]; diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/io.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/io.c index 4d8587c4b..f3f87494e 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/io.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/io.c @@ -964,7 +964,7 @@ static int slowread __PARAM__((Sfio_t *iop,__V_ *buff,register int size,Sfdisc_t if(io_prompt(sh.nextprompt)<0 && errno==EIO) return(0); if(sh.timeout) - timeout = (__V_*)timeradd(sh_isstate(SH_GRACE)?1000L*TGRACE:1000L*sh.timeout,0,time_grace,NIL(__V_*)); + timeout = (__V_*)kshtimeradd(sh_isstate(SH_GRACE)?1000L*TGRACE:1000L*sh.timeout,0,time_grace,NIL(__V_*)); # ifdef SHOPT_ESH if(sh_isoption(SH_EMACS|SH_GMACS)) readf = ed_emacsread; diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/timers.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/timers.c index 1f18785c4..13f4c94ec 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/timers.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/timers.c @@ -236,7 +236,7 @@ static void oldalrm __PARAM__((__V_ *handle), (handle)) __OTORP__(__V_ *handle;) (*fn)(SIGALRM); } -__V_ *timeradd __PARAM__((unsigned long msec,int flags,void (*action)(__V_*),__V_ *handle), (msec, flags, action, handle)) __OTORP__(unsigned long msec;int flags;void (*action)();__V_ *handle;){ +__V_ *kshtimeradd __PARAM__((unsigned long msec,int flags,void (*action)(__V_*),__V_ *handle), (msec, flags, action, handle)) __OTORP__(unsigned long msec;int flags;void (*action)();__V_ *handle;){ register Timer_t *tp; double t; Handler_t fn; @@ -260,7 +260,7 @@ __V_ *timeradd __PARAM__((unsigned long msec,int flags,void (*action)(__V_*),__V if(hp) { *hp = fn; - timeradd((long)(1000*t), 0, oldalrm, (__V_*)hp); + kshtimeradd((long)(1000*t), 0, oldalrm, (__V_*)hp); } } tp = tptop; diff --git a/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/xec.c b/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/xec.c index a6cf4c4cb..3736c0d41 100644 --- a/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/xec.c +++ b/cde/programs/dtksh/ksh93/src/cmd/ksh93/sh/xec.c @@ -1322,7 +1322,7 @@ pid_t _sh_fork __PARAM__((register pid_t parent,int flags,int *jobid), (parent, error(ERROR_system(ERROR_NOEXEC),e_nofork); } sh_sigcheck(); - timeout = (__V_*)timeradd(forkcnt, 0, timed_out, NIL(__V_*)); + timeout = (__V_*)kshtimeradd(forkcnt, 0, timed_out, NIL(__V_*)); job_wait((pid_t)-1); if(timeout) { 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 b1b5eff4d..d09af247b 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/hash/hashalloc.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/hash/hashalloc.c @@ -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) diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/port/astconf.c b/cde/programs/dtksh/ksh93/src/lib/libast/port/astconf.c index 233efd797..7133fb71e 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/port/astconf.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/port/astconf.c @@ -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; 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 d8683001c..a95084bb7 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/sfio/sfvprintf.c @@ -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 */ 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 f65a7d6b7..3316b904e 100644 --- a/cde/programs/dtksh/ksh93/src/lib/libast/string/tokscan.c +++ b/cde/programs/dtksh/ksh93/src/lib/libast/string/tokscan.c @@ -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*); diff --git a/cde/programs/dtksh/xmcmds.c b/cde/programs/dtksh/xmcmds.c index 1a8282863..351c52d8c 100644 --- a/cde/programs/dtksh/xmcmds.c +++ b/cde/programs/dtksh/xmcmds.c @@ -171,12 +171,12 @@ static int Text_Widget( int argc, char *argv[]) ; static int Text_VarAndWidget( - int (*func)(), + int (*func)(Widget w), Boolean varIsString, int argc, char *argv[]) ; static int Text_WidgetAndBoolean( - void (*func)(), + void (*func)(Widget w, int b), int argc, char *argv[]) ; static int Text_WidgetAndOneParam( @@ -3737,7 +3737,8 @@ do_catopen( char * ptr; nl_catd nlmsg_fd = (nl_catd)-1; char * errmsg; -#if defined(SVR4) || defined (_AIX) || defined(sco) || defined(DEC) +#if defined(SVR4) || defined (_AIX) || defined(sco) || defined(DEC) || \ + defined(CSRG_BASED) || defined(linux) char * nextMatch; #endif @@ -3761,7 +3762,8 @@ do_catopen( */ altCatName = XtMalloc(strlen(catName) + 10); -#if defined(SVR4) || defined (_AIX) || defined(sco) || defined(DEC) +#if defined(SVR4) || defined (_AIX) || defined(sco) || defined(DEC) || \ + defined(CSRG_BASED) || defined(linux) /* These platforms don't have strrstr() */ ptr = NULL; nextMatch = catName; @@ -3965,7 +3967,7 @@ do_XmTextRemove( static int Text_VarAndWidget( - int (*func)(), + int (*func)(Widget w), Boolean varIsString, int argc, char *argv[] ) @@ -4077,7 +4079,7 @@ do_XmTextGetString( static int Text_WidgetAndBoolean( - void (*func)(), + void (*func)(Widget w, int b), int argc, char *argv[] ) { diff --git a/cde/programs/dtksh/xmdtksym.h b/cde/programs/dtksh/xmdtksym.h index 106e07276..5635275ae 100644 --- a/cde/programs/dtksh/xmdtksym.h +++ b/cde/programs/dtksh/xmdtksym.h @@ -42,6 +42,7 @@ #ifndef _Dtksh_xmdtksym_h #define _Dtksh_xmdtksym_h +#include "exksh.h" extern struct symarray Symarray[]; extern int Symsize; diff --git a/cde/programs/dtlogin/dm.c b/cde/programs/dtlogin/dm.c index 136d0bda8..31635dcd4 100644 --- a/cde/programs/dtlogin/dm.c +++ b/cde/programs/dtlogin/dm.c @@ -53,11 +53,15 @@ # include # include +#if defined(__FreeBSD__) +# include +#else # include +#endif # include # include # include -#if defined(linux) +#if defined(linux) || defined(__FreeBSD__) # include #else # include @@ -936,9 +940,9 @@ StartDisplay( else { strncpy(&(d->utmpId[strlen(d->utmpId)]), t++, 1); } - } while (*t != NULL); + } while (*t != '\0'); - if (*t == NULL) { + if (*t == '\0') { Debug ("All DT utmp IDs already in use. Removing display %s\n", d->name); LogError ((unsigned char *)"All DT utmp IDs already in use. Removing display %s\n", diff --git a/cde/programs/dtlogin/dm.h b/cde/programs/dtlogin/dm.h index 9da55bfda..032a21d3d 100644 --- a/cde/programs/dtlogin/dm.h +++ b/cde/programs/dtlogin/dm.h @@ -202,7 +202,7 @@ ***************************************************************************/ /*#if defined(SYSV) && !defined(hpux)*/ -#if defined(SYSV) || defined(SVR4) || defined(linux) +#if defined(SYSV) || defined(SVR4) || defined(linux) || defined(__FreeBSD__) # include # define waitCode(w) WEXITSTATUS(w) # define waitSig(w) WTERMSIG(w) @@ -477,7 +477,7 @@ struct verify_info { * ***************************************************************************/ -#if !defined(linux) +#if !defined(linux) && !defined(CSRG_BASED) extern char *sys_errlist[]; /* system error msgs */ extern int sys_nerr; /* system error msgs */ #endif diff --git a/cde/programs/dtmail/libDtMail/Common/ImplConfigTable.hh b/cde/programs/dtmail/libDtMail/Common/ImplConfigTable.hh index 090359098..bfc801110 100644 --- a/cde/programs/dtmail/libDtMail/Common/ImplConfigTable.hh +++ b/cde/programs/dtmail/libDtMail/Common/ImplConfigTable.hh @@ -25,9 +25,9 @@ #include struct ImplConfigTable { - char *impl_name; - char *lib_name; - char *meta_entry_point; + const char *impl_name; + const char *lib_name; + const char *meta_entry_point; }; static const ImplConfigTable initial_impls[] = { diff --git a/cde/programs/dtmail/libDtMail/Common/Session.C b/cde/programs/dtmail/libDtMail/Common/Session.C index d81434c5a..0c664cca3 100644 --- a/cde/programs/dtmail/libDtMail/Common/Session.C +++ b/cde/programs/dtmail/libDtMail/Common/Session.C @@ -1618,7 +1618,7 @@ char *from_cs, char *to_cs) DtMailEnv error; iconv_t cd; size_t ileft = (size_t) bp_len, oleft = (size_t) bp_len, ret = 0; -#if defined(_AIX) || defined(sun) +#if defined(_AIX) || defined(sun) | defined(CSRG_BASED) const char *ip = (const char *) *bp; #else char *ip = *bp; diff --git a/cde/programs/dtmail/libDtMail/RFC/RFCBodyPart.C b/cde/programs/dtmail/libDtMail/RFC/RFCBodyPart.C index cd1923d61..172b844ef 100644 --- a/cde/programs/dtmail/libDtMail/RFC/RFCBodyPart.C +++ b/cde/programs/dtmail/libDtMail/RFC/RFCBodyPart.C @@ -1030,7 +1030,7 @@ char *from_cs, char *to_cs) DtMailEnv error; iconv_t cd; size_t ileft = (size_t) bp_len, oleft = (size_t) bp_len, ret = 0; -#if defined(_aix) || defined(sun) +#if defined(_aix) || defined(sun) || defined(CSRG_BASED) const char *ip = (const char *) *bp; #else char *ip = *bp; diff --git a/cde/programs/dtprintinfo/Imakefile b/cde/programs/dtprintinfo/Imakefile index ed42f6e51..82ead7013 100644 --- a/cde/programs/dtprintinfo/Imakefile +++ b/cde/programs/dtprintinfo/Imakefile @@ -68,7 +68,7 @@ DEFINES = -D_TOOLTALK #endif /* special processing for message files */ -SYM2NUM_CMD = ./sym2num +SYM2NUM_CMD = $(SHELL) sym2num SRCS = DtPrintinfo.C OBJS = libUI/BaseUI.o objects/BaseObj.o DtPrintinfo.o diff --git a/cde/programs/dtterm/Imakefile b/cde/programs/dtterm/Imakefile index 847bf14ba..0b168a273 100644 --- a/cde/programs/dtterm/Imakefile +++ b/cde/programs/dtterm/Imakefile @@ -87,7 +87,7 @@ clean:: dtterm.ti: terminfoChecklist $(RM) $@ - CPP="$(CPP) $(TIC_DEFINES)" ./terminfoCreate < terminfoChecklist > $@ + CPP="$(CPP) $(TIC_DEFINES)" $(SHELL) terminfoCreate < terminfoChecklist > $@ includes:: dtterm.ti depend:: dtterm.ti all:: dtterm.ti diff --git a/cde/programs/localized/templates/header2.tmpl b/cde/programs/localized/templates/header2.tmpl index dc16ee177..753f11b31 100644 --- a/cde/programs/localized/templates/header2.tmpl +++ b/cde/programs/localized/templates/header2.tmpl @@ -87,7 +87,7 @@ includes:: @@\ $(MAKEMESSCAT) $(GENCATFLAGS) $@ $(LANG) #endif -MAKEMESSCAT = $(CDESRC)/localized/util/makeMessCat -SYM2NUM_CMD = $(CDESRC)/dtprintinfo/sym2num +MAKEMESSCAT = $(KORNSHELL) $(CDESRC)/localized/util/makeMessCat +SYM2NUM_CMD = $(SHELL) $(CDESRC)/dtprintinfo/sym2num MsgCatRule() diff --git a/cde/programs/localized/templates/msg.tmpl b/cde/programs/localized/templates/msg.tmpl index 697f45754..f9987c710 100644 --- a/cde/programs/localized/templates/msg.tmpl +++ b/cde/programs/localized/templates/msg.tmpl @@ -7,5 +7,6 @@ RandomMessageCatalogRule() clean:: $(RM) *.cat + $(RM) *.tmp.msg depend::