├── CHANGES ├── DOCUMENTATION.old ├── LICENCE │ ├── COPYING │ ├── COPYING.LGPL │ ├── LICENSE │ ├── LUCENT │ ├── OPENSOLARIS.LICENSE │ └── README └── README ├── LICENCE ├── Makefile.mk ├── README.md ├── _install ├── Makefile.mk ├── install.1b └── install_ucb.c ├── apply ├── Makefile.mk ├── apply.1b ├── apply.c └── pick.sh ├── banner ├── Makefile.mk ├── banner.1 └── banner.c ├── basename ├── Makefile.mk ├── basename.1 ├── basename.1b └── basename.c ├── bc ├── Makefile.mk ├── bc.1 ├── bc.y ├── lib.b └── yyval.sed ├── bdiff ├── Makefile.mk ├── bdiff.1 ├── bdiff.c └── fatal.h ├── bfs ├── Makefile.mk ├── bfs.1 └── bfs.c ├── build ├── Makefile.mk ├── crossln.sh ├── genintro.sh ├── maninst.sh ├── mk.config ├── mk.head └── mk.tail ├── cal ├── Makefile.mk ├── cal.1 └── cal.c ├── calendar ├── Makefile.mk ├── calendar.1 ├── calendar.sh └── calprog.c ├── cat ├── Makefile.mk ├── cat.1 └── cat.c ├── chmod ├── Makefile.mk ├── chmod.1 └── chmod.c ├── chown ├── Makefile.mk ├── chown.1 ├── chown.1b └── chown.c ├── chroot ├── Makefile.mk ├── chroot.8 └── chroot.c ├── cksum ├── Makefile.mk ├── cksum.1 └── cksum.c ├── cmp ├── Makefile.mk ├── cmp.1 └── cmp.c ├── col ├── Makefile.mk ├── col.1 └── col.c ├── comm ├── Makefile.mk ├── comm.1 └── comm.c ├── copy ├── Makefile.mk ├── copy.1 └── copy.c ├── cp ├── Makefile.mk ├── cp.1 ├── cp.c ├── ln.1 └── mv.1 ├── cpio ├── Makefile.mk ├── TODO ├── blast.c ├── blast.h ├── cpio.1 ├── cpio.c ├── cpio.h ├── crc32.c ├── expand.c ├── explode.c ├── flags.c ├── inflate.c ├── nonpax.c ├── pax.1 ├── pax.c ├── unshrink.c ├── unzip.h └── version.c ├── csplit ├── Makefile.mk ├── csplit.1 └── csplit.c ├── cut ├── Makefile.mk ├── cut.1 ├── cut.c └── ruler ├── date ├── Makefile.mk ├── date.1 └── date.c ├── dc ├── Makefile.mk ├── dc.1 ├── dc.c ├── dc.h └── version.c ├── dd ├── Makefile.mk ├── dd.1 └── dd.c ├── deroff ├── Makefile.mk ├── deroff.1 ├── deroff.1b ├── deroff.c └── deroff_ucb.c ├── df ├── Makefile.mk ├── df.1 ├── df.1b ├── df.c └── statvfs.c ├── diff ├── Makefile.mk ├── diff.1 ├── diff.c ├── diff.h ├── diffdir.c ├── diffh.c ├── diffreg.c └── diffver.c ├── diff3 ├── Makefile.mk ├── diff3.1 ├── diff3.sh └── diff3prog.c ├── dircmp ├── Makefile.mk ├── dircmp.1 └── dircmp.sh ├── dirname ├── Makefile.mk ├── dirname.1 └── dirname.c ├── du ├── Makefile.mk ├── du.1 ├── du.1b └── du.c ├── echo ├── Makefile.mk ├── defs.h ├── echo.1 ├── echo.1b ├── echo.c ├── main.c └── version.c ├── ed ├── Makefile.mk ├── ed.1 └── ed.c ├── env ├── Makefile.mk ├── env.1 └── env.c ├── expand ├── Makefile.mk ├── expand.1 ├── expand.c ├── tablist.c ├── tablist.h ├── unexpand.1 └── unexpand.c ├── expr ├── Makefile.mk ├── expr.1 └── expr.y ├── factor ├── Makefile.mk ├── factor.1.in ├── factor.c └── mansubst.sh ├── file ├── Makefile.mk ├── file.1 ├── file.c └── magic ├── find ├── Makefile.mk ├── find.1 └── find.c ├── fmt ├── Makefile.mk ├── fmt.1 └── fmt.c ├── fmtmsg ├── Makefile.mk ├── fmtmsg.1 ├── fmtmsg.c ├── fmtmsg.h ├── main.c └── version.c ├── fold ├── Makefile.mk ├── fold.1 └── fold.c ├── getconf ├── Makefile.mk ├── getconf.1 └── getconf.c ├── getopt ├── Makefile.mk ├── getopt.1 └── getopt.c ├── grep ├── Makefile.mk ├── NOTES ├── ac.c ├── alloc.c ├── alloc.h ├── egrep.1 ├── egrep.y ├── fgrep.1 ├── fgrep.c ├── ggrep.c ├── grep.1 ├── grep.c ├── grep.h ├── grid.c ├── plist.c ├── rcomp.c ├── sus.c └── svid3.c ├── groups ├── Makefile.mk ├── groups.1 ├── groups.1b └── groups.c ├── hd ├── Makefile.mk ├── hd.1 └── hd.c ├── head ├── Makefile.mk ├── head.1 └── head.c ├── hostname ├── Makefile.mk ├── hostname.1 └── hostname.c ├── id ├── Makefile.mk ├── id.1 └── id.c ├── intro.1.in ├── join ├── Makefile.mk ├── join.1 └── join.c ├── kill ├── Makefile.mk ├── kill.1 ├── kill.c ├── strsig.c └── version.c ├── libcommon ├── CHECK.c ├── Makefile.mk ├── _alloca.h ├── _malloc.h ├── _utmpx.h ├── afterchar.c ├── asciitype.c ├── asciitype.h ├── atoll.h ├── basename.c ├── blank.h ├── getdir.c ├── getdir.h ├── getopt.c ├── gmatch.c ├── ib_alloc.c ├── ib_close.c ├── ib_free.c ├── ib_getlin.c ├── ib_getw.c ├── ib_open.c ├── ib_popen.c ├── ib_read.c ├── ib_seek.c ├── iblok.h ├── mbtowi.h ├── memalign.c ├── memalign.h ├── msgselect.h ├── oblok.c ├── oblok.h ├── pathconf.c ├── pathconf.h ├── pfmt.c ├── pfmt.h ├── pfmt_label.c ├── prerror.c ├── prerror.h ├── regexp.h ├── regexpr.c ├── regexpr.h ├── securestr.c ├── setlabel.c ├── setuxlabel.c ├── sfile.c ├── sfile.h ├── sighold.c ├── sigignore.c ├── signal.c ├── sigpause.c ├── sigrelse.c ├── sigset.c ├── sigset.h ├── sputs.h ├── strmenta.h ├── strtol.c ├── sysv3.c ├── utmpx.c └── vpfmt.c ├── libuxre ├── COPYING.LGPL ├── Makefile.mk ├── NOTES ├── _collelem.c ├── _collmult.c ├── bracket.c ├── colldata.h ├── onefile.c ├── re.h ├── regcomp.c ├── regdfa.c ├── regdfa.h ├── regerror.c ├── regex.h ├── regexec.c ├── regfree.c ├── regnfa.c ├── regparse.c ├── stubs.c └── wcharm.h ├── libwchar ├── Makefile.mk ├── mblen.c ├── mbrtowc.c ├── mbstowcs.c ├── mbtowc.c ├── wchar.h ├── wcslen.c ├── wcsncmp.c ├── wctfunc.c ├── wctomb.c ├── wctype.c ├── wctype.h └── wcwidth.c ├── line ├── Makefile.mk ├── line.1 └── line.c ├── listusers ├── Makefile.mk ├── listusers.1 └── listusers.c ├── ln ├── Makefile.mk ├── ln.1b └── ln_ucb.c ├── logins ├── Makefile.mk ├── logins.1 └── logins.c ├── logname ├── Makefile.mk ├── logname.1 └── logname.c ├── ls ├── Makefile.mk ├── ls.1 ├── ls.1b └── ls.c ├── mail ├── Dout.c ├── Makefile.mk ├── Tout.c ├── add_recip.c ├── casncmp.c ├── cat.c ├── ckdlivopts.c ├── cksaved.c ├── clr_hinfo.c ├── copyback.c ├── copylet.c ├── copymt.c ├── copystream.c ├── createmf.c ├── del_recipl.c ├── delempty.c ├── delete.c ├── done.c ├── doopen.c ├── dumpaff.c ├── dumprcv.c ├── errmsg.c ├── fgetline.c ├── gendeliv.c ├── getarg.c ├── getcomment.c ├── getdomain.c ├── gethead.c ├── goback.c ├── init.c ├── isheader.c ├── isit.c ├── islocal.c ├── istext.c ├── legal.c ├── libmail.h ├── lock.c ├── maid.c ├── mail.1 ├── mail.h ├── maillock.c ├── maillock.h ├── main.c ├── mkdead.c ├── mta_ercode.c ├── new_recipl.c ├── parse.c ├── pckaffspot.c ├── pckrcvspot.c ├── pickFrom.c ├── pipletr.c ├── popenvp.c ├── poplist.c ├── printhdr.c ├── printmail.c ├── pushlist.c ├── s_string.h ├── savehdrs.c ├── sel_disp.c ├── sendlist.c ├── sendmail.c ├── setsig.c ├── skipspace.c ├── stamp.c ├── strmove.c ├── substr.c ├── trimnl.c └── xgetenv.c ├── makefile ├── man ├── Makefile.mk ├── apropos.1 ├── catman.8 ├── catman.ksh ├── common.ksh ├── man.1 ├── man.7 ├── man.dfl.in ├── man.ksh ├── tmac.an └── whatis.1 ├── mesg ├── Makefile.mk ├── mesg.1 └── mesg.c ├── mkdir ├── Makefile.mk ├── mkdir.1 └── mkdir.c ├── mkfifo ├── Makefile.mk ├── mkfifo.1 └── mkfifo.c ├── mknod ├── Makefile.mk ├── mknod.1m └── mknod.c ├── more ├── Makefile.mk ├── NOTES ├── more.1 └── more.c ├── mvdir ├── Makefile.mk ├── mvdir.1 └── mvdir.sh ├── nawk ├── COPYING ├── Makefile.mk ├── NOTES ├── awk.g.y ├── awk.h ├── awk.lx.l ├── b.c ├── lib.c ├── main.c ├── maketab.c ├── nawk.1 ├── parse.c ├── rerule.sed ├── run.c ├── tran.c └── version.c ├── news ├── Makefile.mk ├── news.1 └── news.c ├── nice ├── Makefile.mk ├── nice.1 └── nice.c ├── nl ├── Makefile.mk ├── nl.1 └── nl.c ├── nohup ├── Makefile.mk ├── nohup.1 └── nohup.c ├── oawk ├── EXPLAIN ├── Makefile.mk ├── NOTES ├── README ├── awk.def ├── awk.g.y ├── awk.lx.l ├── b.c ├── freeze.c ├── lib.c ├── main.c ├── oawk.1 ├── parse.c ├── proc.c ├── run.c ├── tran.c └── version.c ├── od ├── Makefile.mk ├── od.1 └── od.c ├── paste ├── Makefile.mk ├── paste.1 └── paste.c ├── pathchk ├── Makefile.mk ├── pathchk.1 └── pathchk.c ├── pg ├── Makefile.mk ├── pg.1 └── pg.c ├── pgrep ├── Makefile.mk ├── pgrep.1 └── pgrep.c ├── pkginfo ├── pr ├── Makefile.mk ├── pr.1 └── pr.c ├── printenv ├── Makefile.mk ├── printenv.1 └── printenv.c ├── printf ├── Makefile.mk ├── printf.1 └── printf.c ├── priocntl ├── Makefile.mk ├── priocntl.1 └── priocntl.c ├── ps ├── Makefile.mk ├── NOTES ├── ps.1 ├── ps.1b ├── ps.c └── ps.dfl ├── psrinfo ├── Makefile.mk ├── psrinfo.1 └── psrinfo.c ├── pwd ├── Makefile.mk ├── pwd.1 └── pwd.c ├── random ├── Makefile.mk ├── random.1 └── random.c ├── readlink ├── Makefile.mk ├── readlink.1 ├── readlink.1b └── readlink.c ├── renice ├── Makefile.mk ├── renice.1 └── renice.c ├── rev ├── Makefile.mk ├── rev.1 └── rev.c ├── rm ├── Makefile.mk ├── rm.1 └── rm.c ├── rmdir ├── Makefile.mk ├── rmdir.1 └── rmdir.c ├── sdiff ├── Makefile.mk ├── sdiff.1 └── sdiff.c ├── sed ├── Makefile.mk ├── sed.1 ├── sed.h ├── sed0.c ├── sed1.c ├── test │ ├── hanoi.sed │ ├── makefile │ ├── math.sed │ ├── sedtris.sed │ └── sokoban.sed └── version.c ├── seq ├── Makefile.mk ├── seq.1 └── seq.c ├── setpgrp ├── Makefile.mk ├── setpgrp.1 └── setpgrp.c ├── shl ├── Makefile.mk ├── NOTES ├── shl.1 └── shl.c ├── sleep ├── Makefile.mk ├── sleep.1 └── sleep.c ├── sort ├── Makefile.mk ├── sort.1 └── sort.c ├── spell ├── Makefile.mk ├── american ├── british ├── compress.sh ├── extra ├── hash.c ├── hash.h ├── hashcheck.c ├── hashlook.c ├── hashmake.c ├── huff.c ├── huff.h ├── list ├── local ├── spell.1 ├── spell.sh ├── spellin.c ├── spellprog.c └── stop ├── split ├── Makefile.mk ├── split.1 └── split.c ├── stty ├── Makefile.mk ├── stty.1 ├── stty.1b └── stty.c ├── su ├── Makefile.mk ├── su.1 ├── su.c └── su.dfl.in ├── sum ├── Makefile.mk ├── sum.1 ├── sum.1b └── sum.c ├── sync ├── Makefile.mk ├── sync.1m └── sync.c ├── tabs ├── Makefile.mk ├── fspec.5 ├── newform.1 ├── newform.c ├── tabs.1 ├── tabs.c ├── tabspec.c └── tabspec.h ├── tail ├── Makefile.mk ├── tail.1 └── tail.c ├── tapecntl ├── Makefile.mk ├── mt.1 ├── tape.1 ├── tapecntl.1 └── tapecntl.c ├── tar ├── Makefile.mk ├── NOTES ├── tar.1 ├── tar.c └── tar.dfl ├── tcopy ├── Makefile.mk ├── tcopy.1 └── tcopy.c ├── tee ├── Makefile.mk ├── tee.1 └── tee.c ├── test ├── Makefile.mk ├── defs.h ├── helper.c ├── main.c ├── test.1 ├── test.1b ├── test.c └── version.c ├── time ├── Makefile.mk ├── time.1 └── time.c ├── timeout ├── Makefile.mk ├── sigtable.c ├── sigtable.h ├── takefive.sh ├── timeout.1 └── timeout.c ├── touch ├── Makefile.mk ├── settime.1 ├── touch.1 └── touch.c ├── tr ├── Makefile.mk ├── tr.1 ├── tr.1b └── tr.c ├── true ├── Makefile.mk ├── true.1 └── truther.c ├── tsort ├── Makefile.mk ├── tsort.1 └── tsort.c ├── tty ├── Makefile.mk ├── tty.1 └── tty.c ├── ul ├── Makefile.mk ├── ul.1 └── ul.c ├── uname ├── Makefile.mk ├── uname.1 └── uname.c ├── uniq ├── Makefile.mk ├── uniq.1 └── uniq.c ├── units ├── Makefile.mk ├── units.1 ├── units.c └── unittab ├── users ├── Makefile.mk ├── users.1 └── users.c ├── wall ├── Makefile.mk ├── wall.1m └── wall.c ├── watch ├── Makefile.mk ├── debug.txt ├── watch.1 └── watch.c ├── wc ├── Makefile.mk ├── wc.1 └── wc.c ├── what ├── Makefile.mk ├── what.1 └── what.c ├── who ├── Makefile.mk ├── who.1 └── who.c ├── whoami ├── Makefile.mk ├── whoami.1 └── whoami.c ├── whodo ├── Makefile.mk ├── uptime.1 ├── w.1 ├── whodo.1 └── whodo.c ├── write ├── Makefile.mk ├── write.1 └── write.c ├── xargs ├── Makefile.mk ├── xargs.1 └── xargs.c └── yes ├── Makefile.mk ├── yes.1 └── yes.c /LICENCE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2003-2007 Gunnar Ritter et al. 2 | Copyright (c) 2022 Molly A. McCollum (mamccollum) 3 | Copyright (c) 2021-2025 Pindorama 4 | Luiz Antônio Rangel (takusuman) 5 | Arthur Bacci (arthurbacci) 6 | 7 | This software is provided 'as-is', without any express or implied 8 | warranty. In no event will the authors be held liable for any damages 9 | arising from the use of this software. 10 | 11 | Permission is granted to anyone to use this software for any purpose, 12 | including commercial applications, and to alter it and redistribute it 13 | freely, subject to the following restrictions: 14 | 15 | 1. The origin of this software must not be misrepresented; you must not 16 | claim that you wrote the original software. If you use this software 17 | in a product, an acknowledgment in the product documentation would be 18 | appreciated but is not required. 19 | 2. Altered source versions must be plainly marked as such, and must not be 20 | misrepresented as being the original software. 21 | 3. This notice may not be removed or altered from any source distribution. 22 | -------------------------------------------------------------------------------- /_install/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: install_ucb 2 | 3 | install_ucb: install_ucb.o 4 | $(LD) $(LDFLAGS) install_ucb.o $(LCOMMON) $(LIBS) -o install_ucb 5 | 6 | install_ucb.o: install_ucb.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(LARGEF) $(XO6FL) -c install_ucb.c 8 | 9 | install: all 10 | rm -f $(ROOT)$(UCBBIN)/install 11 | cp install_ucb $(ROOT)$(UCBBIN)/install 12 | $(STRIP) $(ROOT)$(UCBBIN)/install 13 | chmod a+x $(ROOT)$(UCBBIN)/install 14 | $(MANINST) -c -m 644 install.1b $(ROOT)$(MANDIR)/man1b/install.1b 15 | 16 | clean: 17 | rm -f install_ucb install_ucb.o core log *~ 18 | -------------------------------------------------------------------------------- /apply/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: apply pick 2 | 3 | apply.o: apply.c 4 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(ICOMMON) -DSHELL='"$(SHELL)"' -c apply.c 5 | 6 | apply: apply.o 7 | $(LD) $(LDFLAGS) apply.o $(LIBS) $(LCOMMON) -o apply 8 | 9 | pick: pick.sh 10 | echo '#!$(SHELL)' | cat - pick.sh > pick 11 | chmod 755 pick 12 | 13 | install: all 14 | $(UCBINST) -c apply $(ROOT)$(UCBBIN)/apply 15 | $(UCBINST) -c pick $(ROOT)$(DEFBIN)/pick 16 | $(UCBINST) -c -m 644 apply.1b $(ROOT)$(MANDIR)/man1b/apply.1b 17 | rm -f $(ROOT)$(MANDIR)/man1/pick.1 18 | $(LNS) $(ROOT)$(MANDIR)/man1b/apply.1b $(ROOT)$(MANDIR)/man1/pick.1 19 | 20 | clean: 21 | rm -f apply apply.o pick core log *~ 22 | -------------------------------------------------------------------------------- /banner/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: banner 2 | 3 | banner: banner.o 4 | $(LD) $(LDFLAGS) banner.o $(LCOMMON) $(LIBS) -o banner 5 | 6 | banner.o: banner.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c banner.c 8 | 9 | install: all 10 | $(UCBINST) -c banner $(ROOT)$(DEFBIN)/banner 11 | $(STRIP) $(ROOT)$(DEFBIN)/banner 12 | $(MANINST) -c -m 644 banner.1 $(ROOT)$(MANDIR)/man1/banner.1 13 | 14 | clean: 15 | rm -f banner banner.o core log *~ 16 | -------------------------------------------------------------------------------- /banner/banner.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)banner.1 1.3 (gritter) 9/2/03 3 | .\" Parts taken from banner(6), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .TH BANNER 1 "9/2/03" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | banner \- make posters 10 | .SH SYNOPSIS 11 | \fBbanner\fI\ string\fR\ .\ .\ . 12 | .SH DESCRIPTION 13 | .I Banner 14 | prints all 15 | .I strings 16 | sideways in huge built-up letters 17 | on the standard output. 18 | Each 19 | .I string 20 | may contain up to 10 ASCII characters 21 | and is printed on a single line. 22 | -------------------------------------------------------------------------------- /basename/basename.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" Sccsid @(#)basename.1 1.6 (gritter) 1/24/05 6 | .TH BASENAME 1 "1/24/05" "Heirloom Toolchest" "User Commands" 7 | .SH NAME 8 | basename \- return non-directory portion of a pathname 9 | .SH SYNOPSIS 10 | \fBbasename\fR \fIstring\fR [\fIsuffix\fR] 11 | .SH DESCRIPTION 12 | .I Basename 13 | deletes the directory part of the filename-like 14 | .I string 15 | and prints the result. 16 | If 17 | .I suffix 18 | is specified, 19 | and 20 | .I suffix 21 | matches the last part of the result 22 | while characters remain, 23 | the matched portion of 24 | .I string 25 | is also deleted. 26 | .B /usr/5bin/basename 27 | and 28 | .B /usr/5bin/s42/basename 29 | interpret 30 | .I suffix 31 | as a simple regular expression 32 | as described in 33 | .IR ed (1); 34 | .B /usr/5bin/posix/basename 35 | and 36 | .B /usr/5bin/posix2001/basename 37 | treat it as a fixed string. 38 | .SH "ENVIRONMENT VARIABLES" 39 | .TP 40 | .BR LANG ", " LC_ALL 41 | See 42 | .IR locale (7). 43 | .TP 44 | .B LC_CTYPE 45 | Determines the mapping of bytes to characters. 46 | .SH "SEE ALSO" 47 | dirname(1), 48 | ed(1), 49 | sh(1), 50 | locale(7) 51 | -------------------------------------------------------------------------------- /basename/basename.1b: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" Sccsid @(#)basename.1b 1.4 (gritter) 9/22/03 6 | .TH BASENAME 1B "9/22/03" "Heirloom Toolchest" "BSD System Compatibility" 7 | .SH NAME 8 | basename \- (BSD) return non-directory portion of a pathname 9 | .SH SYNOPSIS 10 | \fB/usr/ucb/basename\fR \fIstring\fR [\fIsuffix\fR] 11 | .SH DESCRIPTION 12 | .I Basename 13 | deletes the directory part of the filename-like 14 | .I string 15 | and prints the result. 16 | If 17 | .I suffix 18 | is specified, 19 | and 20 | .I suffix 21 | matches the last part of the result, 22 | the matched portion of the fixed string 23 | .I string 24 | is also deleted. 25 | .SH "ENVIRONMENT VARIABLES" 26 | .TP 27 | .BR LANG ", " LC_ALL 28 | See 29 | .IR locale (7). 30 | .TP 31 | .B LC_CTYPE 32 | Determines the mapping of bytes to characters. 33 | .SH "SEE ALSO" 34 | dirname(1), 35 | grep(1), 36 | sh(1), 37 | locale(7) 38 | -------------------------------------------------------------------------------- /bc/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: bc 2 | 3 | bc: bc.o 4 | $(LD) $(LDFLAGS) bc.o $(LCOMMON) $(LIBS) -o bc 5 | 6 | bc.o: bc.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -DDC='"$(SV3BIN)/dc"' -DLIBB='"$(DEFLIB)/lib.b"' -c bc.c 8 | 9 | bc.c: bc.y 10 | $(YACC) $< 11 | sed -f yyval.sed $@ 12 | rm y.tab.c 13 | 14 | install: all 15 | $(UCBINST) -c bc $(ROOT)$(DEFBIN)/bc 16 | $(STRIP) $(ROOT)$(DEFBIN)/bc 17 | $(MANINST) -c -m 644 bc.1 $(ROOT)$(MANDIR)/man1/bc.1 18 | $(UCBINST) -c -m 644 lib.b $(ROOT)$(DEFLIB)/lib.b 19 | 20 | clean: 21 | rm -f bc bc.o bc.c core log *~ 22 | -------------------------------------------------------------------------------- /bc/yyval.sed: -------------------------------------------------------------------------------- 1 | # 2 | # Sccsid @(#)yyval.sed 1.3 (gritter) 4/27/04 3 | # 4 | # bison has a yacc-compatible yyval, but it is a local variable inside 5 | # yyparse(). Making the variable global is necessary to make bc work 6 | # with a bison-generated parser. 7 | 1,2 { 8 | /Bison/ { 9 | :look 10 | /YYSTYPE/ { 11 | a\ 12 | YYSTYPE yyval; 13 | :repl 14 | s/^[ ]*YYSTYPE[ ]*yyval;// 15 | n 16 | t 17 | b repl 18 | } 19 | n 20 | b look 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /bdiff/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: bdiff 2 | 3 | bdiff: bdiff.o 4 | $(LD) $(LDFLAGS) bdiff.o $(LCOMMON) $(LWCHAR) $(LIBS) -o bdiff 5 | 6 | bdiff.o: bdiff.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DDIFF='"$(DEFBIN)/diff"' -c bdiff.c 8 | 9 | install: all 10 | $(UCBINST) -c bdiff $(ROOT)$(DEFBIN)/bdiff 11 | $(STRIP) $(ROOT)$(DEFBIN)/bdiff 12 | $(MANINST) -c -m 644 bdiff.1 $(ROOT)$(MANDIR)/man1/bdiff.1 13 | 14 | clean: 15 | rm -f bdiff bdiff.o core log *~ 16 | 17 | bdiff.o: bdiff.c fatal.h ../libcommon/sigset.h 18 | -------------------------------------------------------------------------------- /bdiff/fatal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1988 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | #ifndef _FATAL_H 9 | #define _FATAL_H 10 | 11 | /* from OpenSolaris "fatal.h 1.9 05/06/08 SMI" SVr4.0 1.4.1.1 */ 12 | 13 | /* 14 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 15 | * 16 | * Sccsid @(#)fatal.h 1.4 (gritter) 12/25/06 17 | */ 18 | 19 | #ifdef __cplusplus 20 | extern "C" { 21 | #endif 22 | 23 | extern int Fflags; 24 | extern char *Ffile; 25 | extern int Fvalue; 26 | extern int Fjmp[10]; 27 | 28 | #define FTLMSG 0100000 29 | #define FTLCLN 0040000 30 | #define FTLFUNC 0020000 31 | #define FTLACT 0000077 32 | #define FTLJMP 0000002 33 | #define FTLEXIT 0000001 34 | #define FTLRET 0000000 35 | 36 | #define FSAVE(val) SAVE(Fflags, old_Fflags); Fflags = val; 37 | #define FRSTR() RSTR(Fflags, old_Fflags); 38 | 39 | #ifdef __cplusplus 40 | } 41 | #endif 42 | 43 | #endif /* _FATAL_H */ 44 | -------------------------------------------------------------------------------- /bfs/Makefile.mk: -------------------------------------------------------------------------------- 1 | .c.o: ; $(CC) -c $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(ICOMMON) $(IWCHAR) -DSHELL='"$(SHELL)"' $< 2 | 3 | all: bfs 4 | 5 | bfs: bfs.o 6 | $(CC) $(LDFLAGS) bfs.o $(LCOMMON) $(LWCHAR) $(LIBS) -o bfs 7 | 8 | install: all 9 | test -d $(ROOT)$(SV3BIN) || mkdir -p $(ROOT)$(SV3BIN) 10 | $(UCBINST) -c -m 755 bfs $(ROOT)$(SV3BIN)/bfs 11 | $(STRIP) $(ROOT)$(SV3BIN)/bfs 12 | $(MANINST) -c -m 644 bfs.1 $(ROOT)$(MANDIR)/man1/bfs.1 13 | 14 | clean: 15 | rm -f bfs bfs.o core log *~ 16 | -------------------------------------------------------------------------------- /build/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: maninst crossln genintro 2 | 3 | maninst: maninst.sh mk.config 4 | maninst sed ' s,@DEFLIB@,$(DEFLIB),g; s,@SPELLHIST@,$(SPELLHIST),g; s,@MAGIC@,$(MAGIC),g; s,@DFLDIR@,$(DFLDIR),g; s,@DEFBIN@,$(DEFBIN),g; s,@SV3BIN@,$(SV3BIN),g; s,@S42BIN@,$(S42BIN),g; s,@SUSBIN@,$(SUSBIN),g; s,@SU3BIN@,$(SU3BIN),g; s,@UCBBIN@,$(UCBBIN),g; s,@CCSBIN@,$(CCSBIN),g' 5 | chmod 755 maninst 6 | 7 | crossln: crossln.sh 8 | crossln sed 's,@LNS@,$(LNS),g' 9 | chmod 755 crossln 10 | 11 | genintro: genintro.sh 12 | cat genintro.sh >genintro 13 | chmod 755 genintro 14 | 15 | install: 16 | 17 | clean: 18 | rm -f core log *~ 19 | 20 | MRPROPER = maninst crossln genintro 21 | -------------------------------------------------------------------------------- /build/genintro.sh: -------------------------------------------------------------------------------- 1 | #!/sbin/sh 2 | 3 | # Sccsid @(#)genintro.sh 1.6 (gritter) 6/24/05 4 | 5 | LC_ALL=C export LC_ALL 6 | 7 | T=/tmp/genintro.$$ 8 | trap "rm -f $T; exit" 0 1 2 3 13 15 9 | 10 | test $# -gt 0 && cat "$@" 11 | 12 | cat <<\! 13 | .SS "List of commands" 14 | .TS 15 | l1 l1 l. 16 | Name Appears on Page Description 17 | ! 18 | 19 | if test -x nawk/awk 20 | then 21 | awk=nawk/awk 22 | else 23 | awk=nawk 24 | fi 25 | 26 | $awk ' 27 | /^.TH / { 28 | page = tolower($2) 29 | sect = $3 30 | } 31 | /^.SH NAME$/ { 32 | getline 33 | comd = substr($0, 1, index($0, " \\- ") - 1) 34 | desc = substr($0, index($0, " \\- ") + 4) 35 | if (sect ~ /^[18]/ && comd != "intro") { 36 | while (comd ~ /, /) { 37 | c1 = substr(comd, 1, index(comd, ", ") - 1) 38 | comd = substr(comd, index(comd, ", ") + 2) 39 | printf("%s\t%s(%s)\t%s\n", c1, page, sect, desc) 40 | } 41 | printf("%s\t%s(%s)\t%s\n", comd, page, sect, desc) 42 | } else 43 | printf("%s(%s)\t%s\n", page, sect, desc) >"'$T'" 44 | }' `ls */*.[0-9]* | sed '/^attic/ d'` | sort -u 45 | 46 | cat <<\! 47 | .TE 48 | .SS "Other manual entries" 49 | .TS 50 | l1 l. 51 | Page Description 52 | ! 53 | 54 | sort -u $T 55 | 56 | cat <<\! 57 | .TE 58 | ! 59 | -------------------------------------------------------------------------------- /build/maninst.sh: -------------------------------------------------------------------------------- 1 | #!/sbin/sh 2 | 3 | # Sccsid @(#)maninst.sh 1.8 (gritter) 01/27/07 4 | 5 | usage() { 6 | echo "usage: $1 [-c] [-g group] [-m mode] [-o owner] file destination" >&2 7 | exit 2 8 | } 9 | 10 | owner= mode= group= 11 | 12 | while getopts cg:m:o: arg 13 | do 14 | case $arg in 15 | c) ;; 16 | g) group=$OPTARG ;; 17 | o) owner=$OPTARG ;; 18 | m) mode=$OPTARG ;; 19 | *) usage $0 ;; 20 | esac 21 | done 22 | 23 | test $OPTIND -gt 1 && shift `expr $OPTIND - 1` 24 | test $# != 3 || usage $0 25 | 26 | <"$1" >"$2" sed ' 27 | s,/usr/5lib,@DEFLIB@,g 28 | t 29 | s,@.DEFBIN.@,@DEFBIN@,g 30 | t 31 | s,/usr/5bin/s42,@S42BIN@,g 32 | t 33 | s,/usr/5bin/posix2001,@SU3BIN@,g 34 | t 35 | s,/usr/5bin/posix,@SUSBIN@,g 36 | t 37 | s,/usr/5bin,@SV3BIN@,g 38 | t 39 | s,/usr/ucb,@UCBBIN@,g 40 | t 41 | s,/usr/ccs/bin,@CCSBIN@,g 42 | t 43 | s,/var/adm/spellhist,@SPELLHIST@,g 44 | t 45 | s,/etc/default,@DFLDIR@,g 46 | t 47 | s,/usr/5lib/magic,@MAGIC@,g 48 | t 49 | ' 50 | 51 | test "x$owner" != x && chown "$owner" "$2" 52 | test "x$group" != x && chgrp "$group" "$2" 53 | test "x$mode" != x && chmod "$mode" "$2" 54 | -------------------------------------------------------------------------------- /build/mk.head: -------------------------------------------------------------------------------- 1 | # 2 | # Don't change this Makefile! It has been generated from Makefile.mk; 3 | # change that file instead and run make at the toplevel. 4 | # 5 | ###################################################################### 6 | 7 | -------------------------------------------------------------------------------- /build/mk.tail: -------------------------------------------------------------------------------- 1 | 2 | mrproper: clean 3 | rm -f Makefile $(MRPROPER) 4 | -------------------------------------------------------------------------------- /cal/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: cal 2 | 3 | cal: cal.o 4 | $(LD) $(LDFLAGS) cal.o $(LCOMMON) $(LWCHAR) $(LIBS) -o cal 5 | 6 | cal.o: cal.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) -c cal.c 8 | 9 | install: all 10 | $(UCBINST) -c cal $(ROOT)$(DEFBIN)/cal 11 | $(STRIP) $(ROOT)$(DEFBIN)/cal 12 | $(MANINST) -c -m 644 cal.1 $(ROOT)$(MANDIR)/man1/cal.1 13 | 14 | clean: 15 | rm -f cal cal.o core log *~ 16 | -------------------------------------------------------------------------------- /cal/cal.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)cal.1 1.4 (gritter) 1/11/03 3 | .\" 4 | .\" Derived from cal(1), Unix 32V: 5 | .\" 6 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 7 | .\" 8 | .\" SPDX-Licence-Identifier: Caldera 9 | .TH CAL 1 "1/11/03" "Heirloom Toolchest" "User Commands" 10 | .SH NAME 11 | cal \- print calendar 12 | .SH SYNOPSIS 13 | \fBcal\fR [[\fImonth\fR] \fIyear\fR] 14 | .SH DESCRIPTION 15 | .I Cal 16 | prints a calendar for the specified year. 17 | If a month is also specified, a calendar 18 | just for that month is printed. 19 | If no year is given, 20 | the calendar for the current month is printed. 21 | .I Year 22 | can be between 1 23 | and 9999. 24 | The 25 | .I month 26 | is a number between 1 and 12. 27 | The calendar 28 | produced is that for England and her colonies. 29 | .PP 30 | Try September 1752. 31 | .SH "ENVIRONMENT VARIABLES" 32 | .TP 33 | \fBLANG\fR, \fBLC_ALL\fR, \fBLC_CTYPE\fR, \fBLC_TIME\fR 34 | Determines the month and weekday strings. 35 | .SH "SEE ALSO" 36 | calendar(1), 37 | date(1), 38 | locale(7) 39 | .SH NOTES 40 | The year is always considered to start in January even though this 41 | is historically naive. 42 | .br 43 | Beware that `cal 78' refers to the early Christian era, 44 | not the 20th century. 45 | -------------------------------------------------------------------------------- /calendar/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: calendar calprog 2 | 3 | calendar: calendar.sh 4 | echo '#!$(SHELL)' | cat - calendar.sh | sed ' s,@DEFBIN@,$(DEFBIN),g; s,@SV3BIN@,$(SV3BIN),g; s,@DEFLIB@,$(DEFLIB),g' >calendar 5 | chmod 755 calendar 6 | 7 | calprog: calprog.o 8 | $(LD) $(LDFLAGS) calprog.o $(LCOMMON) $(LWCHAR) $(LIBS) -o calprog 9 | 10 | calprog.o: calprog.c 11 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) -c calprog.c 12 | 13 | install: all 14 | $(UCBINST) -c calendar $(ROOT)$(DEFBIN)/calendar 15 | $(UCBINST) -c calprog $(ROOT)$(DEFLIB)/calprog 16 | $(STRIP) $(ROOT)$(DEFLIB)/calprog 17 | $(MANINST) -c -m 644 calendar.1 $(ROOT)$(MANDIR)/man1/calendar.1 18 | 19 | clean: 20 | rm -f calendar calprog calprog.o core log *~ 21 | -------------------------------------------------------------------------------- /calendar/calendar.sh: -------------------------------------------------------------------------------- 1 | # 2 | # from Unix 32V /usr/src/cmd/calendar/calendar.sh 3 | # 4 | # Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | # 6 | # SPDX-Licence-Identifier: Caldera 7 | # 8 | # Sccsid @(#)calendar.sh 1.8 (gritter) 5/29/03 9 | 10 | PATH=@DEFBIN@:@SV3BIN@:$PATH export PATH 11 | calprog=@DEFLIB@/calprog 12 | case $# in 13 | 0) 14 | if test -r calendar 15 | then 16 | egrep -e "`$calprog`" calendar 17 | else 18 | echo "`basename $0`: `pwd`/calendar not found" >&2 19 | exit 1 20 | fi 21 | ;; 22 | *) 23 | tmp=/tmp/cal$$ 24 | trap "rm -f $tmp; trap '' 0; exit" 0 1 2 3 13 15 25 | logins -uxo | while IFS=: read user uid group gid gecos dir shell rest 26 | do 27 | if test -f $dir/calendar -a -r $dir/calendar 28 | then 29 | egrep -e "`$calprog`" $dir/calendar >$tmp 2>/dev/null 30 | test -s $tmp && mail $user <$tmp 31 | fi 32 | done 33 | esac 34 | -------------------------------------------------------------------------------- /cat/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: cat 2 | 3 | cat: cat.o 4 | $(LD) $(LDFLAGS) cat.o $(LCOMMON) $(LWCHAR) $(LIBS) -o cat 5 | 6 | cat.o: cat.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c cat.c 8 | 9 | install: all 10 | $(UCBINST) -c cat $(ROOT)$(DEFBIN)/cat 11 | $(STRIP) $(ROOT)$(DEFBIN)/cat 12 | $(MANINST) -c -m 644 cat.1 $(ROOT)$(MANDIR)/man1/cat.1 13 | 14 | clean: 15 | rm -f cat cat.o core log *~ 16 | -------------------------------------------------------------------------------- /chmod/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: chmod chmod_sus 2 | 3 | chmod: chmod.o 4 | $(LD) $(LDFLAGS) chmod.o $(LCOMMON) $(LIBS) -o chmod 5 | 6 | chmod.o: chmod.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c chmod.c 8 | 9 | chmod_sus: chmod_sus.o 10 | $(LD) $(LDFLAGS) chmod_sus.o $(LCOMMON) $(LIBS) -o chmod_sus 11 | 12 | chmod_sus.o: chmod.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -DSUS -c chmod.c -o chmod_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c chmod $(ROOT)$(SV3BIN)/chmod 17 | $(STRIP) $(ROOT)$(SV3BIN)/chmod 18 | $(UCBINST) -c chmod_sus $(ROOT)$(SUSBIN)/chmod 19 | $(STRIP) $(ROOT)$(SUSBIN)/chmod 20 | $(MANINST) -c -m 644 chmod.1 $(ROOT)$(MANDIR)/man1/chmod.1 21 | 22 | clean: 23 | rm -f chmod chmod.o chmod_sus chmod_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /chown/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: chown chown_ucb 2 | 3 | chown: chown.o 4 | $(LD) $(LDFLAGS) chown.o $(LCOMMON) $(LIBS) -o chown 5 | 6 | chown.o: chown.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c chown.c 8 | 9 | chown_ucb: chown_ucb.o 10 | $(LD) $(LDFLAGS) chown_ucb.o $(LCOMMON) $(LIBS) -o chown_ucb 11 | 12 | chown_ucb.o: chown.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -DUCB -c chown.c -o chown_ucb.o 14 | 15 | install: all 16 | $(UCBINST) -c chown $(ROOT)$(DEFBIN)/chown 17 | $(STRIP) $(ROOT)$(DEFBIN)/chown 18 | rm -f $(ROOT)$(DEFBIN)/chgrp 19 | $(LNS) chown $(ROOT)$(DEFBIN)/chgrp 20 | $(UCBINST) -c chown_ucb $(ROOT)$(UCBBIN)/chown 21 | $(STRIP) $(ROOT)$(UCBBIN)/chown 22 | $(MANINST) -c -m 644 chown.1 $(ROOT)$(MANDIR)/man1/chown.1 23 | rm -f $(ROOT)$(MANDIR)/man1/chgrp.1 24 | $(LNS) chown.1 $(ROOT)$(MANDIR)/man1/chgrp.1 25 | $(MANINST) -c -m 644 chown.1b $(ROOT)$(MANDIR)/man1b/chown.1b 26 | 27 | clean: 28 | rm -f chown chown.o chown_ucb chown_ucb.o core log *~ 29 | -------------------------------------------------------------------------------- /chroot/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: chroot 2 | 3 | chroot: chroot.o 4 | $(LD) $(LDFLAGS) chroot.o $(LCOMMON) $(LIBS) -o chroot 5 | 6 | chroot.o: chroot.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(ICOMMON) $(XO5FL) $(LARGEF) -c chroot.c 8 | 9 | install: all 10 | $(UCBINST) -c chroot $(ROOT)$(DEFSBIN)/chroot 11 | $(STRIP) $(ROOT)$(DEFSBIN)/chroot 12 | $(MANINST) -c -m 644 chroot.8 $(ROOT)$(MANDIR)/man8/chroot.8 13 | 14 | clean: 15 | rm -f chroot chroot.o core log *~ 16 | -------------------------------------------------------------------------------- /cksum/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: cksum 2 | 3 | cksum: cksum.o 4 | $(LD) $(LDFLAGS) cksum.o $(LCOMMON) $(LIBS) -o cksum 5 | 6 | cksum.o: cksum.c 7 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c cksum.c 8 | 9 | install: all 10 | $(UCBINST) -c cksum $(ROOT)$(DEFBIN)/cksum 11 | $(STRIP) $(ROOT)$(DEFBIN)/cksum 12 | $(MANINST) -c -m 644 cksum.1 $(ROOT)$(MANDIR)/man1/cksum.1 13 | 14 | clean: 15 | rm -f cksum cksum.o core log *~ 16 | -------------------------------------------------------------------------------- /cksum/cksum.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)cksum.1 1.3 (gritter) 3/17/03 3 | .\" Parts taken from sum(1), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH CKSUM 1 "3/17/03" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | cksum \- write file checksums and sizes 11 | .SH SYNOPSIS 12 | \fBcksum\fR [\fIfile\fR\ .\ .\ .\ ] 13 | .SH DESCRIPTION 14 | .I Cksum 15 | calculates and prints a checksum for each named 16 | .IR file , 17 | and also prints the number of bytes in the file. 18 | It is typically used to look for bad spots, or 19 | to validate a file communicated over 20 | some transmission line. 21 | The CRC used is based on the polynomial used for CRC error 22 | checking in the ISO/IEC 8802-3:1992 Ethernet standard. 23 | .SH "SEE ALSO" 24 | sum(1), 25 | wc(1) 26 | .SH DIAGNOSTICS 27 | `Read error' 28 | is indistinguishable from end of file on 29 | most devices; check the block count. 30 | -------------------------------------------------------------------------------- /cmp/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: cmp 2 | 3 | cmp: cmp.o 4 | $(LD) $(LDFLAGS) cmp.o $(LCOMMON) $(LWCHAR) $(LIBS) -o cmp 5 | 6 | cmp.o: cmp.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c cmp.c 8 | 9 | install: all 10 | $(UCBINST) -c cmp $(ROOT)$(DEFBIN)/cmp 11 | $(STRIP) $(ROOT)$(DEFBIN)/cmp 12 | $(MANINST) -c -m 644 cmp.1 $(ROOT)$(MANDIR)/man1/cmp.1 13 | 14 | clean: 15 | rm -f cmp cmp.o core log *~ 16 | -------------------------------------------------------------------------------- /col/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: col 2 | 3 | col: col.o 4 | $(LD) $(LDFLAGS) col.o $(LCOMMON) $(LWCHAR) $(LIBS) -o col 5 | 6 | col.o: col.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(IWCHAR) $(ICOMMON) $(LARGEF) -c col.c 8 | 9 | install: all 10 | $(UCBINST) -c col $(ROOT)$(DEFBIN)/col 11 | $(STRIP) $(ROOT)$(DEFBIN)/col 12 | $(MANINST) -c -m 644 col.1 $(ROOT)$(MANDIR)/man1/col.1 13 | 14 | clean: 15 | rm -f col col.o core log *~ 16 | -------------------------------------------------------------------------------- /comm/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: comm 2 | 3 | comm: comm.o 4 | $(LD) $(LDFLAGS) comm.o $(LCOMMON) $(LWCHAR) $(LIBS) -o comm 5 | 6 | comm.o: comm.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c comm.c 8 | 9 | install: all 10 | $(UCBINST) -c comm $(ROOT)$(DEFBIN)/comm 11 | $(STRIP) $(ROOT)$(DEFBIN)/comm 12 | $(MANINST) -c -m 644 comm.1 $(ROOT)$(MANDIR)/man1/comm.1 13 | 14 | clean: 15 | rm -f comm comm.o core log *~ 16 | -------------------------------------------------------------------------------- /copy/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: copy 2 | 3 | copy: copy.o 4 | $(LD) $(LDFLAGS) copy.o $(LCOMMON) $(LWCHAR) $(LIBS) -o copy 5 | 6 | copy.o: copy.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c copy.c 8 | 9 | install: all 10 | $(UCBINST) -c copy $(ROOT)$(DEFBIN)/copy 11 | $(STRIP) $(ROOT)$(DEFBIN)/copy 12 | $(MANINST) -c -m 644 copy.1 $(ROOT)$(MANDIR)/man1/copy.1 13 | 14 | clean: 15 | rm -f copy copy.o core log *~ 16 | -------------------------------------------------------------------------------- /cpio/nonpax.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cpio - copy file archives in and out 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, April 2003. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | /* Sccsid @(#)nonpax.c 1.1 (gritter) 2/24/04 */ 13 | 14 | #include "cpio.h" 15 | 16 | /*ARGSUSED*/ 17 | int 18 | pax_track(const char *name, time_t mtime) 19 | { 20 | return 1; 21 | } 22 | 23 | /*ARGSUSED*/ 24 | void 25 | pax_prlink(struct file *f) 26 | { 27 | } 28 | 29 | /*ARGSUSED*/ 30 | int 31 | pax_sname(char **oldp, size_t *olds) 32 | { 33 | return 1; 34 | } 35 | 36 | void 37 | pax_onexit(void) 38 | { 39 | } 40 | -------------------------------------------------------------------------------- /cpio/version.c: -------------------------------------------------------------------------------- 1 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 2 | #define USED __attribute__ ((used)) 3 | #elif defined __GNUC__ 4 | #define USED __attribute__ ((unused)) 5 | #else 6 | #define USED 7 | #endif 8 | static const char sccsid[] USED = "@(#)cpio.sl 2.11 (gritter) 10/9/10"; 9 | /* SLIST */ 10 | /* 11 | blast.c: * Sccsid @(#)blast.c 1.2 (gritter) 2/17/04 12 | blast.h: * Sccsid @(#)blast.h 1.2 (gritter) 2/17/04 13 | cpio.c: * Sccsid @(#)cpio.c 1.307 (gritter) 10/9/10 14 | cpio.h: Sccsid @(#)cpio.h 1.29 (gritter) 3/26/07 15 | crc32.c: * Sccsid @(#)crc32.c 1.2 (gritter) 5/29/03 16 | expand.c: Sccsid @(#)expand.c 1.6 (gritter) 12/15/03 17 | explode.c: * Sccsid @(#)explode.c 1.6 (gritter) 9/30/03 18 | flags.c: Sccsid @(#)flags.c 1.6 (gritter) 3/26/07 19 | inflate.c: * Sccsid @(#)inflate.c 1.6 (gritter) 10/13/04 20 | nonpax.c: Sccsid @(#)nonpax.c 1.1 (gritter) 2/24/04 21 | pax.c:static const char sccsid[] USED = "@(#)pax_su3.sl 1.26 (gritter) 6/26/05"; 22 | pax.c:static const char sccsid[] USED = "@(#)pax.sl 1.26 (gritter) 6/26/05"; 23 | pax.c: Sccsid @(#)pax.c 1.26 (gritter) 6/26/05 24 | unshrink.c: * Sccsid @(#)unshrink.c 1.4 (gritter) 6/18/04 25 | unzip.h: * Sccsid @(#)unzip.h 1.5 (gritter) 7/16/04 26 | */ 27 | -------------------------------------------------------------------------------- /csplit/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: csplit csplit_sus csplit_su3 2 | 3 | csplit: csplit.o 4 | $(LD) $(LDFLAGS) csplit.o $(LCOMMON) $(LWCHAR) $(LIBS) -lm -o csplit 5 | 6 | csplit.o: csplit.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c csplit.c 8 | 9 | csplit_sus: csplit_sus.o 10 | $(LD) $(LDFLAGS) csplit_sus.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -lm -o csplit_sus 11 | 12 | csplit_sus.o: csplit.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IUXRE) $(IWCHAR) $(ICOMMON) -DSUS -c csplit.c -o csplit_sus.o 14 | 15 | csplit_su3: csplit_su3.o 16 | $(LD) $(LDFLAGS) csplit_su3.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -lm -o csplit_su3 17 | 18 | csplit_su3.o: csplit.c 19 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IUXRE) $(IWCHAR) $(ICOMMON) -DSU3 -c csplit.c -o csplit_su3.o 20 | 21 | install: all 22 | $(UCBINST) -c csplit $(ROOT)$(SV3BIN)/csplit 23 | $(STRIP) $(ROOT)$(SV3BIN)/csplit 24 | $(UCBINST) -c csplit_sus $(ROOT)$(SUSBIN)/csplit 25 | $(STRIP) $(ROOT)$(SUSBIN)/csplit 26 | $(UCBINST) -c csplit_su3 $(ROOT)$(SU3BIN)/csplit 27 | $(STRIP) $(ROOT)$(SU3BIN)/csplit 28 | $(MANINST) -c -m 644 csplit.1 $(ROOT)$(MANDIR)/man1/csplit.1 29 | 30 | clean: 31 | rm -f csplit csplit.o csplit_sus csplit_sus.o \ 32 | csplit_su3 csplit_su3.o core log *~ 33 | -------------------------------------------------------------------------------- /cut/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: cut 2 | 3 | cut: cut.o 4 | $(LD) $(LDFLAGS) cut.o $(LCOMMON) $(LWCHAR) $(LIBS) -o cut 5 | 6 | cut.o: cut.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(IWCHAR) $(ICOMMON) $(LARGEF) -c cut.c 8 | 9 | install: all 10 | $(UCBINST) -c cut $(ROOT)$(DEFBIN)/cut 11 | $(STRIP) $(ROOT)$(DEFBIN)/cut 12 | $(MANINST) -c -m 644 cut.1 $(ROOT)$(MANDIR)/man1/cut.1 13 | 14 | clean: 15 | rm -f cut cut.o core log *~ 16 | -------------------------------------------------------------------------------- /cut/ruler: -------------------------------------------------------------------------------- 1 | 00000000011111111112222222222333333333344444444445555555555666666666677777777778 2 | 12345678901234567890123456789012345678901234567890123456789012345678901234567890 3 | -------------------------------------------------------------------------------- /date/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: date date_sus 2 | 3 | date: date.o 4 | $(LD) $(LDFLAGS) date.o $(LCOMMON) $(LWCHAR) $(LIBS) -o date 5 | 6 | date.o: date.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(IWCHAR) $(ICOMMON) -c date.c 8 | 9 | date_sus: date_sus.o 10 | $(LD) $(LDFLAGS) date_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o date_sus 11 | 12 | date_sus.o: date.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(IWCHAR) $(ICOMMON) -DSUS -c date.c -o date_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c date $(ROOT)$(SV3BIN)/date 17 | $(STRIP) $(ROOT)$(SV3BIN)/date 18 | $(UCBINST) -c date_sus $(ROOT)$(SUSBIN)/date 19 | $(STRIP) $(ROOT)$(SUSBIN)/date 20 | $(MANINST) -c -m 644 date.1 $(ROOT)$(MANDIR)/man1/date.1 21 | 22 | clean: 23 | rm -f date date.o date_sus date_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /dc/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: dc 2 | 3 | dc: dc.o version.o 4 | $(LD) $(LDFLAGS) dc.o version.o $(LCOMMON) $(LWCHAR) $(LIBS) -o dc 5 | 6 | dc.o: dc.c dc.h 7 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -DSHELL='"$(SHELL)"' -c dc.c 8 | 9 | version.o: version.c 10 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -c version.c 11 | 12 | install: all 13 | $(UCBINST) -c dc $(ROOT)$(DEFBIN)/dc 14 | $(STRIP) $(ROOT)$(DEFBIN)/dc 15 | $(MANINST) -c -m 644 dc.1 $(ROOT)$(MANDIR)/man1/dc.1 16 | 17 | clean: 18 | rm -f dc dc.o version.o core log *~ 19 | -------------------------------------------------------------------------------- /dc/version.c: -------------------------------------------------------------------------------- 1 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 2 | #define USED __attribute__ ((used)) 3 | #elif defined __GNUC__ 4 | #define USED __attribute__ ((unused)) 5 | #else 6 | #define USED 7 | #endif 8 | static const char sccsid[] USED = "@(#)dc.sl 2.12 (gritter) 12/25/06"; 9 | /* SLIST */ 10 | /* 11 | dc.c: Sccsid @(#)dc.c 1.21 (gritter) 12/25/06> 12 | dc.h: Sccsid @(#)dc.h 1.9 (gritter) 2/4/05> 13 | */ 14 | -------------------------------------------------------------------------------- /dd/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: dd 2 | 3 | dd: dd.o 4 | $(LD) $(LDFLAGS) dd.o $(LCOMMON) $(LWCHAR) $(LIBS) -o dd 5 | 6 | dd.o: dd.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c dd.c 8 | 9 | install: all 10 | $(UCBINST) -c dd $(ROOT)$(DEFBIN)/dd 11 | $(STRIP) $(ROOT)$(DEFBIN)/dd 12 | $(MANINST) -c -m 644 dd.1 $(ROOT)$(MANDIR)/man1/dd.1 13 | 14 | clean: 15 | rm -f dd dd.o core log *~ 16 | -------------------------------------------------------------------------------- /deroff/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: deroff deroff_ucb 2 | 3 | deroff: deroff.o 4 | $(LD) $(LDFLAGS) deroff.o $(LCOMMON) $(LIBS) -o deroff 5 | 6 | deroff.o: deroff.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c deroff.c 8 | 9 | deroff_ucb: deroff_ucb.o 10 | $(LD) $(LDFLAGS) deroff_ucb.o $(LCOMMON) $(LIBS) -o deroff_ucb 11 | 12 | deroff_ucb.o: deroff_ucb.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c deroff_ucb.c 14 | 15 | install: all 16 | $(UCBINST) -c deroff $(ROOT)$(DEFBIN)/deroff 17 | $(STRIP) $(ROOT)$(DEFBIN)/deroff 18 | $(MANINST) -c -m 644 deroff.1 $(ROOT)$(MANDIR)/man1/deroff.1 19 | $(UCBINST) -c deroff_ucb $(ROOT)$(UCBBIN)/deroff 20 | $(STRIP) $(ROOT)$(UCBBIN)/deroff 21 | $(MANINST) -c -m 644 deroff.1b $(ROOT)$(MANDIR)/man1b/deroff.1b 22 | 23 | clean: 24 | rm -f deroff deroff.o deroff_ucb deroff_ucb.o core log *~ 25 | -------------------------------------------------------------------------------- /df/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: df df_ucb dfspace 2 | 3 | df: df.o 4 | $(LD) $(LDFLAGS) df.o $(LCOMMON) $(LIBS) $(LIBGEN) -o df 5 | 6 | df.o: df.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c df.c 8 | 9 | df_ucb: df_ucb.o 10 | $(LD) $(LDFLAGS) df_ucb.o $(LCOMMON) $(LIBS) $(LIBGEN) -o df_ucb 11 | 12 | df_ucb.o: df.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -DUCB -c df.c -o df_ucb.o 14 | 15 | dfspace: df 16 | rm -f dfspace 17 | $(LNS) df dfspace 18 | 19 | install: all 20 | $(UCBINST) -c df $(ROOT)$(DEFBIN)/df 21 | $(STRIP) $(ROOT)$(DEFBIN)/df 22 | rm -f $(ROOT)$(DEFBIN)/dfspace 23 | $(LNS) df $(ROOT)$(DEFBIN)/dfspace 24 | $(UCBINST) -c df_ucb $(ROOT)$(UCBBIN)/df 25 | $(STRIP) $(ROOT)$(UCBBIN)/df 26 | $(MANINST) -c -m 644 df.1 $(ROOT)$(MANDIR)/man1/df.1 27 | rm -f $(ROOT)$(MANDIR)/man1/dfspace.1 28 | $(LNS) df.1 $(ROOT)$(MANDIR)/man1/dfspace.1 29 | $(MANINST) -c -m 644 df.1b $(ROOT)$(MANDIR)/man1b/df.1b 30 | 31 | clean: 32 | rm -f df df.o df_ucb df_ucb.o dfspace core log *~ 33 | -------------------------------------------------------------------------------- /diff/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: diff diffh 2 | 3 | diff: diff.o diffdir.o diffreg.o diffver.o 4 | $(LD) $(LDFLAGS) diff.o diffdir.o diffreg.o diffver.o $(LCOMMON) $(LWCHAR) $(LIBS) -o diff 5 | 6 | diff.o: diff.c 7 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DDIFFH='"$(DEFLIB)/diffh"' -c diff.c 8 | 9 | diffdir.o: diffdir.c 10 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c diffdir.c 11 | 12 | diffreg.o: diffreg.c 13 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c diffreg.c 14 | 15 | diffver.o: diffver.c 16 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c diffver.c 17 | 18 | diffh: diffh.o 19 | $(LD) $(LDFLAGS) diffh.o $(LCOMMON) $(LWCHAR) $(LIBS) -o diffh 20 | 21 | diffh.o: diffh.c 22 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c diffh.c 23 | 24 | install: all 25 | $(UCBINST) -c diff $(ROOT)$(DEFBIN)/diff 26 | $(STRIP) $(ROOT)$(DEFBIN)/diff 27 | $(UCBINST) -c diffh $(ROOT)$(DEFLIB)/diffh 28 | $(STRIP) $(ROOT)$(DEFLIB)/diffh 29 | $(MANINST) -c -m 644 diff.1 $(ROOT)$(MANDIR)/man1/diff.1 30 | 31 | clean: 32 | rm -f diff diff.o diffdir.o diffreg.o diffver.o diffh diffh.o core log *~ 33 | 34 | diff.o: diff.h 35 | diffdir.o: diff.h 36 | diffreg.o: diff.h 37 | -------------------------------------------------------------------------------- /diff/diffver.c: -------------------------------------------------------------------------------- 1 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 2 | #define USED __attribute__ ((used)) 3 | #elif defined __GNUC__ 4 | #define USED __attribute__ ((unused)) 5 | #else 6 | #define USED 7 | #endif 8 | static const char sccsid[] USED = "@(#)diff.sl 1.51 (gritter) 3/15/07"; 9 | /* SLIST */ 10 | /* 11 | diff.c: Sccsid @(#)diff.c 1.24 (gritter) 3/27/05> 12 | diff.h: Sccsid @(#)diff.h 1.15 (gritter) 3/26/05> 13 | diffdir.c: Sccsid @(#)diffdir.c 1.30 (gritter) 1/22/06> 14 | diffreg.c: Sccsid @(#)diffreg.c 1.30 (gritter) 3/15/07> 15 | */ 16 | -------------------------------------------------------------------------------- /diff3/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: diff3 diff3prog 2 | 3 | diff3: diff3.sh 4 | echo '#!$(SHELL)' | cat - diff3.sh | sed ' s,@DEFBIN@,$(DEFBIN),g; s,@SV3BIN@,$(SV3BIN),g; s,@DEFLIB@,$(DEFLIB),g' >diff3 5 | chmod 755 diff3 6 | 7 | diff3prog: diff3prog.o 8 | $(LD) $(LDFLAGS) diff3prog.o $(LCOMMON) $(LIBS) -o diff3prog 9 | 10 | diff3prog.o: diff3prog.c 11 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c diff3prog.c 12 | 13 | install: all 14 | $(UCBINST) -c diff3 $(ROOT)$(DEFBIN)/diff3 15 | $(UCBINST) -c diff3prog $(ROOT)$(DEFLIB)/diff3prog 16 | $(STRIP) $(ROOT)$(DEFLIB)/diff3prog 17 | $(MANINST) -c -m 644 diff3.1 $(ROOT)$(MANDIR)/man1/diff3.1 18 | 19 | clean: 20 | rm -f diff3 diff3prog diff3prog.o core log *~ 21 | -------------------------------------------------------------------------------- /dircmp/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: dircmp 2 | 3 | dircmp: dircmp.sh 4 | echo '#!$(SHELL)' | cat - dircmp.sh | sed ' s,@DEFBIN@,$(DEFBIN),g; s,@SV3BIN@,$(SV3BIN),g; s,@DEFLIB@,$(DEFLIB),g' >dircmp 5 | chmod 755 dircmp 6 | 7 | install: all 8 | $(UCBINST) -c dircmp $(ROOT)$(DEFBIN)/dircmp 9 | $(MANINST) -c -m 644 dircmp.1 $(ROOT)$(MANDIR)/man1/dircmp.1 10 | 11 | clean: 12 | rm -f dircmp core log *~ 13 | -------------------------------------------------------------------------------- /dircmp/dircmp.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" SPDX-Licence-Identifier: CDDL-1.0 3 | .\" 4 | .\" Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany. 5 | .\" 6 | .\" Sccsid @(#)dircmp.1 1.1 (gritter) 6/25/05 7 | .TH DIRCMP 1 "6/25/05" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | dircmp \- directory comparison 10 | .SH SYNOPSIS 11 | \fBdircmp\fR [\fB\-ds\fR] [\fB\-w\fI width\fR] \fIdirectory directory\fR 12 | .SH DESCRIPTION 13 | The 14 | .I dircmp 15 | command creates a list of files which are 16 | identical, different, or exist in only one of the two 17 | .I directories 18 | given. 19 | .PP 20 | With the 21 | .B \-d 22 | option, differing files are compared using 23 | .IR diff (1), 24 | and its output is included. 25 | .PP 26 | The 27 | .B \-s 28 | option suppresses messages about identical files. 29 | .PP 30 | Output is paginated through 31 | .IR pr (1). 32 | The 33 | .B \-w 34 | option specifies a maximum 35 | .I width 36 | for the formatted output. 37 | .SH "SEE ALSO" 38 | diff(1) 39 | .SH NOTES 40 | .I dircmp 41 | ignores files whose names contain backslash or newline characters. 42 | -------------------------------------------------------------------------------- /dirname/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: dirname 2 | 3 | dirname: dirname.o 4 | $(LD) $(LDFLAGS) dirname.o $(LCOMMON) $(LIBS) -o dirname 5 | 6 | dirname.o: dirname.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c dirname.c 8 | 9 | install: all 10 | $(UCBINST) -c dirname $(ROOT)$(DEFBIN)/dirname 11 | $(STRIP) $(ROOT)$(DEFBIN)/dirname 12 | $(MANINST) -c -m 644 dirname.1 $(ROOT)$(MANDIR)/man1/dirname.1 13 | 14 | clean: 15 | rm -f dirname dirname.o core log *~ 16 | -------------------------------------------------------------------------------- /dirname/dirname.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .\" Sccsid @(#)dirname.1 1.2 (gritter) 4/17/03 7 | .TH DIRNAME 1 "4/17/03" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | dirname \- return the directory portion of a pathname 10 | .SH SYNOPSIS 11 | \fBdirname\fR \fIpath\fR 12 | .SH DESCRIPTION 13 | .I Dirname 14 | deletes the file part of the given 15 | .I path 16 | and prints the result, 17 | or `.' 18 | if no directory part is present. 19 | .SH "SEE ALSO" 20 | basename(1), 21 | sh(1) 22 | -------------------------------------------------------------------------------- /du/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: du du_sus du_ucb 2 | 3 | du: du.o 4 | $(LD) $(LDFLAGS) du.o $(LCOMMON) $(LWCHAR) $(LIBS) -o du 5 | 6 | du.o: du.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(ICOMMON) -c du.c 8 | 9 | du_sus: du_sus.o 10 | $(LD) $(LDFLAGS) du_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o du_sus 11 | 12 | du_sus.o: du.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(ICOMMON) -DSUS -c du.c -o du_sus.o 14 | 15 | du_ucb: du_ucb.o 16 | $(LD) $(LDFLAGS) du_ucb.o $(LCOMMON) $(LWCHAR) $(LIBS) -o du_ucb 17 | 18 | du_ucb.o: du.c 19 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(ICOMMON) -DUCB -c du.c -o du_ucb.o 20 | 21 | install: 22 | $(UCBINST) -c du $(ROOT)$(SV3BIN)/du 23 | $(STRIP) $(ROOT)$(SV3BIN)/du 24 | $(UCBINST) -c du_sus $(ROOT)$(SUSBIN)/du 25 | $(STRIP) $(ROOT)$(SUSBIN)/du 26 | $(UCBINST) -c du_ucb $(ROOT)$(UCBBIN)/du 27 | $(STRIP) $(ROOT)$(UCBBIN)/du 28 | $(MANINST) -c -m 644 du.1 $(ROOT)$(MANDIR)/man1/du.1 29 | $(MANINST) -c -m 644 du.1b $(ROOT)$(MANDIR)/man1b/du.1b 30 | 31 | clean: 32 | rm -f du du.o du_sus du_sus.o du_ucb du_ucb.o core log *~ 33 | -------------------------------------------------------------------------------- /echo/echo.1b: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)echo.1b 1.1 (gritter) 7/2/05 3 | .\" Derived from echo(1), Unix 7th Edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH ECHO 1B "7/2/05" "Heirloom Toolchest" "BSD System Compatibility" 9 | .SH NAME 10 | echo \- (BSD) echo arguments 11 | .SH SYNOPSIS 12 | \fB/usr/ucb/echo\fR [\fIargument \fR...] 13 | .SH DESCRIPTION 14 | .I Echo 15 | writes its 16 | .I arguments 17 | separated by blanks and terminated by 18 | a newline on the standard output. 19 | .PP 20 | .I Echo 21 | is useful for producing diagnostics in 22 | shell programs and for writing constant data on pipes. 23 | To send diagnostics to the standard error file, do 24 | `echo ... 1>&2'. 25 | .SH "SEE ALSO" 26 | printf(1) 27 | .SH NOTES 28 | It is recommended for portability that 29 | .IR printf (1) 30 | is used instead of 31 | .I echo 32 | if backslashes are to be printed 33 | or if the trailing newline is to be omitted. 34 | -------------------------------------------------------------------------------- /echo/main.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | 5 | /* 6 | * Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 7 | * 8 | * Sccsid @(#)main.c 1.3 (gritter) 7/2/05 9 | */ 10 | 11 | #include "defs.h" 12 | #include 13 | 14 | int mb_cur_max; 15 | 16 | int 17 | main(int argc, char **argv) 18 | { 19 | extern int func(int, char **); 20 | extern int sysv3; 21 | 22 | if (sysv3) 23 | putenv("SYSV3=set"); 24 | setlocale(LC_CTYPE, ""); 25 | mb_cur_max = MB_CUR_MAX; 26 | return func(argc, argv); 27 | } 28 | 29 | struct namnod * 30 | findnam(const char *name) 31 | { 32 | static struct namnod n; 33 | char *cp; 34 | 35 | if ((cp = getenv(name)) != NULL) { 36 | n.value = cp; 37 | n.namflg = N_EXPORT|N_ENVNAM; 38 | return &n; 39 | } 40 | return NULL; 41 | } 42 | -------------------------------------------------------------------------------- /echo/version.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* 5 | * Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 6 | */ 7 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 8 | #define USED __attribute__ ((used)) 9 | #elif defined __GNUC__ 10 | #define USED __attribute__ ((unused)) 11 | #else 12 | #define USED 13 | #endif 14 | #if defined (UCB) 15 | static const char id[] = "@(#)/usr/ucb/echo.sl 1.7 (gritter) 7/2/05"; 16 | #elif defined (SUS) 17 | static const char id[] = "@(#)echo_sus.sl 1.7 (gritter) 7/2/05"; 18 | #else /* !SUS */ 19 | static const char id[] = "@(#)echo.sl 1.7 (gritter) 7/2/05"; 20 | #endif /* !SUS */ 21 | /* SLIST */ 22 | /* 23 | defs.h: * Sccsid @(#)defs.h 1.3 (gritter) 7/2/05 24 | echo.c: * Sccsid @(#)echo.c 1.9 (gritter) 7/2/05 25 | main.c: * Sccsid @(#)main.c 1.3 (gritter) 7/2/05 26 | */ 27 | -------------------------------------------------------------------------------- /env/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: env 2 | 3 | env: env.o 4 | $(LD) $(LDFLAGS) env.o $(LCOMMON) $(LIBS) -o env 5 | 6 | env.o: env.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c env.c 8 | 9 | install: all 10 | $(UCBINST) -c env $(ROOT)$(DEFBIN)/env 11 | $(STRIP) $(ROOT)$(DEFBIN)/env 12 | $(MANINST) -c -m 644 env.1 $(ROOT)$(MANDIR)/man1/env.1 13 | 14 | clean: 15 | rm -f env env.o core log *~ 16 | -------------------------------------------------------------------------------- /expand/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: expand unexpand 2 | 3 | expand: expand.o tablist.o 4 | $(LD) $(LDFLAGS) expand.o tablist.o $(LCOMMON) $(LWCHAR) $(LIBS) -o expand 5 | 6 | expand.o: expand.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(IWCHAR) $(ICOMMON) $(LARGEF) -c expand.c 8 | 9 | unexpand: unexpand.o tablist.o 10 | $(LD) $(LDFLAGS) unexpand.o tablist.o $(LCOMMON) $(LWCHAR) $(LIBS) -o unexpand 11 | 12 | unexpand.o: unexpand.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(IWCHAR) $(ICOMMON) $(LARGEF) -c unexpand.c 14 | 15 | tablist.o: tablist.c 16 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(IWCHAR) $(ICOMMON) $(LARGEF) -c tablist.c 17 | 18 | install: all 19 | $(UCBINST) -c expand $(ROOT)$(DEFBIN)/expand 20 | $(STRIP) $(ROOT)$(DEFBIN)/expand 21 | $(UCBINST) -c unexpand $(ROOT)$(DEFBIN)/unexpand 22 | $(STRIP) $(ROOT)$(DEFBIN)/unexpand 23 | $(MANINST) -c -m 644 expand.1 $(ROOT)$(MANDIR)/man1/expand.1 24 | $(MANINST) -c -m 644 unexpand.1 $(ROOT)$(MANDIR)/man1/unexpand.1 25 | 26 | clean: 27 | rm -f expand expand.o unexpand unexpand.o tablist.o core log *~ 28 | 29 | expand.c: tablist.h 30 | unexpand.c: tablist.h 31 | tablist.o: tablist.h 32 | -------------------------------------------------------------------------------- /expand/tablist.h: -------------------------------------------------------------------------------- 1 | /* 2 | * expand - convert tabs to spaces 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, May 2003. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | /* Sccsid @(#)tablist.h 1.1 (gritter) 5/5/03 */ 13 | 14 | extern struct tab { 15 | struct tab *t_nxt; 16 | long long t_pos; 17 | } *tablist; 18 | 19 | extern int tabstop; 20 | 21 | extern void settab(const char *); 22 | extern void addtab(long long); 23 | extern void badts(void); 24 | extern void *scalloc(size_t, size_t); 25 | -------------------------------------------------------------------------------- /factor/mansubst.sh: -------------------------------------------------------------------------------- 1 | # Sccsid @(#)mansubst.sh 1.5 (gritter) 8/30/03 2 | 3 | # Write the maximum values into the manual page. 4 | 5 | tmp=ms$$.c 6 | 7 | trap "rm -f $tmp; exit" 0 1 2 13 15 8 | 9 | cat >$tmp < 11 | #include "config.h" 12 | #ifdef USE_LONG_DOUBLE 13 | LDBL_MANT_DIG 14 | #else 15 | DBL_MANT_DIG 16 | #endif 17 | ! 18 | 19 | mant_dig=`$cc -E $tmp | sed '/^#/ d; s/^[ ]*//; /^$/ d; /^[^0-9]/ d'` 20 | 21 | num=`echo "2 ^ $mant_dig" | bc` 22 | flt=`awk = 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 8 | #define USED __attribute__ ((used)) 9 | #elif defined __GNUC__ 10 | #define USED __attribute__ ((unused)) 11 | #else 12 | #define USED 13 | #endif 14 | static const char id[] = "@(#)fmtmsg.sl 1.3 (gritter) 7/1/05"; 15 | /* SLIST */ 16 | /* 17 | fmtmsg.c: * Sccsid @(#)fmtmsg.c 1.3 (gritter) 6/26/05 18 | fmtmsg.h: * Sccsid @(#)fmtmsg.h 1.3 (gritter) 6/26/05 19 | main.c: * Sccsid @(#)main.c 1.4 (gritter) 7/1/05 20 | */ 21 | -------------------------------------------------------------------------------- /fold/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: fold 2 | 3 | fold: fold.o 4 | $(LD) $(LDFLAGS) fold.o $(LCOMMON) $(LWCHAR) $(LIBS) -o fold 5 | 6 | fold.o: fold.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(IWCHAR) $(ICOMMON) $(LARGEF) -c fold.c 8 | 9 | install: all 10 | $(UCBINST) -c fold $(ROOT)$(DEFBIN)/fold 11 | $(STRIP) $(ROOT)$(DEFBIN)/fold 12 | $(MANINST) -c -m 644 fold.1 $(ROOT)$(MANDIR)/man1/fold.1 13 | 14 | clean: 15 | rm -f fold fold.o core log *~ 16 | -------------------------------------------------------------------------------- /getopt/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: getopt 2 | 3 | getopt: getopt.o 4 | $(LD) $(LDFLAGS) getopt.o $(LCOMMON) $(LIBS) -o getopt 5 | 6 | getopt.o: getopt.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(ICOMMON) -c getopt.c 8 | 9 | install: all 10 | $(UCBINST) -c getopt $(ROOT)$(DEFBIN)/getopt 11 | $(STRIP) $(ROOT)$(DEFBIN)/getopt 12 | $(MANINST) -c -m 644 getopt.1 $(ROOT)$(MANDIR)/man1/getopt.1 13 | 14 | clean: 15 | rm -f getopt getopt.o core log *~ 16 | -------------------------------------------------------------------------------- /getopt/getopt.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" SPDX-Licence-Identifier: CDDL-1.0 3 | .\" 4 | .\" Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany. 5 | .\" 6 | .\" Sccsid @(#)getopt.1 1.2 (gritter) 6/24/05 7 | .TH GETOPT 1 "6/24/05" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | getopt \- parse command options 10 | .SH SYNOPSIS 11 | set \-\- \`\fBgetopt\fP \fIoptstring\fP $*\` 12 | .SH DESCRIPTION 13 | .I getopt 14 | rearranges command options for shell scripts. 15 | It accepts an 16 | .I optstring 17 | argument like 18 | .IR getopt (3), 19 | i.\|e. a list of characters (bytes) 20 | where each character represents an option letter. 21 | A character followed by 22 | .B : 23 | indicates that the option has an argument. 24 | When an argument list is passed to 25 | .IR getopt , 26 | it prints it such that 27 | each option forms a separate argument, 28 | with option and option argument separated by a space, 29 | and a `\-\-' separates options and remaining non-option arguments. 30 | For example, `getopt a:bc \-bc \-aarg' 31 | results in the output `\-b \-c \-a arg \--'. 32 | .SH "SEE ALSO" 33 | sh(1) 34 | .SH NOTES 35 | .I getopt 36 | cannot handle arguments that contain white space. 37 | For this reason, 38 | the shell special command 39 | .I getopts 40 | is preferred over 41 | .IR getopt . 42 | -------------------------------------------------------------------------------- /grep/alloc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * grep - search a file for a pattern 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, April 2001. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | /* Sccsid @(#)alloc.c 1.3 (gritter) 4/17/03> */ 13 | 14 | /* 15 | * Memory allocation routines. 16 | */ 17 | 18 | #include 19 | #include 20 | #include "alloc.h" 21 | 22 | /* 23 | * Memory allocation with check. 24 | */ 25 | void * 26 | smalloc(size_t nbytes) 27 | { 28 | void *p; 29 | 30 | if ((p = (void *)malloc(nbytes)) == NULL) { 31 | write(2, "Out of memory\n", 14); 32 | exit(077); 33 | } 34 | return p; 35 | } 36 | 37 | /* 38 | * Memory reallocation with check. 39 | */ 40 | void * 41 | srealloc(void *ptr, size_t nbytes) 42 | { 43 | void *cp; 44 | 45 | if ((cp = (void *)realloc(ptr, nbytes)) == NULL) { 46 | write(2, "Out of memory\n", 14); 47 | exit(077); 48 | } 49 | return cp; 50 | } 51 | 52 | /* 53 | * Zero-filled allocation with check. 54 | */ 55 | void * 56 | scalloc(size_t nelem, size_t elsize) 57 | { 58 | void *cp; 59 | 60 | if ((cp = calloc(nelem, elsize)) == NULL) { 61 | write(2, "Out of memory\n", 14); 62 | exit(077); 63 | } 64 | return cp; 65 | } 66 | -------------------------------------------------------------------------------- /grep/alloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * grep - search a file for a pattern 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, April 2001. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | /* Sccsid @(#)alloc.h 1.3 (gritter) 4/17/03> */ 13 | 14 | #include 15 | 16 | extern void *smalloc(size_t); 17 | extern void *srealloc(void *, size_t); 18 | extern void *scalloc(size_t, size_t); 19 | -------------------------------------------------------------------------------- /grep/fgrep.c: -------------------------------------------------------------------------------- 1 | /* 2 | * grep - search a file for a pattern 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, April 2001. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | /* Sccsid @(#)fgrep.c 1.12 (gritter) 12/17/04> */ 13 | 14 | /* 15 | * Code for traditional fgrep command only. 16 | */ 17 | 18 | #include 19 | #include "grep.h" 20 | 21 | char *usagemsg = 22 | "usage: %s [ -bchilnvx ] [ -e exp ] [ -f file ] [ strings ] [ file ] ...\n"; 23 | char *stdinmsg; 24 | 25 | void 26 | init(void) 27 | { 28 | Fflag = 1; 29 | ac_select(); 30 | options = "bce:f:hilnrRvxyz"; 31 | } 32 | 33 | void 34 | misop(void) 35 | { 36 | usage(); 37 | } 38 | 39 | /* 40 | * Dummies. 41 | */ 42 | void 43 | eg_select(void) 44 | { 45 | } 46 | 47 | void 48 | st_select(void) 49 | { 50 | } 51 | 52 | void 53 | rc_select(void) 54 | { 55 | } 56 | -------------------------------------------------------------------------------- /grep/grid.c: -------------------------------------------------------------------------------- 1 | /* 2 | * grep - search a file for a pattern 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, April 2001. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 13 | #define USED __attribute__ ((used)) 14 | #elif defined __GNUC__ 15 | #define USED __attribute__ ((unused)) 16 | #else 17 | #define USED 18 | #endif 19 | static const char sccsid[] USED = "@(#)grep.sl 2.51 (gritter) 12/27/06"; 20 | /* SLIST */ 21 | /* 22 | ac.c:static const char sccsid[] USED = "@(#)fgrep.sl 2.10 (gritter) 5/29/05"; 23 | alloc.c: Sccsid @(#)alloc.c 1.3 (gritter) 4/17/03> 24 | alloc.h: Sccsid @(#)alloc.h 1.3 (gritter) 4/17/03> 25 | egrep.y:static const char sccsid[] USED = "@(#)egrep.sl 2.22 (gritter) 5/29/05"; 26 | fgrep.c: Sccsid @(#)fgrep.c 1.12 (gritter) 12/17/04> 27 | ggrep.c: Sccsid @(#)ggrep.c 1.26 (gritter) 1/4/05> 28 | grep.c: Sccsid @(#)grep.c 1.53 (gritter) 12/27/06> 29 | grep.h: Sccsid @(#)grep.h 1.23 (gritter) 1/4/05> 30 | plist.c: Sccsid @(#)plist.c 1.22 (gritter) 12/8/04> 31 | rcomp.c: Sccsid @(#)rcomp.c 1.27 (gritter) 2/6/05> 32 | sus.c: Sccsid @(#)sus.c 1.24 (gritter) 5/29/05> 33 | svid3.c: Sccsid @(#)svid3.c 1.7 (gritter) 4/17/03> 34 | */ 35 | -------------------------------------------------------------------------------- /grep/svid3.c: -------------------------------------------------------------------------------- 1 | /* 2 | * grep - search a file for a pattern 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, April 2001. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | /* Sccsid @(#)svid3.c 1.7 (gritter) 4/17/03> */ 13 | 14 | /* 15 | * Code for SVID3 grep version only. 16 | */ 17 | 18 | #include 19 | #include 20 | #include 21 | #include "grep.h" 22 | 23 | int sus = 0; 24 | 25 | /* 26 | * Usage message. 27 | */ 28 | void 29 | usage(void) 30 | { 31 | fprintf(stderr, usagemsg, progname); 32 | exit(2); 33 | } 34 | -------------------------------------------------------------------------------- /groups/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: groups groups_ucb 2 | 3 | groups: groups.o 4 | $(LD) $(LDFLAGS) groups.o $(LCOMMON) $(LWCHAR) $(LIBS) -o groups 5 | 6 | groups.o: groups.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(IWCHAR) $(ICOMMON) -c groups.c 8 | 9 | groups_ucb: groups_ucb.o 10 | $(LD) $(LDFLAGS) groups_ucb.o $(LCOMMON) $(LWCHAR) $(LIBS) -o groups_ucb 11 | 12 | groups_ucb.o: groups.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(IWCHAR) $(ICOMMON) -DUCB -c groups.c -o groups_ucb.o 14 | 15 | install: all 16 | $(UCBINST) -c groups $(ROOT)$(DEFBIN)/groups 17 | $(STRIP) $(ROOT)$(DEFBIN)/groups 18 | $(UCBINST) -c groups_ucb $(ROOT)$(UCBBIN)/groups 19 | $(STRIP) $(ROOT)$(UCBBIN)/groups 20 | $(MANINST) -c -m 644 groups.1 $(ROOT)$(MANDIR)/man1/groups.1 21 | $(MANINST) -c -m 644 groups.1b $(ROOT)$(MANDIR)/man1b/groups.1b 22 | 23 | clean: 24 | rm -f groups groups.o groups_ucb groups_ucb.o core log *~ 25 | -------------------------------------------------------------------------------- /hd/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: hd 2 | 3 | hd: hd.o 4 | $(LD) $(LDFLAGS) hd.o $(LCOMMON) $(LWCHAR) $(LIBS) -o hd 5 | 6 | hd.o: hd.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c hd.c 8 | 9 | install: all 10 | $(UCBINST) -c hd $(ROOT)$(DEFBIN)/hd 11 | $(STRIP) $(ROOT)$(DEFBIN)/hd 12 | $(MANINST) -c -m 644 hd.1 $(ROOT)$(MANDIR)/man1/hd.1 13 | 14 | clean: 15 | rm -f hd hd.o core log *~ 16 | -------------------------------------------------------------------------------- /head/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: head 2 | 3 | head: head.o 4 | $(LD) $(LDFLAGS) head.o $(LCOMMON) $(LWCHAR) $(LIBS) -o head 5 | 6 | head.o: head.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c head.c 8 | 9 | install: all 10 | $(UCBINST) -c head $(ROOT)$(DEFBIN)/head 11 | $(STRIP) $(ROOT)$(DEFBIN)/head 12 | $(MANINST) -c -m 644 head.1 $(ROOT)$(MANDIR)/man1/head.1 13 | 14 | clean: 15 | rm -f head head.o core log *~ 16 | -------------------------------------------------------------------------------- /head/head.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .\" Sccsid @(#)head.1 1.5 (gritter) 12/6/04 7 | .TH HEAD 1 "12/6/04" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | head \- display first few lines of files 10 | .SH SYNOPSIS 11 | \fBhead\fR [\fB\-\fInumber\fR|\fB\-n\fI number\fR] [\fIfile\fR\ ...] 12 | .SH DESCRIPTION 13 | The 14 | .B head 15 | command prints the first 16 | .I number 17 | of lines from each 18 | .I file to standard output. 19 | If no 20 | .I number 21 | is specified, 10 is the default. 22 | Without a 23 | .I file 24 | operand, the standard input is used. 25 | .PP 26 | When more that one 27 | .I file 28 | operand is given, 29 | the string 30 | .RS 31 | .sp 32 | \fB==> \fIfile\fB <==\fR 33 | .sp 34 | .RE 35 | is printed before the first lines of the 36 | .IR file. 37 | .PP 38 | The facility to specify the 39 | .I number 40 | with the 41 | .I \-n 42 | option has been introduced by POSIX.2. 43 | .SH "SEE ALSO" 44 | cat(1), 45 | pg(1), 46 | sed(1) 47 | -------------------------------------------------------------------------------- /hostname/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: hostname 2 | 3 | hostname: hostname.o 4 | $(LD) $(LDFLAGS) hostname.o $(LCOMMON) $(LWCHAR) $(LIBS) -o hostname 5 | 6 | hostname.o: hostname.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c hostname.c 8 | 9 | install: all 10 | $(UCBINST) -c hostname $(ROOT)$(DEFBIN)/hostname 11 | $(STRIP) $(ROOT)$(DEFBIN)/hostname 12 | $(MANINST) -c -m 644 hostname.1 $(ROOT)$(MANDIR)/man1/hostname.1 13 | 14 | clean: 15 | rm -f hostname hostname.o core log *~ 16 | -------------------------------------------------------------------------------- /hostname/hostname.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)hostname.1 1.1 (gritter) 10/26/03 3 | .TH HOSTNAME 1 "10/26/03" "Heirloom Toolchest" "User Commands" 4 | .SH NAME 5 | hostname \- set or print name of current host system 6 | .SH SYNOPSIS 7 | \fBhostname\fR [\fIname-of-host\fR] 8 | .SH DESCRIPTION 9 | .I Hostname 10 | prints the node name of the current host. 11 | The super-user can set the node name 12 | by giving an argument. 13 | .SH "SEE ALSO" 14 | uname(1) 15 | -------------------------------------------------------------------------------- /id/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: id id_sus 2 | 3 | id: id.o 4 | $(LD) $(LDFLAGS) id.o $(LCOMMON) $(LIBS) -o id 5 | 6 | id.o: id.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c id.c 8 | 9 | id_sus: id_sus.o 10 | $(LD) $(LDFLAGS) id_sus.o $(LCOMMON) $(LIBS) -o id_sus 11 | 12 | id_sus.o: id.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -DSUS -c id.c -o id_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c id $(ROOT)$(SV3BIN)/id 17 | $(STRIP) $(ROOT)$(SV3BIN)/id 18 | $(UCBINST) -c id_sus $(ROOT)$(SUSBIN)/id 19 | $(STRIP) $(ROOT)$(SUSBIN)/id 20 | $(MANINST) -c -m 644 id.1 $(ROOT)$(MANDIR)/man1/id.1 21 | 22 | clean: 23 | rm -f id id.o id_sus id_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /join/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: join 2 | 3 | join: join.o 4 | $(LD) $(LDFLAGS) join.o $(LCOMMON) $(LWCHAR) $(LIBS) -o join 5 | 6 | join.o: join.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c join.c 8 | 9 | install: all 10 | $(UCBINST) -c join $(ROOT)$(DEFBIN)/join 11 | $(STRIP) $(ROOT)$(DEFBIN)/join 12 | $(MANINST) -c -m 644 join.1 $(ROOT)$(MANDIR)/man1/join.1 13 | 14 | clean: 15 | rm -f join join.o core log *~ 16 | -------------------------------------------------------------------------------- /kill/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: kill 2 | 3 | kill: kill.o strsig.o version.o 4 | $(LD) $(LDFLAGS) kill.o strsig.o version.o $(LCOMMON) $(LIBS) -o kill 5 | 6 | kill.o: kill.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(ICOMMON) -c kill.c 8 | 9 | strsig.o: strsig.c 10 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(ICOMMON) -c strsig.c 11 | 12 | version.o: version.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(ICOMMON) -c version.c 14 | 15 | install: all 16 | $(UCBINST) -c kill $(ROOT)$(DEFBIN)/kill 17 | $(STRIP) $(ROOT)$(DEFBIN)/kill 18 | $(MANINST) -c -m 644 kill.1 $(ROOT)$(MANDIR)/man1/kill.1 19 | 20 | clean: 21 | rm -f kill kill.o strsig.o version.o core log *~ 22 | -------------------------------------------------------------------------------- /kill/version.c: -------------------------------------------------------------------------------- 1 | /* 2 | * kill - terminate a process 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, June 2005. 5 | */ 6 | /* 7 | * Copyright (c) 2005 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | /* 12 | * Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 13 | */ 14 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 15 | #define USED __attribute__ ((used)) 16 | #elif defined __GNUC__ 17 | #define USED __attribute__ ((unused)) 18 | #else 19 | #define USED 20 | #endif 21 | static const char id[] = "@(#)kill.sl 1.2 (gritter) 6/30/05"; 22 | /* SLIST */ 23 | /* 24 | kill.c: * Sccsid @(#)kill.c 1.2 (gritter) 6/30/05 25 | strsig.c: * Sccsid @(#)strsig.c 1.9 (gritter) 6/30/05 26 | */ 27 | -------------------------------------------------------------------------------- /libcommon/_alloca.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)_alloca.h 1.5 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || \ 9 | defined (__DragonFly__) || defined (__APPLE__) 10 | #include 11 | #endif /* __FreeBSD__, __NetBSD__, __OpenBSD__, __DragonFly__, __APPLE__ */ 12 | -------------------------------------------------------------------------------- /libcommon/_malloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)_malloc.h 1.2 (gritter) 5/1/04 */ 7 | 8 | #include 9 | 10 | extern void *memalign(size_t, size_t); 11 | -------------------------------------------------------------------------------- /libcommon/afterchar.c: -------------------------------------------------------------------------------- 1 | /* 2 | * afterchar.c - print character position at string. 3 | * 4 | * Copyright (c) 2024 Luiz Antônio Rangel (takusuman) 5 | * 6 | * SPDX-Licence-Identifier: Zlib 7 | */ 8 | 9 | int afterchar(const char p[], int a) { 10 | unsigned int pos = 0; 11 | 12 | for (;; pos++) { 13 | if (p[pos] == a) { 14 | break; 15 | } else if (p[pos] == '\0') { 16 | pos = 0; 17 | break; 18 | } 19 | } 20 | 21 | return pos; 22 | } 23 | -------------------------------------------------------------------------------- /libcommon/atoll.h: -------------------------------------------------------------------------------- 1 | /* Sccsid @(#)atoll.h 1.4 (gritter) 7/18/04 */ 2 | 3 | #if defined (__hpux) || defined (_AIX) || \ 4 | defined (__FreeBSD__) && (__FreeBSD__) < 5 5 | extern long long strtoll(const char *nptr, char **endptr, int base); 6 | extern unsigned long long strtoull(const char *nptr, char **endptr, int base); 7 | extern long long atoll(const char *nptr); 8 | #endif /* __hpux || _AIX || __FreeBSD__ < 5 */ 9 | -------------------------------------------------------------------------------- /libcommon/blank.h: -------------------------------------------------------------------------------- 1 | /* 2 | * isblank() and iswblank() are not available with many pre-XSH6 3 | * systems. Check whether isblank was defined, and assume it is 4 | * not available if not. 5 | */ 6 | /* Sccsid @(#)blank.h 1.3 (gritter) 5/1/04 */ 7 | 8 | #ifndef __dietlibc__ 9 | #ifndef LIBCOMMON_BLANK_H 10 | #define LIBCOMMON_BLANK_H 1 11 | 12 | #include 13 | #include 14 | 15 | #ifndef isblank 16 | 17 | static 18 | #ifdef __GNUC__ 19 | __inline__ 20 | #endif /* __GNUC__ */ 21 | int 22 | my_isblank(int c) 23 | { 24 | return c == ' ' || c == '\t'; 25 | } 26 | #define isblank(c) my_isblank(c) 27 | 28 | static int 29 | my_iswblank(wint_t c) 30 | { 31 | return c == L' ' || c == L'\t'; 32 | } 33 | #undef iswblank 34 | #define iswblank(c) my_iswblank(c) 35 | 36 | #endif /* !isblank */ 37 | #endif /* !LIBCOMMON_BLANK_H */ 38 | #endif /* !__dietlibc__ */ 39 | -------------------------------------------------------------------------------- /libcommon/getdir.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)getdir.h 1.4 (gritter) 10/19/03 */ 7 | 8 | #include 9 | 10 | struct direc { 11 | unsigned long long d_ino; 12 | char *d_name; 13 | }; 14 | 15 | extern struct getdb *getdb_alloc(const char *, int); 16 | extern void getdb_free(struct getdb *); 17 | extern struct direc *getdir(struct getdb *, int *); 18 | -------------------------------------------------------------------------------- /libcommon/ib_alloc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)ib_alloc.c 1.5 (gritter) 3/12/05 */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | #include "memalign.h" 18 | #include "iblok.h" 19 | 20 | struct iblok * 21 | ib_alloc(int fd, unsigned blksize) 22 | { 23 | static long pagesize; 24 | struct iblok *ip; 25 | struct stat st; 26 | 27 | if (pagesize == 0) 28 | if ((pagesize = sysconf(_SC_PAGESIZE)) < 0) 29 | pagesize = 4096; 30 | if (blksize == 0) { 31 | if (fstat(fd, &st) < 0) 32 | return NULL; 33 | blksize = st.st_blksize > 0 ? st.st_blksize : 512; 34 | } 35 | if ((ip = calloc(1, sizeof *ip)) == NULL) 36 | return NULL; 37 | if ((ip->ib_blk = memalign(pagesize, blksize)) == NULL) { 38 | free(ip); 39 | return NULL; 40 | } 41 | ip->ib_blksize = blksize; 42 | ip->ib_fd = fd; 43 | ip->ib_mb_cur_max = MB_CUR_MAX; 44 | return ip; 45 | } 46 | -------------------------------------------------------------------------------- /libcommon/ib_close.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)ib_close.c 1.2 (gritter) 4/17/03 */ 7 | 8 | #include 9 | 10 | #include "iblok.h" 11 | 12 | int 13 | ib_close(struct iblok *ip) 14 | { 15 | int fd; 16 | 17 | fd = ip->ib_fd; 18 | ib_free(ip); 19 | return close(fd); 20 | } 21 | -------------------------------------------------------------------------------- /libcommon/ib_free.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)ib_free.c 1.2 (gritter) 4/17/03 */ 7 | 8 | #include 9 | 10 | #include "iblok.h" 11 | 12 | void 13 | ib_free(struct iblok *ip) 14 | { 15 | free(ip->ib_blk); 16 | free(ip); 17 | } 18 | -------------------------------------------------------------------------------- /libcommon/ib_open.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)ib_open.c 1.2 (gritter) 4/17/03 */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #include "iblok.h" 17 | 18 | struct iblok * 19 | ib_open(const char *name, unsigned blksize) 20 | { 21 | struct iblok *ip; 22 | int fd, err; 23 | 24 | if ((fd = open(name, O_RDONLY)) < 0) 25 | return NULL; 26 | if ((ip = ib_alloc(fd, blksize)) == NULL) { 27 | err = errno; 28 | close(fd); 29 | errno = err; 30 | } 31 | return ip; 32 | } 33 | -------------------------------------------------------------------------------- /libcommon/ib_read.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)ib_read.c 1.2 (gritter) 4/17/03 */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #include "iblok.h" 17 | 18 | int 19 | ib_read(struct iblok *ip) 20 | { 21 | ssize_t sz; 22 | 23 | do { 24 | if ((sz = read(ip->ib_fd, ip->ib_blk, ip->ib_blksize)) > 0) { 25 | ip->ib_endoff += sz; 26 | ip->ib_cur = ip->ib_blk; 27 | ip->ib_end = &ip->ib_blk[sz]; 28 | return *ip->ib_cur++ & 0377; 29 | } 30 | } while (sz < 0 && errno == EINTR); 31 | if (sz < 0) 32 | ip->ib_errno = errno; 33 | ip->ib_cur = ip->ib_end = NULL; 34 | return EOF; 35 | } 36 | -------------------------------------------------------------------------------- /libcommon/ib_seek.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)ib_seek.c 1.4 (gritter) 5/8/03 */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #include "iblok.h" 17 | 18 | off_t 19 | ib_seek(struct iblok *ip, off_t off, int whence) 20 | { 21 | if (whence == SEEK_CUR) { 22 | off = ip->ib_endoff - (ip->ib_end - ip->ib_cur); 23 | whence = SEEK_SET; 24 | } 25 | if (ip->ib_seekable && whence == SEEK_SET && ip->ib_cur && ip->ib_end && 26 | off < ip->ib_endoff && 27 | off >= ip->ib_endoff - (ip->ib_end - ip->ib_blk)) { 28 | ip->ib_cur = ip->ib_end - (ip->ib_endoff - off); 29 | return off; 30 | } 31 | if ((off = lseek(ip->ib_fd, off, whence)) == (off_t)-1) 32 | return -1; 33 | ip->ib_cur = ip->ib_end = NULL; 34 | ip->ib_endoff = off; 35 | ip->ib_seekable = 1; 36 | return off; 37 | } 38 | -------------------------------------------------------------------------------- /libcommon/mbtowi.h: -------------------------------------------------------------------------------- 1 | /* Sccsid @(#)mbtowi.h 1.2 (gritter) 7/16/04 */ 2 | 3 | #ifndef LIBCOMMON_MBTOWI_H 4 | #define LIBCOMMON_MBTOWI_H 5 | 6 | static 7 | #if defined (__GNUC__) || defined (__USLC__) || defined (__INTEL_COMPILER) || \ 8 | defined (__IBMC__) || defined (__SUNPRO_C) 9 | inline 10 | #endif 11 | int 12 | mbtowi(wint_t *pwi, const char *s, size_t n) 13 | { 14 | wchar_t wc; 15 | int i; 16 | 17 | i = mbtowc(&wc, s, n); 18 | *pwi = wc; 19 | return i; 20 | } 21 | 22 | #endif /* !LIBCOMMON_MBTOWI_H */ 23 | -------------------------------------------------------------------------------- /libcommon/memalign.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)memalign.c 1.7 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (_AIX) || \ 9 | defined (__NetBSD__) || defined (__OpenBSD__) || \ 10 | defined (__DragonFly__) || defined (__APPLE__) 11 | /* 12 | * FreeBSD malloc(3) promises to page-align the return of malloc() calls 13 | * if size is at least a page. This serves for a poor man's memalign() 14 | * implementation that matches our needs. 15 | */ 16 | #include 17 | #include 18 | 19 | #include "memalign.h" 20 | 21 | void * 22 | memalign(size_t alignment, size_t size) 23 | { 24 | static long pagesize; 25 | 26 | if (pagesize == 0) 27 | pagesize = sysconf(_SC_PAGESIZE); 28 | if (alignment != pagesize) 29 | return NULL; 30 | if (size < pagesize) 31 | size = pagesize; 32 | return malloc(size); 33 | } 34 | #endif /* __FreeBSD__ || __dietlibc__ || _AIX || __NetBSD__ || __OpenBSD__ || 35 | __DragonFly__ || __APPLE__ */ 36 | -------------------------------------------------------------------------------- /libcommon/memalign.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)memalign.h 1.7 (gritter) 1/22/06 */ 7 | 8 | #ifndef LIBCOMMON_MEMALIGN_H 9 | #define LIBCOMMON_MEMALIGN_H 10 | 11 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (_AIX) || \ 12 | defined (__NetBSD__) || defined (__OpenBSD__) || \ 13 | defined (__DragonFly__) || defined (__APPLE__) 14 | #include 15 | 16 | extern void *memalign(size_t, size_t); 17 | #endif /* __FreeBSD__ || __dietlibc__ || _AIX || __NetBSD__ || __OpenBSD__ || 18 | __DragonFly__ || __APPLE__ */ 19 | #endif /* !LIBCOMMON_MEMALIGN_H */ 20 | -------------------------------------------------------------------------------- /libcommon/msgselect.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)msgselect.h 1.2 (gritter) 9/21/03 */ 7 | 8 | #define MSG_LEVEL 0 9 | 10 | #if MSG_LEVEL == 1 11 | #define msgselect(a, b) a 12 | #else 13 | #define msgselect(a, b) b 14 | #endif 15 | -------------------------------------------------------------------------------- /libcommon/pathconf.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)pathconf.c 1.2 (gritter) 5/1/04 */ 7 | 8 | #ifdef __dietlibc__ 9 | #include 10 | #include "pathconf.h" 11 | 12 | static long 13 | pc(int name) 14 | { 15 | switch (name) { 16 | case _PC_PATH_MAX: 17 | return 1024; 18 | case _PC_VDISABLE: 19 | return 0; 20 | default: 21 | return -1; 22 | } 23 | } 24 | 25 | long 26 | fpathconf(int fildes, int name) 27 | { 28 | return pc(name); 29 | } 30 | 31 | long 32 | pathconf(const char *path, int name) { 33 | return pc(name); 34 | } 35 | #endif /* __dietlibc__ */ 36 | -------------------------------------------------------------------------------- /libcommon/pathconf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)pathconf.h 1.2 (gritter) 5/1/04 */ 7 | 8 | #ifdef __dietlibc__ 9 | #include 10 | 11 | extern long fpathconf(int, int); 12 | extern long pathconf(const char *, int); 13 | #endif /* __dietlibc__ */ 14 | -------------------------------------------------------------------------------- /libcommon/pfmt.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)pfmt.c 1.2 (gritter) 9/21/03 */ 7 | 8 | #include 9 | #include 10 | 11 | #include "pfmt.h" 12 | 13 | int 14 | pfmt(FILE *stream, long flags, const char *fmt, ...) 15 | { 16 | va_list ap; 17 | int i; 18 | 19 | va_start(ap, fmt); 20 | i = vpfmt(stream, flags, fmt, ap); 21 | va_end(ap); 22 | return i; 23 | } 24 | -------------------------------------------------------------------------------- /libcommon/pfmt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)pfmt.h 1.2 (gritter) 9/21/03 */ 7 | 8 | #include 9 | 10 | extern int pfmt(FILE *stream, long flags, const char *format, ...); 11 | 12 | #include 13 | 14 | extern int vpfmt(FILE *stream, long flags, const char *format, va_list ap); 15 | 16 | #define MM_HALT 0x00000001 17 | #define MM_ERROR 0x00000000 18 | #define MM_WARNING 0x00000002 19 | #define MM_INFO 0x00000004 20 | #define MM_ACTION 0x00000100 21 | #define MM_NOSTD 0x00000200 22 | #define MM_STD 0x00000000 23 | #define MM_NOGET 0x00000400 24 | #define MM_GET 0x00000000 25 | 26 | extern int setlabel(const char *label); 27 | extern int setuxlabel(const char *label); 28 | 29 | #define setcat(s) (s) 30 | #define gettxt(n, s) (s) 31 | -------------------------------------------------------------------------------- /libcommon/pfmt_label.c: -------------------------------------------------------------------------------- 1 | char *pfmt_label__; 2 | -------------------------------------------------------------------------------- /libcommon/prerror.c: -------------------------------------------------------------------------------- 1 | /* prerror - wrapper function for pfmt.h */ 2 | /* This basically prints both errno and string errors. 3 | * I hope my explanation isn't so confusing. 4 | */ 5 | /* Copyright (C) 2022: Arthur Bacci (arthurbacci) 6 | * 7 | * SPDX-Licence-Identifier: Zlib 8 | */ 9 | 10 | #include 11 | #include 12 | #include "pfmt.h" 13 | 14 | void prerror(int error) { 15 | errno = 0; 16 | char *str = strerror(error); 17 | if (errno != 0) 18 | pfmt(stderr, MM_ERROR, "errno %d\n", error); 19 | else 20 | pfmt(stderr, MM_ERROR, "%s\n", str); 21 | } 22 | -------------------------------------------------------------------------------- /libcommon/prerror.h: -------------------------------------------------------------------------------- 1 | /* prerror - wrapper function for pfmt.h */ 2 | /* This basically prints both errno and string errors. 3 | * I hope my explanation isn't so confusing. 4 | */ 5 | /* Copyright (C) 2022: Arthur Bacci (arthurbacci) 6 | * 7 | * SPDX-Licence-Identifier: Zlib 8 | */ 9 | 10 | extern void prerror(int error); 11 | -------------------------------------------------------------------------------- /libcommon/regexpr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple Regular Expression functions. Derived from Unix 7th Edition, 3 | * /usr/src/cmd/expr.y 4 | * 5 | * Modified by Gunnar Ritter, Freiburg i. Br., Germany, January 2003. 6 | * 7 | * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 8 | * 9 | * SPDX-Licence-Identifier: Caldera 10 | */ 11 | 12 | /* Sccsid @(#)regexpr.h 1.2 (gritter) 1/11/03 */ 13 | 14 | #define NBRA 9 15 | 16 | extern char *braslist[NBRA]; 17 | extern char *braelist[NBRA]; 18 | extern int nbra; 19 | extern int regerrno, reglength; 20 | extern char *loc1, *loc2, *locs; 21 | extern int sed; 22 | 23 | extern char *compile(const char *, char *, char *); 24 | extern int step(const char *, const char *); 25 | extern int advance(const char *, const char *); 26 | -------------------------------------------------------------------------------- /libcommon/setlabel.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)setlabel.c 1.1 (gritter) 9/21/03 */ 7 | 8 | extern char *pfmt_label__; 9 | 10 | int 11 | setlabel(const char *s) 12 | { 13 | static char lbuf[26]; 14 | char *lp; 15 | 16 | if (s && s[0]) { 17 | for (lp = lbuf; *s && lp < &lbuf[sizeof lbuf-1]; s++, lp++) 18 | *lp = *s; 19 | *lp = '\0'; 20 | pfmt_label__ = lbuf; 21 | } else 22 | pfmt_label__ = 0; 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /libcommon/setuxlabel.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)setuxlabel.c 1.1 (gritter) 9/21/03 */ 7 | 8 | #include "msgselect.h" 9 | 10 | extern char *pfmt_label__; 11 | 12 | int 13 | setuxlabel(const char *s) 14 | { 15 | static char lbuf[msgselect(29,26)]; 16 | char *lp, *mp; 17 | 18 | if (s && s[0]) { 19 | lp = lbuf; 20 | mp = msgselect("UX:",""); 21 | while (*mp) 22 | *lp++ = *mp++; 23 | lbuf[0] = 'U', lbuf[1] = 'X', lbuf[2] = ':'; 24 | while (*s && lp < &lbuf[sizeof lbuf-1]) 25 | *lp++ = *s++; 26 | *lp = '\0'; 27 | pfmt_label__ = lbuf; 28 | } else 29 | pfmt_label__ = 0; 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /libcommon/sfile.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)sfile.h 1.4 (gritter) 4/17/03 */ 7 | 8 | /* 9 | * Return values: 10 | * 11 | * src_size The entire range has been copied. The file offset of both 12 | * dst_fd and src_fd have been set to this position. The 13 | * operation has been completed successfully. 14 | * 15 | * >0 Number of bytes written. The file offset of both dst_fd 16 | * and src_fd have been set to this position. The operation 17 | * may continue using read()/write(). 18 | * 19 | * 0 No data was written; operation may continue. 20 | * 21 | * -1 An error occured; operation may not continue. 22 | */ 23 | extern long long sfile(int dst_fd, int src_fd, mode_t src_mode, 24 | long long src_size); 25 | -------------------------------------------------------------------------------- /libcommon/sighold.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)sighold.c 1.7 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ 9 | defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) 10 | #include 11 | #include "sigset.h" 12 | 13 | int 14 | sighold(int sig) 15 | { 16 | sigset_t set, oset; 17 | 18 | if (sig <= 0) 19 | return -1; 20 | sigemptyset(&set); 21 | sigaddset(&set, sig); 22 | return sigprocmask(SIG_BLOCK, &set, &oset); 23 | } 24 | #endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ || 25 | __DragonFly__ || __APPLE__ */ 26 | -------------------------------------------------------------------------------- /libcommon/sigignore.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)sigignore.c 1.6 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ 9 | defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) 10 | #include 11 | #include "sigset.h" 12 | 13 | int 14 | sigignore(int sig) 15 | { 16 | struct sigaction act; 17 | 18 | if (sig <= 0) 19 | return -1; 20 | act.sa_handler = SIG_IGN; 21 | act.sa_flags = 0; 22 | if (sig == SIGCHLD) 23 | act.sa_flags |= SA_NOCLDSTOP|SA_NOCLDWAIT; 24 | sigemptyset(&act.sa_mask); 25 | sigaddset(&act.sa_mask, sig); 26 | return sigaction(sig, &act, (struct sigaction *)0); 27 | } 28 | #endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ || 29 | __DragonFly__ || __APPLE__ */ 30 | -------------------------------------------------------------------------------- /libcommon/signal.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)signal.c 1.6 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ 9 | defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) 10 | #include 11 | #include "sigset.h" 12 | 13 | void (*signal(int sig, void (*func)(int)))(int) 14 | { 15 | struct sigaction nact, oact; 16 | 17 | if (sig <= 0) 18 | return SIG_ERR; 19 | nact.sa_handler = func; 20 | nact.sa_flags = SA_RESETHAND|SA_NODEFER; 21 | if (sig == SIGCHLD && func == SIG_IGN) 22 | nact.sa_flags |= SA_NOCLDSTOP|SA_NOCLDWAIT; 23 | sigemptyset(&nact.sa_mask); 24 | if (sigaction(sig, &nact, &oact) == -1) 25 | return SIG_ERR; 26 | return oact.sa_handler; 27 | } 28 | #endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ || 29 | __DragonFly__ || __APPLE__ */ 30 | -------------------------------------------------------------------------------- /libcommon/sigpause.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)sigpause.c 1.6 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ 9 | defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) 10 | #include 11 | #include "sigset.h" 12 | 13 | int 14 | sigpause(int sig) 15 | { 16 | sigset_t nset, oset; 17 | int ret; 18 | 19 | if (sig <= 0) 20 | return -1; 21 | sigemptyset(&nset); 22 | sigaddset(&nset, sig); 23 | if (sigprocmask(SIG_UNBLOCK, &nset, &oset) < 0) 24 | return -1; 25 | sigemptyset(&nset); 26 | ret = sigsuspend(&nset); 27 | if (sigprocmask(SIG_SETMASK, &oset, (sigset_t *)0) < 0) 28 | ret = -1; 29 | return ret; 30 | } 31 | #endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ || 32 | __DragonFly__ || __APPLE__ */ 33 | -------------------------------------------------------------------------------- /libcommon/sigrelse.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)sigrelse.c 1.8 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ 9 | defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) 10 | #include 11 | #include "sigset.h" 12 | 13 | int 14 | sigrelse(int sig) 15 | { 16 | sigset_t set, oset; 17 | 18 | if (sig <= 0) 19 | return -1; 20 | sigemptyset(&set); 21 | sigaddset(&set, sig); 22 | return sigprocmask(SIG_UNBLOCK, &set, &oset); 23 | } 24 | #endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ || 25 | __DragonFly__ || __APPLE__ */ 26 | -------------------------------------------------------------------------------- /libcommon/sigset.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)sigset.c 1.7 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ 9 | defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) 10 | #include 11 | #include "sigset.h" 12 | 13 | void (*sigset(int sig, void (*func)(int)))(int) 14 | { 15 | struct sigaction nact, oact; 16 | sigset_t nset, oset; 17 | 18 | if (sig <= 0) 19 | return SIG_ERR; 20 | sigemptyset(&nset); 21 | sigaddset(&nset, sig); 22 | if (sigprocmask(func==SIG_HOLD?SIG_BLOCK:SIG_UNBLOCK, &nset, &oset) < 0) 23 | return SIG_ERR; 24 | nact.sa_handler = func; 25 | nact.sa_flags = 0; 26 | if (sig == SIGCHLD && func == SIG_IGN) 27 | nact.sa_flags |= SA_NOCLDSTOP|SA_NOCLDWAIT; 28 | sigemptyset(&nact.sa_mask); 29 | sigaddset(&nact.sa_mask, sig); 30 | if (sigaction(sig, func==SIG_HOLD?(struct sigaction *)0:&nact, &oact) 31 | == -1) 32 | return SIG_ERR; 33 | if (sigismember(&oset, sig)) 34 | return SIG_HOLD; 35 | else 36 | return (oact.sa_handler); 37 | } 38 | #endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ || 39 | __DragonFly__ || __APPLE__ */ 40 | -------------------------------------------------------------------------------- /libcommon/sigset.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)sigset.h 1.9 (gritter) 1/22/06 */ 7 | 8 | #if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ 9 | defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) 10 | 11 | #ifndef SIG_HOLD 12 | #define SIG_HOLD ((void (*)(int))2) 13 | #endif /* !SIG_HOLD */ 14 | 15 | extern int sighold(int); 16 | extern int sigignore(int); 17 | extern int sigpause(int); 18 | extern int sigrelse(int); 19 | extern void (*sigset(int, void (*)(int)))(int); 20 | extern void (*signal(int, void (*)(int)))(int); 21 | #endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ || 22 | __DragonFly__ || __APPLE__ */ 23 | -------------------------------------------------------------------------------- /libcommon/sputs.h: -------------------------------------------------------------------------------- 1 | /* 2 | * sputs.h - A puts(3)(-oid) set of macros, but fo strings 3 | * instead of the standard output. 4 | * 5 | * Copyright (c) 2024 Luiz Antônio Rangel (takusuman) 6 | * 7 | * SPDX-Licence-Identifier: Zlib 8 | */ 9 | 10 | #define sputchar(s, c) *(s++) = c 11 | #define sputs(ds, s) \ 12 | for (unsigned int sp = 0; s[sp] != '\0'; sp++) \ 13 | sputchar(ds, s[sp]); \ 14 | sputchar(ds, '\n'); 15 | -------------------------------------------------------------------------------- /libcommon/strmenta.h: -------------------------------------------------------------------------------- 1 | /* 2 | * strmenta.h - header for string utilities 3 | * 4 | * Copyright (c) 2024 Luiz Antônio Rangel (takusuman) 5 | * 6 | * SPDX-Licence-Identifier: Zlib 7 | */ 8 | 9 | #include "sputs.h" 10 | 11 | /* Boilerplate for 'pointer++; pointerc--;' */ 12 | #define shift(p, d) p++; d-- 13 | 14 | extern int afterchar(const char s[], int c); 15 | extern char *basename(const char path[]); 16 | extern char *ssafe(const char *s); -------------------------------------------------------------------------------- /libcommon/sysv3.c: -------------------------------------------------------------------------------- 1 | /* Sccsid @(#)sysv3.c 1.1 (gritter) 5/29/04 */ 2 | int sysv3; 3 | -------------------------------------------------------------------------------- /libuxre/NOTES: -------------------------------------------------------------------------------- 1 | Notes for the modified 'UNIX(R) Regular Expression Library' 2 | ============================================================ 3 | 4 | The code this is based on was released by Caldera as 'osutils-0.1a' 5 | and is available at . Notable 6 | changes include: 7 | 8 | - Support for multibyte characters was enabled again. 9 | - Support for traditional extended regular expression syntax was added. 10 | - Fix: With REG_ICASE, [B-z] matches 'A', 'a', and '[' according to 11 | POSIX.2. 12 | - Some speed improvements. 13 | 14 | Gunnar Ritter 9/22/03 15 | -------------------------------------------------------------------------------- /libuxre/_collmult.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Changes by Gunnar Ritter, Freiburg i. Br., Germany, November 2002. 3 | * 4 | * Sccsid @(#)_collmult.c 1.4 (gritter) 9/22/03 5 | */ 6 | /* UNIX(R) Regular Expresssion Library 7 | * 8 | * Note: Code is released under the GNU LGPL 9 | * 10 | * Copyright (C) 2001 Caldera International, Inc. 11 | * 12 | * SPDX-Licence-Identifier: LGPL-2.1+ 13 | */ 14 | 15 | /* #include "synonyms.h" */ 16 | #include "colldata.h" 17 | #include 18 | 19 | #define CCM(p) ((const CollMult *)(p)) 20 | 21 | LIBUXRE_STATIC const CollElem * 22 | libuxre_collmult(struct lc_collate *col, const CollElem *cep, wchar_t wc) 23 | { 24 | const char *tbl; 25 | size_t sz; 26 | w_type ch; 27 | 28 | if (col == 0 || cep->multbeg == 0 29 | || (tbl = (const char *)col->multtbl) == 0) 30 | { 31 | return ELEM_BADCHAR; 32 | } 33 | sz = col->elemsize + (sizeof(CollMult) - sizeof(CollElem)); 34 | tbl += sz * cep->multbeg; 35 | while ((ch = CCM(tbl)->ch) != wc) 36 | { 37 | if (ch == 0) 38 | return ELEM_BADCHAR; /* end of list */ 39 | tbl += sz; 40 | } 41 | return &CCM(tbl)->elem; 42 | } 43 | -------------------------------------------------------------------------------- /libuxre/onefile.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Changes by Gunnar Ritter, Freiburg i. Br., Germany, November 2002. 3 | * 4 | * Sccsid @(#)onefile.c 1.1 (gritter) 9/22/03 5 | */ 6 | /* UNIX(R) Regular Expresssion Library 7 | * 8 | * Note: Code is released under the GNU LGPL 9 | * 10 | * Copyright (C) 2001 Caldera International, Inc. 11 | * 12 | * SPDX-Licence-Identifier: LGPL-2.1+ 13 | */ 14 | 15 | #define LIBUXRE_STATIC static 16 | 17 | #include "_collelem.c" 18 | #include "_collmult.c" 19 | #include "stubs.c" 20 | #include "bracket.c" 21 | #include "regdfa.c" 22 | #include "regnfa.c" 23 | #include "regparse.c" 24 | #include "regcomp.c" 25 | #include "regexec.c" 26 | -------------------------------------------------------------------------------- /libuxre/regfree.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Changes by Gunnar Ritter, Freiburg i. Br., Germany, November 2002. 3 | * 4 | * Sccsid @(#)regfree.c 1.3 (gritter) 9/22/03 5 | */ 6 | /* UNIX(R) Regular Expresssion Library 7 | * 8 | * Note: Code is released under the GNU LGPL 9 | * 10 | * Copyright (C) 2001 Caldera International, Inc. 11 | * 12 | * SPDX-Licence-Identifier: LGPL-2.1+ 13 | */ 14 | 15 | /* #include "synonyms.h" */ 16 | #include "re.h" 17 | 18 | /* #pragma weak regfree = _regfree */ 19 | 20 | void 21 | regfree(regex_t *ep) 22 | { 23 | if (ep->re_flags & REG_DFA) 24 | libuxre_regdeldfa(ep->re_dfa); 25 | if (ep->re_flags & REG_NFA) 26 | libuxre_regdelnfa(ep->re_nfa); 27 | if (ep->re_col != 0) 28 | (void)libuxre_lc_collate(ep->re_col); 29 | } 30 | -------------------------------------------------------------------------------- /libwchar/mblen.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2005 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)mblen.c 1.2 (gritter) 1/15/05 */ 7 | 8 | #include "wchar.h" 9 | 10 | int 11 | mblen(const char *s, size_t n) 12 | { 13 | if (s != NULL) { 14 | if (n < 1) 15 | return 0; 16 | else if (*s == '\0') 17 | return 0; 18 | else 19 | return 1; 20 | } else 21 | return 0; 22 | } 23 | -------------------------------------------------------------------------------- /libwchar/mbrtowc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)mbrtowc.c 1.2 (gritter) 1/15/05 */ 7 | 8 | #include 9 | #include "wchar.h" 10 | 11 | size_t 12 | mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps) 13 | { 14 | if (s != NULL) { 15 | if (n < 1) { 16 | errno = EILSEQ; 17 | return -1; 18 | } 19 | if (pwc != NULL) 20 | *pwc = *s & 0377; 21 | return *s != '\0'; 22 | } else 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /libwchar/mbstowcs.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)mbstowcs.c 1.2 (gritter) 1/15/05 */ 7 | 8 | #include 9 | #include "wchar.h" 10 | 11 | size_t 12 | mbstowcs(wchar_t *pwcs, const char *s, size_t n) 13 | { 14 | int r = 0, m; 15 | 16 | while (n) { 17 | if ((m = mbtowc(pwcs, s, n)) < 0) 18 | return (size_t)-1; 19 | if (m == 0) { 20 | n++; 21 | break; 22 | } 23 | n -= m; 24 | r += m; 25 | } 26 | return r; 27 | } 28 | -------------------------------------------------------------------------------- /libwchar/mbtowc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)mbtowc.c 1.2 (gritter) 1/15/05 */ 7 | 8 | #include 9 | #include "wchar.h" 10 | 11 | int 12 | mbtowc(wchar_t *pwc, const char *s, size_t n) 13 | { 14 | if (s != NULL) { 15 | if (n < 1) { 16 | errno = EILSEQ; 17 | return -1; 18 | } 19 | if (pwc != NULL) 20 | *pwc = *s & 0377; 21 | return *s != '\0'; 22 | } else 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /libwchar/wcslen.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)wcslen.c 1.1 (gritter) 5/1/04 */ 7 | 8 | #include "wchar.h" 9 | 10 | size_t 11 | wcslen(const wchar_t *ws) 12 | { 13 | size_t n; 14 | 15 | for (n = 0; *ws; n++) 16 | ws++; 17 | return n; 18 | } 19 | -------------------------------------------------------------------------------- /libwchar/wcsncmp.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)wcsncmp.c 1.1 (gritter) 5/1/04 */ 7 | 8 | #include "wchar.h" 9 | 10 | int 11 | wcsncmp(const wchar_t *ws1, const wchar_t *ws2, size_t n) 12 | { 13 | int diff = 0; 14 | 15 | while (n--) { 16 | diff = *ws1 - *ws2; 17 | if (diff != 0 || *ws1++ == 0 || *ws2++ == 0) 18 | break; 19 | } 20 | return diff; 21 | } 22 | -------------------------------------------------------------------------------- /libwchar/wctfunc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)wctfunc.c 1.1 (gritter) 5/1/04 */ 7 | 8 | #include "wchar.h" 9 | #include 10 | 11 | #define imake(s) int \ 12 | isw ##s(wint_t c) { \ 13 | return is ##s(c); \ 14 | } 15 | 16 | #define tmake(s) wint_t \ 17 | tow ##s(wint_t c) { \ 18 | return to ##s(c); \ 19 | } 20 | 21 | imake(alnum); 22 | imake(alpha); 23 | imake(blank); 24 | imake(cntrl); 25 | imake(digit); 26 | imake(graph); 27 | imake(lower); 28 | imake(print); 29 | imake(punct); 30 | imake(space); 31 | imake(upper); 32 | imake(xdigit); 33 | 34 | tmake(lower); 35 | tmake(upper); 36 | -------------------------------------------------------------------------------- /libwchar/wctomb.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)wctomb.c 1.1 (gritter) 5/1/04 */ 7 | 8 | #include "wchar.h" 9 | 10 | int 11 | wctomb(char *s, wchar_t wchar) 12 | { 13 | if (s != NULL) { 14 | *s = wchar; 15 | return 1; 16 | } else 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /libwchar/wctype.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)wctype.c 1.2 (gritter) 9/28/04 */ 7 | 8 | #include "wctype.h" 9 | #include 10 | #include 11 | 12 | #define thistype(s) if (strcmp((#s), property) == 0) { \ 13 | func = is ##s; \ 14 | goto found; \ 15 | } 16 | 17 | wctype_t 18 | wctype(const char *property) 19 | { 20 | int (*func)(int) = NULL; 21 | 22 | thistype(alnum); 23 | thistype(alpha); 24 | thistype(blank); 25 | thistype(cntrl); 26 | thistype(digit); 27 | thistype(graph); 28 | thistype(lower); 29 | thistype(print); 30 | thistype(punct); 31 | thistype(space); 32 | thistype(upper); 33 | thistype(xdigit); 34 | found: return (wctype_t)func; 35 | } 36 | 37 | int 38 | iswctype(wint_t wc, wctype_t charclass) 39 | { 40 | if (charclass == 0) 41 | return 0; 42 | return ((int (*)(int))charclass)(wc); 43 | } 44 | -------------------------------------------------------------------------------- /libwchar/wctype.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)wctype.h 1.1 (gritter) 5/1/04 */ 7 | 8 | #ifndef LIBWCHAR_WCTYPE_H 9 | #define LIBWCHAR_WCTYPE_H 1 10 | 11 | #include 12 | #include 13 | #include "wchar.h" 14 | 15 | typedef int wctrans_t; 16 | 17 | #define iswalnum(c) isalnum(c) 18 | #define iswalpha(c) isalpha(c) 19 | #define iswblank(c) isblank(c) 20 | #define iswcntrl(c) iscntrl(c) 21 | #define iswdigit(c) isdigit(c) 22 | #define iswgraph(c) isgraph(c) 23 | #define iswlower(c) islower(c) 24 | #define iswprint(c) isprint(c) 25 | #define iswpunct(c) ispunct(c) 26 | #define iswspace(c) isspace(c) 27 | #define iswupper(c) isupper(c) 28 | #define iswxdigit(c) isxdigit(c) 29 | 30 | #define towlower(c) (tolower(c) & 0377) 31 | #define towupper(c) (toupper(c) & 0377) 32 | 33 | extern int iswctype(wint_t, wctype_t); 34 | extern wint_t towctrans(wint_t, wctrans_t); 35 | extern wctrans_t wctrans(const char *); 36 | extern wctype_t wctype(const char *); 37 | 38 | #endif /* !LIBWCHAR_WCTYPE_H */ 39 | -------------------------------------------------------------------------------- /libwchar/wcwidth.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004 Gunnar Ritter 3 | * 4 | * SPDX-Licence-Identifier: Zlib 5 | */ 6 | /* Sccsid @(#)wcwidth.c 1.1 (gritter) 5/1/04 */ 7 | 8 | #include "wchar.h" 9 | #include "wctype.h" 10 | 11 | int 12 | wcwidth(wchar_t wc) 13 | { 14 | if (wc == 0) 15 | return 0; 16 | else if (iswprint(wc)) 17 | return 1; 18 | else 19 | return -1; 20 | } 21 | -------------------------------------------------------------------------------- /line/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: line 2 | 3 | line: line.o 4 | $(LD) $(LDFLAGS) line.o $(LCOMMON) $(LIBS) -o line 5 | 6 | line.o: line.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c line.c 8 | 9 | install: all 10 | $(UCBINST) -c line $(ROOT)$(DEFBIN)/line 11 | $(STRIP) $(ROOT)$(DEFBIN)/line 12 | $(MANINST) -c -m 644 line.1 $(ROOT)$(MANDIR)/man1/line.1 13 | 14 | clean: 15 | rm -f line line.o core log *~ 16 | -------------------------------------------------------------------------------- /line/line.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .\" Sccsid @(#)line.1 1.4 (gritter) 4/17/03 7 | .TH LINE 1 "4/17/03" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | line \- read one line 10 | .SH SYNOPSIS 11 | .B line 12 | .SH DESCRIPTION 13 | .I Line 14 | copies one line from standard input to standard output. 15 | If end-of-file is reached on input or if a read error occurs, 16 | its exit status is non-zero. 17 | .I Line 18 | always writes a newline as the last character. 19 | .SH "SEE ALSO" 20 | read(1) 21 | -------------------------------------------------------------------------------- /line/line.c: -------------------------------------------------------------------------------- 1 | /* 2 | * line - read one line 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, December 2000. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 13 | #define USED __attribute__ ((used)) 14 | #elif defined __GNUC__ 15 | #define USED __attribute__ ((unused)) 16 | #else 17 | #define USED 18 | #endif 19 | static const char sccsid[] USED = "@(#)line.sl 1.11 (gritter) 5/29/05"; 20 | 21 | #include 22 | #include 23 | 24 | static int status; /* exit status */ 25 | 26 | static void 27 | doline(int fd) 28 | { 29 | char c; 30 | 31 | for (;;) { 32 | if (read(fd, &c, 1) <= 0) { 33 | status = 1; 34 | break; 35 | } 36 | if (c == '\n') 37 | break; 38 | putchar(c); 39 | } 40 | putchar('\n'); 41 | } 42 | 43 | int 44 | main(int argc, char **argv) 45 | { 46 | doline(0); 47 | return status; 48 | } 49 | -------------------------------------------------------------------------------- /listusers/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: listusers 2 | 3 | listusers: listusers.o 4 | $(LD) $(LDFLAGS) listusers.o $(LCOMMON) $(LIBS) -o listusers 5 | 6 | listusers.o: listusers.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c listusers.c 8 | 9 | install: all 10 | $(UCBINST) -c listusers $(ROOT)$(DEFBIN)/listusers 11 | $(STRIP) $(ROOT)$(DEFBIN)/listusers 12 | $(MANINST) -c -m 644 listusers.1 $(ROOT)$(MANDIR)/man1/listusers.1 13 | 14 | clean: 15 | rm -f listusers listusers.o core log *~ 16 | -------------------------------------------------------------------------------- /listusers/listusers.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .\" Sccsid @(#)listusers.1 1.6 (gritter) 4/17/03 7 | .TH LISTUSERS 1 "4/17/03" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | listusers \- print a list of user logins 10 | .SH SYNOPSIS 11 | listusers [-g groups] [-l logins] 12 | .SH DESCRIPTION 13 | Listusers prints the name and the gecos information 14 | of all users known to the system, 15 | sorted by username. 16 | .PP 17 | Valid options are: 18 | .TP 19 | .BI "-g" \ groups 20 | Only print the names of users 21 | that belong to the given group. 22 | Multiple groups are accepted if separated by commas. 23 | .TP 24 | .BI "-l" \ logins 25 | Print only user names that match \fIlogins\fR. 26 | Multiple user names are accepted if separated by commas. 27 | .SH "SEE ALSO" 28 | passwd(5) 29 | .SH NOTES 30 | Only users whose UID is greater than 100 are recognized. 31 | -------------------------------------------------------------------------------- /ln/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: ln_ucb 2 | 3 | ln_ucb: ln_ucb.o 4 | $(LD) $(LDFLAGS) ln_ucb.o $(LCOMMON) $(LIBS) -o ln_ucb 5 | 6 | ln_ucb.o: ln_ucb.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c ln_ucb.c 8 | 9 | install: all 10 | $(UCBINST) -c ln_ucb $(ROOT)$(UCBBIN)/ln 11 | $(STRIP) $(ROOT)$(UCBBIN)/ln 12 | $(MANINST) -c -m 644 ln.1b $(ROOT)$(MANDIR)/man1b/ln.1b 13 | 14 | clean: 15 | rm -f ln_ucb ln_ucb.o core log *~ 16 | -------------------------------------------------------------------------------- /logins/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: config.h logins 2 | 3 | logins: logins.o 4 | $(LD) $(LDFLAGS) logins.o $(LCOMMON) $(LIBS) -o logins 5 | 6 | logins.o: logins.c config.h 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) -c logins.c 8 | 9 | install: all 10 | $(UCBINST) -c logins $(ROOT)$(DEFBIN)/logins 11 | $(STRIP) $(ROOT)$(DEFBIN)/logins 12 | $(MANINST) -c -m 644 logins.1 $(ROOT)$(MANDIR)/man1/logins.1 13 | 14 | config.h: 15 | -echo '/* Auto-generated by make. Do no edit! */' >config.h 16 | -echo '#include ' >___build$$$$.c ; \ 17 | echo 'int main(void) { getspent(); return 0; }' >>___build$$$$.c ; \ 18 | $(CC) $(CFLAGS) $(CPPFLAGS) $(LARGEF) $(IWCHAR) -o ___build$$$$ ___build$$$$.c >/dev/null 2>&1 ; \ 19 | if test $$? = 0 && test -f ___build$$$$ ; \ 20 | then echo '#define SHADOW_PWD' >>config.h ; \ 21 | fi ; \ 22 | rm -f ___build$$$$ ___build$$$$.c 23 | 24 | clean: 25 | rm -f config.h logins logins.o core log *~ 26 | -------------------------------------------------------------------------------- /logname/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: logname 2 | 3 | logname: logname.o 4 | $(LD) $(LDFLAGS) logname.o $(LCOMMON) $(LWCHAR) $(LIBS) -o logname 5 | 6 | logname.o: logname.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c logname.c 8 | 9 | install: all 10 | $(UCBINST) -c logname $(ROOT)$(DEFBIN)/logname 11 | $(STRIP) $(ROOT)$(DEFBIN)/logname 12 | $(MANINST) -c -m 644 logname.1 $(ROOT)$(MANDIR)/man1/logname.1 13 | 14 | clean: 15 | rm -f logname logname.o core log *~ 16 | -------------------------------------------------------------------------------- /logname/logname.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)logname.1 1.1 (gritter) 10/26/03 3 | .TH LOGNAME 1 "10/26/03" "Heirloom Toolchest" "User Commands" 4 | .SH NAME 5 | logname \- get login name 6 | .SH SYNOPSIS 7 | \fBlogname\fR 8 | .SH DESCRIPTION 9 | .I Logname 10 | returns the login name of the invoking process. 11 | -------------------------------------------------------------------------------- /logname/logname.c: -------------------------------------------------------------------------------- 1 | /* 2 | * logname - get login name 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, October 2003. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * Copyright (c) 2022 Luiz Antônio (takusuman) 9 | * 10 | * SPDX-Licence-Identifier: Zlib 11 | */ 12 | 13 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 14 | #define USED __attribute__ ((used)) 15 | #elif defined __GNUC__ 16 | #define USED __attribute__ ((unused)) 17 | #else 18 | #define USED 19 | #endif 20 | static const char sccsid[] USED = "@(#)logname.sl 1.3 (gritter) 5/29/05"; 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | int 27 | main(int argc, char **argv) 28 | { 29 | char *lp; 30 | 31 | if ((lp = getlogin()) == NULL) { 32 | pfmt(stderr, MM_ERROR, "Cannot get login name\n"); 33 | return 1; 34 | } 35 | puts(lp); 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /mail/Dout.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "Dout.c 1.5 05/06/08 SMI" SVr4.0 1. */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)Dout.c 1.4 (gritter) 6/18/05 14 | */ 15 | /* 16 | NAME 17 | Dout - Print debug output 18 | 19 | SYNOPSIS 20 | void Dout(char *subname, int level, char *msg, ...) 21 | 22 | DESCRIPTION 23 | Dout prints debugging output if debugging is turned 24 | on (-x specified) and the level of this message is 25 | lower than the value of the global variable debug. 26 | The subroutine name is printed if it is not a null 27 | string. 28 | */ 29 | #include "mail.h" 30 | #include 31 | 32 | /* VARARGS3 PRINTFLIKE3 */ 33 | void 34 | Dout(char *subname, int level, char *fmt, ...) 35 | { 36 | va_list args; 37 | 38 | va_start(args, fmt); 39 | 40 | if (debug > level) { 41 | if (subname && *subname) { 42 | fprintf(dbgfp,"%s(): ", subname); 43 | } 44 | vfprintf(dbgfp, fmt, args); 45 | } 46 | va_end(args); 47 | } 48 | -------------------------------------------------------------------------------- /mail/casncmp.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* 9 | * Copyright (c) 1999, by Sun Microsystems, Inc. 10 | * All rights reserved. 11 | */ 12 | 13 | /* from OpenSolaris "casncmp.c 1.9 05/06/08 SMI" */ 14 | 15 | /* 16 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 17 | * 18 | * Sccsid @(#)casncmp.c 1.4 (gritter) 7/3/05 19 | */ 20 | /*LINTLIBRARY*/ 21 | 22 | /* 23 | * NAME 24 | * casncmp - compare strings ignoring case 25 | * 26 | * SYNOPSIS 27 | * int casncmp(char *s1, char *s2, ssize_t n) 28 | * 29 | * DESCRIPTION 30 | * Compare two strings ignoring case differences. 31 | * Stop after n bytes or the trailing NUL. 32 | */ 33 | 34 | #include "libmail.h" 35 | #include 36 | #include "asciitype.h" 37 | 38 | int 39 | casncmp(char *s1, char *s2, ssize_t n) 40 | { 41 | if (s1 == s2) 42 | return (0); 43 | while ((--n >= 0) && (lowerconv(*s1&0377) == lowerconv(*s2&0377))) { 44 | s2++; 45 | if (*s1++ == '\0') 46 | return (0); 47 | } 48 | return ((n < 0)? 0: (*s1 - *s2)); 49 | } 50 | -------------------------------------------------------------------------------- /mail/clr_hinfo.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "clr_hinfo.c 1.7 05/06/08 SMI" */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)clr_hinfo.c 1.3 (gritter) 6/18/05 14 | */ 15 | /* SVr4.0 2. */ 16 | /* 17 | NAME 18 | clr_hinfo, clrhdr - clean out mail header information 19 | 20 | SYNOPSIS 21 | void clr_hinfo() 22 | void clrhdr(int hdrtype) 23 | 24 | DESCRIPTION 25 | Clr_hinfo() cleans out hdrlines[] and other associated data 26 | in preparation for the next message. 27 | 28 | Clrhdr() does a single hdrlines[]. 29 | */ 30 | 31 | #include "mail.h" 32 | 33 | void 34 | clr_hinfo(void) 35 | { 36 | int i; 37 | static int firsttime = 1; 38 | static char pn[] = "clr_hinfo"; 39 | 40 | Dout(pn, 0, "\n"); 41 | if (firsttime) { 42 | firsttime = 0; 43 | return; 44 | } 45 | fnuhdrtype = 0; 46 | orig_aff = orig_rcv = 0; 47 | for (i = 0; i < H_CONT; i++) { 48 | clrhdr(i); 49 | } 50 | return; 51 | } 52 | 53 | void 54 | clrhdr(int hdrtype) 55 | { 56 | while (hdrlines[hdrtype].head != (struct hdrs *)NULL) { 57 | poplist (hdrtype, HEAD); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /mail/del_recipl.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "del_recipl.c 1.6 05/06/08 SMI" */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)del_recipl.c 1.3 (gritter) 6/18/05 14 | */ 15 | /* SVr4.0 1. */ 16 | #include "mail.h" 17 | 18 | /* 19 | NAME 20 | del_reciplist - delete a recipient list 21 | 22 | SYNOPSIS 23 | del_reciplist (reciplist *list) 24 | 25 | DESCRIPTION 26 | Free the space used by a recipient list. 27 | */ 28 | 29 | void 30 | del_reciplist(reciplist *plist) 31 | { 32 | static char pn[] = "del_reciplist"; 33 | recip *r = &plist->recip_list; 34 | Dout(pn, 0, "entered\n"); 35 | if (r->next != (struct recip *)NULL) { 36 | for (r = r->next; r != (struct recip *)NULL; ) { 37 | recip *old = r; 38 | r = old->next; 39 | free(old->name); 40 | free((char*)old); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /mail/delete.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "delete.c 1.6 05/06/08 SMI" SVr4.0 2. */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)delete.c 1.4 (gritter) 6/18/05 14 | */ 15 | #include "mail.h" 16 | /* 17 | signal catching routine --- reset signals on quits and interupts 18 | exit on other signals 19 | i -> signal # 20 | */ 21 | void 22 | delete(int i) 23 | { 24 | static char pn[] = "delete"; 25 | 26 | if (i > SIGQUIT) { 27 | fprintf(stderr, "%s: ERROR signal %d\n",program,i); 28 | Dout(pn, 0, "caught signal %d\n", i); 29 | } else { 30 | fprintf(stderr, "\n"); 31 | } 32 | 33 | if (delflg && (i==SIGINT || i==SIGQUIT)) { 34 | longjmp(sjbuf, i); 35 | } 36 | done(0); 37 | } 38 | -------------------------------------------------------------------------------- /mail/doopen.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "doopen.c 1.8 05/06/08 SMI" SVr4.0 2. */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)doopen.c 1.5 (gritter) 5/14/06 14 | */ 15 | #include "mail.h" 16 | /* 17 | Generic open routine. 18 | Exits on error with passed error value. 19 | Returns file pointer on success. 20 | 21 | Note: This should be used only for critical files 22 | as it will terminate mail(1) on failure. 23 | */ 24 | FILE * 25 | doopen(char *file, char *type, int errnum) 26 | { 27 | static char pn[] = "doopen"; 28 | FILE *fptr = NULL; 29 | struct stat st; 30 | 31 | if ((stat(file, &st) < 0 32 | #ifdef EOVERFLOW 33 | && errno == EOVERFLOW 34 | #endif 35 | ) || 36 | (fptr = fopen(file, type)) == NULL) { 37 | fprintf(stderr, 38 | "%s: Can't open '%s' type: %s\n",program,file,type); 39 | error = errnum; 40 | sav_errno = errno; 41 | Dout(pn, 0, "can't open '%s' type: %s\n",program,file,type); 42 | Dout(pn, 0, "error set to %d\n", error); 43 | done(0); 44 | } 45 | return(fptr); 46 | } 47 | -------------------------------------------------------------------------------- /mail/errmsg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "errmsg.c 1.6 05/06/08 SMI" SVr4.0 2. */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)errmsg.c 1.3 (gritter) 6/18/05 14 | */ 15 | #include "mail.h" 16 | /* 17 | NAME 18 | errmsg - print error message 19 | 20 | SYNOPSIS 21 | void errmsg(int error_value, char *error_message) 22 | 23 | DESCRIPTION 24 | Errmsg() prints error messages. If error_message is supplied, 25 | that is taken as the text for the message, otherwise the 26 | text for the err_val message is gotten from the errlist[] array. 27 | */ 28 | void 29 | errmsg(int err_val, char *err_txt) 30 | { 31 | static char pn[] = "errmsg"; 32 | error = err_val; 33 | if (err_txt && *err_txt) { 34 | fprintf(stderr,"%s: %s\n",program,err_txt); 35 | Dout(pn, 0, "%s\n",err_txt); 36 | } else { 37 | fprintf(stderr,"%s: %s\n",program,errlist[err_val]); 38 | Dout(pn, 0,"%s\n",errlist[err_val]); 39 | } 40 | Dout(pn, 0,"error set to %d\n", error); 41 | } 42 | -------------------------------------------------------------------------------- /mail/getarg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "getarg.c 1.6 05/06/08 SMI" SVr4.0 2. */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)getarg.c 1.3 (gritter) 6/18/05 14 | */ 15 | #include "mail.h" 16 | /* 17 | get next token 18 | p -> string to be searched 19 | s -> area to return token 20 | returns: 21 | p -> updated string pointer 22 | s -> token 23 | NULL -> no token 24 | */ 25 | char * 26 | getarg(char *s, char *p) 27 | { 28 | while (*p == ' ' || *p == '\t') p++; 29 | if (*p == '\n' || *p == '\0') return(NULL); 30 | while (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\0') *s++ = *p++; 31 | *s = '\0'; 32 | return(p); 33 | } 34 | -------------------------------------------------------------------------------- /mail/islocal.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | /* from OpenSolaris "islocal.c 1.6 05/06/08 SMI" */ 8 | 9 | /* 10 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 11 | * 12 | * Sccsid @(#)islocal.c 1.4 (gritter) 6/22/05 13 | */ 14 | 15 | #include 16 | #include "mail.h" 17 | 18 | /* 19 | * islocal (char *user, uid_t *puid) - see if user exists on this system 20 | */ 21 | int 22 | islocal(char *user, uid_t *puid) 23 | { 24 | char fname[MAXPATHLEN]; 25 | struct stat statb; 26 | struct passwd *pwd_ptr; 27 | 28 | /* Check for existing mailfile first */ 29 | snprintf(fname, sizeof (fname), "%s%s", maildir, user); 30 | if (stat(fname, &statb) == 0) { 31 | *puid = statb.st_uid; 32 | return (TRUE); 33 | } 34 | 35 | /* If no existing mailfile, check passwd file */ 36 | setpwent(); 37 | if ((pwd_ptr = getpwnam(user)) == NULL) { 38 | return (FALSE); 39 | } 40 | *puid = pwd_ptr->pw_uid; 41 | return (TRUE); 42 | } 43 | -------------------------------------------------------------------------------- /mail/new_recipl.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "new_recipl.c 1.6 05/06/08 SMI" */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)new_recipl.c 1.3 (gritter) 6/18/05 14 | */ 15 | /* SVr4.0 1. */ 16 | #include "mail.h" 17 | 18 | 19 | /* 20 | NAME 21 | new_reciplist - initialize a recipient list 22 | 23 | SYNOPSIS 24 | new_reciplist (reciplist *list) 25 | 26 | DESCRIPTION 27 | Initialize a recipient list to have no recipients. 28 | */ 29 | 30 | void 31 | new_reciplist(reciplist *plist) 32 | { 33 | static char pn[] = "new_reciplist"; 34 | Dout(pn, 0, "entered\n"); 35 | plist->recip_list.next = 0; 36 | plist->recip_list.name = 0; 37 | plist->last_recip = &plist->recip_list; 38 | } 39 | -------------------------------------------------------------------------------- /mail/setsig.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "setsig.c 1.6 05/06/08 SMI" SVr4.0 2. */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)setsig.c 1.5 (gritter) 6/18/05 14 | */ 15 | #include "mail.h" 16 | /* 17 | Signal reset 18 | signals that are not being ignored will be 19 | caught by function f 20 | i -> signal number 21 | f -> signal routine 22 | return 23 | rc -> former signal 24 | */ 25 | void (* 26 | setsig(int i, void (*f)(int)))(int) 27 | { 28 | void (*rc)(int); 29 | 30 | if ((rc = sigset(i, SIG_IGN)) != SIG_IGN) 31 | sigset(i, f); 32 | return(rc); 33 | } 34 | -------------------------------------------------------------------------------- /mail/skipspace.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* 9 | * Copyright (c) 1999, by Sun Microsystems, Inc. 10 | * All rights reserved. 11 | */ 12 | 13 | /* from OpenSolaris "skipspace.c 1.9 05/06/08 SMI" SVr4.0 1.5 */ 14 | 15 | /* 16 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 17 | * 18 | * Sccsid @(#)skipspace.c 1.4 (gritter) 7/3/05 19 | */ 20 | /*LINTLIBRARY*/ 21 | 22 | #include 23 | #include "libmail.h" 24 | #include "asciitype.h" 25 | 26 | /* 27 | * Return pointer to first non-blank character in p 28 | */ 29 | char * 30 | skipspace(char *p) 31 | { 32 | while (*p && spacechar(*p&0377)) { 33 | p++; 34 | } 35 | return (p); 36 | } 37 | -------------------------------------------------------------------------------- /mail/stamp.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "stamp.c 1.7 05/06/08 SMI" SVr4.0 1.5 */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)stamp.c 1.3 (gritter) 6/18/05 14 | */ 15 | 16 | #include "mail.h" 17 | /* 18 | If the mailfile still exists (it may have been deleted), 19 | time-stamp it; so that our re-writing of mail back to the 20 | mailfile does not make shell think that NEW mail has arrived 21 | (by having the file times change). 22 | */ 23 | void 24 | stamp(void) 25 | { 26 | if ((access(mailfile, A_EXIST) == A_OK) && (utimep->modtime != -1)) 27 | if (utime(mailfile, utimep) != A_OK) 28 | errmsg(E_FILE,"Cannot time-stamp mailfile"); 29 | } 30 | -------------------------------------------------------------------------------- /mail/strmove.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* 9 | * Copyright (c) 1999, by Sun Microsystems, Inc. 10 | * All rights reserved. 11 | */ 12 | 13 | /* from OpenSolaris "strmove.c 1.8 05/06/08 SMI" */ 14 | 15 | /* 16 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 17 | * 18 | * Sccsid @(#)strmove.c 1.3 (gritter) 6/18/05 19 | */ 20 | /*LINTLIBRARY*/ 21 | 22 | #include 23 | #include "libmail.h" 24 | 25 | /* 26 | * NAME 27 | * strmove - copy a string, permitting overlaps 28 | * 29 | * SYNOPSIS 30 | * void strmove(char *to, char *from) 31 | * 32 | * DESCRIPTION 33 | * strmove() acts exactly like strcpy() with the additional 34 | * guarantee that it will work with overlapping strings. 35 | * It does it left-to-right, a byte at a time. 36 | */ 37 | 38 | void 39 | strmove(char *to, char *from) 40 | { 41 | while ((*to++ = *from++) != 0) 42 | ; 43 | } 44 | -------------------------------------------------------------------------------- /mail/substr.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* 9 | * Copyright (c) 1999, by Sun Microsystems, Inc. 10 | * All rights reserved. 11 | */ 12 | 13 | /* from OpenSolaris "substr.c 1.9 05/06/08 SMI" */ 14 | 15 | /* 16 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 17 | * 18 | * Sccsid @(#)substr.c 1.3 (gritter) 6/18/05 19 | */ 20 | /*LINTLIBRARY*/ 21 | 22 | #include 23 | #include "libmail.h" 24 | 25 | /* 26 | * This routine looks for string2 in string1. 27 | * If found, it returns the position string2 is found at, 28 | * otherwise it returns a -1. 29 | */ 30 | int 31 | substr(char *string1, char *string2) 32 | { 33 | int i, j, len1, len2; 34 | 35 | /* the size of the substring will always fit into an int */ 36 | /*LINTED*/ 37 | len1 = (int)strlen(string1); 38 | /*LINTED*/ 39 | len2 = (int)strlen(string2); 40 | for (i = 0; i < len1 - len2 + 1; i++) { 41 | for (j = 0; j < len2 && string1[i+j] == string2[j]; j++); 42 | if (j == len2) 43 | return (i); 44 | } 45 | return (-1); 46 | } 47 | -------------------------------------------------------------------------------- /mail/trimnl.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* 9 | * Copyright (c) 1999, by Sun Microsystems, Inc. 10 | * All rights reserved. 11 | */ 12 | 13 | /* from OpenSolaris "trimnl.c 1.6 05/06/08 SMI" SVr4.0 1.3 */ 14 | 15 | /* 16 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 17 | * 18 | * Sccsid @(#)trimnl.c 1.3 (gritter) 6/18/05 19 | */ 20 | /*LINTLIBRARY*/ 21 | 22 | #include 23 | #include "libmail.h" 24 | #include 25 | 26 | /* 27 | * Trim trailing newlines from string. 28 | */ 29 | void 30 | trimnl(char *s) 31 | { 32 | char *p; 33 | 34 | p = s + strlen(s) - 1; 35 | while ((*p == '\n') && (p >= s)) { 36 | *p-- = '\0'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /man/apropos.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)apropos.1 1.3 (gritter) 1/11/03 3 | .TH APROPOS 1 "1/11/03" "Heirloom Toolchest" "User Commands" 4 | .SH NAME 5 | apropos \- locate commands by keyword lookup 6 | .SH SYNOPSIS 7 | .B apropos 8 | .I keyword \ ... 9 | .SH DESCRIPTION 10 | The 11 | .B apropos 12 | command searches the manual index database 13 | for one-line summaries matching any of the given 14 | .IR keywords . 15 | This is the same as the 16 | .B man 17 | command with the 18 | .B \-k 19 | option. 20 | .SH "SEE ALSO" 21 | man(1) 22 | -------------------------------------------------------------------------------- /man/man.dfl.in: -------------------------------------------------------------------------------- 1 | # Sccsid @(#)man.dfl.in 1.21 (gritter) 8/9/05 2 | 3 | # Manual search path. Default is /usr/local/share/man:/usr/share/man 4 | MANPATH=@MANDIR@:/usr/node/share/man:/usr/local/share/man:/usr/ccs/share/man:/usr/old/share/man:/usr/contrib/share/man:/usr/share/man:/usr/share/man/en:/usr/X11R6/man 5 | 6 | # Command for nroff. Default is nroff -Tlp 7 | NROFF=GROFF_NO_SGR= GROFF_TMAC_PATH=@DEFLIB@/tmac${GROFF_TMAC_PATH+:$GROFF_TMAC_PATH} TROFFMACS=@DEFLIB@/tmac/tmac. nroff -Tlp 8 | 9 | # Command for troff (-t option). Default is troff 10 | TROFF=GROFF_TMAC_PATH=@DEFLIB@/tmac${GROFF_TMAC_PATH+:$GROFF_TMAC_PATH} TROFFMACS=@DEFLIB@/tmac/tmac. groff 11 | 12 | # Command for col. Default is col -x 13 | COL=col -x 14 | 15 | # Postprocessor for troff with the -t option. Default is nothing. 16 | #DPOST=dpost 17 | 18 | # Command for pager. Default is pg 19 | PAGER=pg 20 | 21 | # Command for eqn. Default is eqn 22 | EQN=eqn 23 | 24 | # Command for neqn. Default is neqn 25 | NEQN=neqn 26 | 27 | # Command for tbl. Default is tbl 28 | TBL=tbl 29 | 30 | # Macro set. Default is -man 31 | MACSET=-mandoc 32 | -------------------------------------------------------------------------------- /man/whatis.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)whatis.1 1.3 (gritter) 1/11/03 3 | .TH WHATIS 1 "1/11/03" "Heirloom Toolchest" "User Commands" 4 | .SH NAME 5 | whatis \- display a one-line summary about a keyword 6 | .SH SYNOPSIS 7 | .B whatis 8 | .I command \ ... 9 | .SH DESCRIPTION 10 | The 11 | .B whatis 12 | utility searches the manual index database for one-line summaries 13 | about any of the given 14 | .IR commands . 15 | It is the same as the 16 | .B man 17 | command with the 18 | .B \-f 19 | option. 20 | .SH "SEE ALSO" 21 | man(1) 22 | -------------------------------------------------------------------------------- /mesg/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: mesg 2 | 3 | mesg: mesg.o 4 | $(LD) $(LDFLAGS) mesg.o $(LCOMMON) $(LWCHAR) $(LIBS) -o mesg 5 | 6 | mesg.o: mesg.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c mesg.c 8 | 9 | install: all 10 | $(UCBINST) -c mesg $(ROOT)$(DEFBIN)/mesg 11 | $(STRIP) $(ROOT)$(DEFBIN)/mesg 12 | $(MANINST) -c -m 644 mesg.1 $(ROOT)$(MANDIR)/man1/mesg.1 13 | 14 | clean: 15 | rm -f mesg mesg.o core log *~ 16 | -------------------------------------------------------------------------------- /mesg/mesg.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)mesg.1 1.2 (gritter) 7/17/05 3 | .\" Parts taken from mesg(1), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH MESG 1 "7/17/05" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | mesg \- permit or deny messages 11 | .SH SYNOPSIS 12 | \fBmesg\fR [[\fB\-\fR](\fBy\fR|\fBn\fR)] 13 | .SH DESCRIPTION 14 | .I Mesg 15 | with argument 16 | .B n 17 | forbids messages via 18 | .IR write (1) 19 | by revoking non-user 20 | write permission on the user's terminal. 21 | .I Mesg 22 | with argument 23 | .B y 24 | reinstates permission. 25 | All by itself, 26 | .I mesg 27 | reports the current state without changing it. 28 | .SH FILES 29 | /dev/tty* 30 | .br 31 | /dev 32 | .SH "SEE ALSO" 33 | write(1) 34 | .SH DIAGNOSTICS 35 | Exit status is 0 if messages are receivable, 36 | 1 if not, 2 on error. 37 | -------------------------------------------------------------------------------- /mkdir/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: mkdir mkdir_sus 2 | 3 | mkdir: mkdir.o 4 | $(LD) $(LDFLAGS) mkdir.o $(LCOMMON) $(LIBS) -o mkdir 5 | 6 | mkdir.o: mkdir.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c mkdir.c 8 | 9 | mkdir_sus: mkdir_sus.o 10 | $(LD) $(LDFLAGS) mkdir_sus.o $(LCOMMON) $(LIBS) -o mkdir_sus 11 | 12 | mkdir_sus.o: mkdir.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -DSUS -c mkdir.c -o mkdir_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c mkdir $(ROOT)$(SV3BIN)/mkdir 17 | $(STRIP) $(ROOT)$(SV3BIN)/mkdir 18 | $(UCBINST) -c mkdir_sus $(ROOT)$(SUSBIN)/mkdir 19 | $(STRIP) $(ROOT)$(SUSBIN)/mkdir 20 | $(MANINST) -c -m 644 mkdir.1 $(ROOT)$(MANDIR)/man1/mkdir.1 21 | 22 | clean: 23 | rm -f mkdir mkdir.o mkdir_sus mkdir_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /mkfifo/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: mkfifo 2 | 3 | mkfifo: mkfifo.o 4 | $(LD) $(LDFLAGS) mkfifo.o $(LCOMMON) $(LIBS) -o mkfifo 5 | 6 | mkfifo.o: mkfifo.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) -c mkfifo.c 8 | 9 | install: all 10 | $(UCBINST) -c mkfifo $(ROOT)$(DEFBIN)/mkfifo 11 | $(STRIP) $(ROOT)$(DEFBIN)/mkfifo 12 | $(MANINST) -c -m 644 mkfifo.1 $(ROOT)$(MANDIR)/man1/mkfifo.1 13 | 14 | clean: 15 | rm -f mkfifo mkfifo.o core log *~ 16 | -------------------------------------------------------------------------------- /mkfifo/mkfifo.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)mkfifo.1 1.1 (gritter) 8/15/03 3 | .TH MKFIFO 1 "8/15/03" "Heirloom Toolchest" "User Commands" 4 | .SH NAME 5 | mkfifo \- make FIFO special file 6 | .SH SYNOPSIS 7 | \fBmkfifo\fR [\fB\-m\fI\ mode\fR] \fIpath\fR ... 8 | .SH DESCRIPTION 9 | .B Mkfifo 10 | creates FIFO special files on the given 11 | .I path 12 | names. 13 | The default mode is 666, 14 | and is affected by the file creation mask (see 15 | .IR umask (2)). 16 | .PP 17 | The following options are accepted: 18 | .TP 19 | \fB\-m\fR \fImode\fP 20 | Uses the given 21 | .I mode 22 | to create the directory, 23 | ignoring the file creation mask. 24 | .I Mode 25 | can be given in octal or in symbolic form, 26 | as described in 27 | .IR chmod (1). 28 | .SH "SEE ALSO" 29 | mknod(1), 30 | mkfifo(2) 31 | -------------------------------------------------------------------------------- /mknod/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: mknod 2 | 3 | mknod: mknod.o 4 | $(LD) $(LDFLAGS) mknod.o $(LCOMMON) $(LIBS) -o mknod 5 | 6 | mknod.o: mknod.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) -c mknod.c 8 | 9 | install: all 10 | $(UCBINST) -c mknod $(ROOT)$(DEFBIN)/mknod 11 | $(STRIP) $(ROOT)$(DEFBIN)/mknod 12 | $(MANINST) -c -m 644 mknod.1m $(ROOT)$(MANDIR)/man1m/mknod.1m 13 | 14 | clean: 15 | rm -f mknod mknod.o core log *~ 16 | -------------------------------------------------------------------------------- /mknod/mknod.1m: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)mknod.1m 1.2 (gritter) 8/15/03 3 | .\" Parts taken from mknod(1M), Unix 32V: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH MKNOD 1M "8/15/03" "Heirloom Toolchest" "Maintenance Commands" 9 | .SH NAME 10 | mknod \- build special file 11 | .SH SYNOPSIS 12 | .B mknod 13 | .I name 14 | .B b 15 | | 16 | .B c 17 | .I major 18 | .I minor 19 | .br 20 | .B mknod 21 | .I name 22 | .B p 23 | .SH DESCRIPTION 24 | .I Mknod 25 | makes a special file. 26 | The first argument is the 27 | .I name 28 | of the entry. 29 | The second is 30 | .B b 31 | if the special file is block-type (disks, tape) or 32 | .B c 33 | if it is character-type (other devices). 34 | The last two arguments are 35 | numbers specifying the 36 | .I major 37 | device type 38 | and the 39 | .I minor 40 | device (e.g. unit, drive, or line number). 41 | .PP 42 | If the second argument is 43 | .BR p , 44 | .I mknod 45 | creates a FIFO special file. 46 | .SH "SEE ALSO" 47 | mknod(2) 48 | -------------------------------------------------------------------------------- /more/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: more 2 | 3 | more: more.o 4 | $(LD) $(LDFLAGS) more.o $(LCURS) $(LCOMMON) $(LUXRE) $(LWCHAR) $(LIBS) -o more 5 | 6 | more.o: more.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) $(IUXRE) -c more.c 8 | 9 | install: all 10 | $(UCBINST) -c more $(ROOT)$(SV3BIN)/more 11 | $(STRIP) $(ROOT)$(SV3BIN)/more 12 | rm -f $(ROOT)$(SV3BIN)/page 13 | $(LNS) more $(ROOT)$(SV3BIN)/page 14 | $(MANINST) -c -m 644 more.1 $(ROOT)$(MANDIR)/man1/more.1 15 | rm -f $(ROOT)$(MANDIR)/man1/page.1 16 | $(LNS) more.1 $(ROOT)$(MANDIR)/man1/page.1 17 | 18 | clean: 19 | rm -f more more.o core log *~ 20 | -------------------------------------------------------------------------------- /more/NOTES: -------------------------------------------------------------------------------- 1 | Notes for the more utility 2 | ========================== 3 | 4 | The more utility provided here is essentially the 4.3BSD version with 5 | added support for System V more features, multibyte locales, lines of 6 | arbitrary length and backspace sequence filtering for searches. There 7 | is no POSIX.2 version provided here; POSIX.2 decided to standardize a 8 | derivative of the less utility and call it more. Since less is not 9 | part of any traditional System V Unix system, it is somewhat beyond 10 | the scope of this collection; moreover, since less is a maintained 11 | open source project, it seems not really necessary to provide a 12 | stripped-down derivative here. 13 | 14 | Thus if you need a POSIX.2 variant of more, you should use less. But 15 | if you desperately want to have the 4.4BSD more/less utility in the 16 | Heirloom Toolchest, you're invited to contribute your own port of it. 17 | 18 | Gunnar Ritter 10/25/03 19 | -------------------------------------------------------------------------------- /mvdir/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: mvdir 2 | 3 | mvdir: mvdir.sh 4 | echo '#!$(SHELL)' | cat - mvdir.sh | sed ' s,@DEFBIN@,$(DEFBIN),g; s,@SV3BIN@,$(SV3BIN),g; s,@DEFLIB@,$(DEFLIB),g' >mvdir 5 | chmod 755 mvdir 6 | 7 | install: all 8 | $(UCBINST) -c mvdir $(ROOT)$(DEFBIN)/mvdir 9 | $(MANINST) -c -m 644 mvdir.1 $(ROOT)$(MANDIR)/man1/mvdir.1 10 | 11 | clean: 12 | rm -f mvdir core log *~ 13 | -------------------------------------------------------------------------------- /mvdir/mvdir.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" SPDX-Licence-Identifier: CDDL-1.0 3 | .\" 4 | .\" Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany. 5 | .\" 6 | .\" Sccsid @(#)mvdir.1 1.1 (gritter) 6/25/05 7 | .TH MVDIR 1 "6/25/05" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | mvdir \- move a directory 10 | .SH SYNOPSIS 11 | \fBmvdir\fI source target\fR 12 | .SH DESCRIPTION 13 | The 14 | .I mvdir 15 | command moves the directory 16 | .I source 17 | to the directory 18 | .IR target . 19 | If 20 | .I target 21 | refers to an existing directory, 22 | .I source 23 | is moved into 24 | .IR target , 25 | i.\|e. if 26 | .I source 27 | is `/path/to/last-component', it is moved to `\fItarget\fR/last-component'. 28 | Otherwise, 29 | .I target 30 | must not previously exist. 31 | .I source 32 | is not allowed to be a sub-directory of 33 | .I target 34 | and vice-versa. 35 | .SH "SEE ALSO" 36 | mv(1) 37 | -------------------------------------------------------------------------------- /nawk/NOTES: -------------------------------------------------------------------------------- 1 | Notes for the 'nawk' utility 2 | ============================ 3 | 4 | Changes since the version published by Caldera in OS Utilities 0.1a 5 | () include: 6 | 7 | - The lex part of the code can be built with both Unix lex and flex. 8 | - Support for multibyte characters. 9 | - Proper support for LC_TIME (locale-specifix radix character recognized 10 | in input data, but not in scripts). 11 | - No line length limitations on input and output data. 12 | - No limit on the number of fields per record. 13 | 14 | 4.4BSD old awk and Brian W. Kernighan's 'One True awk' (available at 15 | ) have been used as 16 | reference for some of the changes; in addition, the manual page 17 | enclosed here has been derived from 'One True awk' since Caldera 18 | did not enclose one. 19 | 20 | Gunnar Ritter 7/30/05 21 | -------------------------------------------------------------------------------- /nawk/rerule.sed: -------------------------------------------------------------------------------- 1 | # 2 | # Sccsid @(#)rerule.sed 1.1 (gritter) 2/6/05 3 | # 4 | # Change the awk grammar for POSIX.1-2001 such that expressions like 5 | # "print /x/ / 2" work. 6 | # 7 | /^[ ]*| re[ ]*$/d 8 | 9 | /^term:/ { 10 | :loop 11 | /^[ ]*;[ ]*$/ { 12 | c\ 13 | | re\ 14 | ; 15 | b 16 | } 17 | n 18 | b loop 19 | } 20 | -------------------------------------------------------------------------------- /nawk/version.c: -------------------------------------------------------------------------------- 1 | #include "awk.h" 2 | #if defined (SU3) 3 | const char version[] = "@(#)awk_su3.sl 1.51 (gritter) 12/25/06"; 4 | int posix = 1; 5 | #elif defined (SUS) 6 | const char version[] = "@(#)awk_sus.sl 1.51 (gritter) 12/25/06"; 7 | int posix = 1; 8 | #else 9 | const char version[] = "@(#)nawk.sl 1.51 (gritter) 12/25/06"; 10 | int posix = 0; 11 | #endif 12 | /* SLIST */ 13 | /* 14 | awk.g.y: Sccsid @(#)awk.g.y 1.9 (gritter) 5/14/06> 15 | awk.h: Sccsid @(#)awk.h 1.23 (gritter) 12/25/04> 16 | awk.lx.l: Sccsid @(#)awk.lx.l 1.13 (gritter) 11/22/05> 17 | b.c: Sccsid @(#)b.c 1.6 (gritter) 5/15/04> 18 | lib.c: Sccsid @(#)lib.c 1.27 (gritter) 12/25/06> 19 | main.c: Sccsid @(#)main.c 1.14 (gritter) 12/19/04> 20 | maketab.c: Sccsid @(#)maketab.c 1.11 (gritter) 12/4/04> 21 | parse.c: Sccsid @(#)parse.c 1.7 (gritter) 12/4/04> 22 | run.c: Sccsid @(#)run.c 1.33 (gritter) 12/25/06> 23 | tran.c: Sccsid @(#)tran.c 1.16 (gritter) 2/4/05> 24 | rerule.sed:# Sccsid @(#)rerule.sed 1.1 (gritter) 2/6/05 25 | */ 26 | -------------------------------------------------------------------------------- /news/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: news 2 | 3 | news: news.o 4 | $(LD) $(LDFLAGS) news.o $(LCOMMON) $(LWCHAR) $(LIBS) -o news 5 | 6 | news.o: news.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -c news.c 8 | 9 | install: all 10 | $(UCBINST) -c news $(ROOT)$(DEFBIN)/news 11 | $(STRIP) $(ROOT)$(DEFBIN)/news 12 | $(MANINST) -c -m 644 news.1 $(ROOT)$(MANDIR)/man1/news.1 13 | 14 | clean: 15 | rm -f news news.o core log *~ 16 | -------------------------------------------------------------------------------- /nice/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: nice 2 | 3 | nice: nice.o 4 | $(LD) $(LDFLAGS) nice.o $(LCOMMON) $(LIBS) -o nice 5 | 6 | nice.o: nice.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c nice.c 8 | 9 | install: all 10 | $(UCBINST) -c nice $(ROOT)$(DEFBIN)/nice 11 | $(STRIP) $(ROOT)$(DEFBIN)/nice 12 | $(MANINST) -c -m 644 nice.1 $(ROOT)$(MANDIR)/man1/nice.1 13 | 14 | clean: 15 | rm -f nice nice.o core log *~ 16 | -------------------------------------------------------------------------------- /nice/nice.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)nice.1 1.7 (gritter) 12/6/04 3 | .\" Parts taken from nice(1), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH NICE 1 "12/6/04" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | nice \- run a command at low priority 11 | .SH SYNOPSIS 12 | \fBnice\fR [\fB\-n\fI number\fR] \fIutility\fR [\fIargument\fR ...] 13 | .sp 14 | \fBnice\fR [\fB\-\fInumber\fR] \fIutility\fR [\fIargument\fR ...] 15 | .SH DESCRIPTION 16 | The 17 | .B nice 18 | command 19 | executes 20 | .I utility 21 | with low scheduling priority. 22 | If the 23 | .I number 24 | argument 25 | is present, 26 | the priority is incremented 27 | (higher numbers mean lower priority) 28 | by that amount up to a limit of 19. 29 | The default number is 10. 30 | .PP 31 | An user with appropriate privileges 32 | may run commands with priority higher than normal 33 | by using a negative priority, 34 | e.\ g. `\fI\-\-10\fR'. 35 | .PP 36 | The \fI\-n\ number\fR syntax was introduced by POSIX.2. 37 | .SH "ENVIRONMENT VARIABLES" 38 | .TP 39 | .B PATH 40 | Used to locate 41 | .IR utility . 42 | .SH "SEE ALSO" 43 | priocntl(1), 44 | sh(1), 45 | nice(2), 46 | execvp(3) 47 | -------------------------------------------------------------------------------- /nohup/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: nohup nohup_sus 2 | 3 | nohup: nohup.o 4 | $(LD) $(LDFLAGS) nohup.o $(LCOMMON) $(LIBS) -o nohup 5 | 6 | nohup.o: nohup.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c nohup.c 8 | 9 | nohup_sus: nohup_sus.o 10 | $(LD) $(LDFLAGS) nohup_sus.o $(LCOMMON) $(LIBS) -o nohup_sus 11 | 12 | nohup_sus.o: nohup.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -DSUS -c nohup.c -o nohup_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c nohup $(ROOT)$(SV3BIN)/nohup 17 | $(STRIP) $(ROOT)$(SV3BIN)/nohup 18 | $(UCBINST) -c nohup_sus $(ROOT)$(SUSBIN)/nohup 19 | $(STRIP) $(ROOT)$(SUSBIN)/nohup 20 | $(MANINST) -c -m 644 nohup.1 $(ROOT)$(MANDIR)/man1/nohup.1 21 | 22 | clean: 23 | rm -f nohup nohup.o nohup_sus nohup_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /oawk/NOTES: -------------------------------------------------------------------------------- 1 | Notes for the 'oawk' utility 2 | ============================ 3 | 4 | Based on 4.4BSD old awk, the following changes were made: 5 | 6 | - Support for LC_CTYPE (especially multibyte characters). 7 | - Support for LC_COLLATE (when comparing string variables). 8 | - Support for LC_TIME (radix character). 9 | - No limit on the length of input and output lines anymore. 10 | - No limit on the maximum number of fields per record. 11 | - Both Unix lex and flex can be used for compilation. 12 | 13 | Since no Open Source lex implementation was able to process multibyte 14 | characters at the time the port was done, it was not possible to retain 15 | the regular expression lexer. Regular expressions are thus handled by 16 | the 'Unix Regular Expression Library', which was modified to handle the 17 | traditional awk expression as well. Please contact me if you still find 18 | differences. 19 | 20 | Gunnar Ritter 7/30/05 21 | -------------------------------------------------------------------------------- /oawk/version.c: -------------------------------------------------------------------------------- 1 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 2 | #define USED __attribute__ ((used)) 3 | #elif defined __GNUC__ 4 | #define USED __attribute__ ((unused)) 5 | #else 6 | #define USED 7 | #endif 8 | static const char sccsid[] USED = "@(#)oawk.sl 2.31 (gritter) 12/25/06"; 9 | /* SLIST */ 10 | /* 11 | awk.def: * Sccsid @(#)awk.def 1.19 (gritter) 12/25/06 12 | awk.g.y: Sccsid @(#)awk.g.y 1.5 (gritter) 7/24/03> 13 | awk.lx.l: Sccsid @(#)awk.lx.l 1.13 (gritter) 6/18/05> 14 | b.c: Sccsid @(#)b.c 1.10 (gritter) 3/31/03> 15 | freeze.c: Sccsid @(#)freeze.c 1.3 (gritter) 3/31/03> 16 | lib.c: Sccsid @(#)lib.c 1.16 (gritter) 7/16/04> 17 | main.c: Sccsid @(#)main.c 1.11 (gritter) 12/12/04> 18 | parse.c: Sccsid @(#)parse.c 1.5 (gritter) 4/21/04> 19 | proc.c: Sccsid @(#)proc.c 1.8 (gritter) 12/25/06> 20 | run.c: Sccsid @(#)run.c 1.20 (gritter) 12/25/06> 21 | tran.c: Sccsid @(#)tran.c 1.7 (gritter) 3/31/03> 22 | */ 23 | -------------------------------------------------------------------------------- /od/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: od od_sus 2 | 3 | od: od.o 4 | $(LD) $(LDFLAGS) od.o $(LCOMMON) $(LWCHAR) $(LIBS) -o od 5 | 6 | od.o: od.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c od.c 8 | 9 | od_sus: od_sus.o 10 | $(LD) $(LDFLAGS) od_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o od_sus 11 | 12 | od_sus.o: od.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DSUS -c od.c -o od_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c od $(ROOT)$(SV3BIN)/od 17 | $(STRIP) $(ROOT)$(SV3BIN)/od 18 | $(UCBINST) -c od $(ROOT)$(SUSBIN)/od 19 | $(STRIP) $(ROOT)$(SUSBIN)/od 20 | $(MANINST) -c -m 644 od.1 $(ROOT)$(MANDIR)/man1/od.1 21 | 22 | clean: 23 | rm -f od od.o od od_sus od_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /paste/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: paste 2 | 3 | paste: paste.o 4 | $(LD) $(LDFLAGS) paste.o $(LCOMMON) $(LWCHAR) $(LIBS) -o paste 5 | 6 | paste.o: paste.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(ICOMMON) $(IWCHAR) $(LARGEF) -c paste.c 8 | 9 | install: all 10 | $(UCBINST) -c paste $(ROOT)$(DEFBIN)/paste 11 | $(STRIP) $(ROOT)$(DEFBIN)/paste 12 | $(MANINST) -c -m 644 paste.1 $(ROOT)$(MANDIR)/man1/paste.1 13 | 14 | clean: 15 | rm -f paste paste.o core log *~ 16 | -------------------------------------------------------------------------------- /pathchk/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: pathchk 2 | 3 | pathchk: pathchk.o 4 | $(LD) $(LDFLAGS) pathchk.o $(LCOMMON) $(LWCHAR) $(LIBS) -o pathchk 5 | 6 | pathchk.o: pathchk.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c pathchk.c 8 | 9 | install: all 10 | $(UCBINST) -c pathchk $(ROOT)$(DEFBIN)/pathchk 11 | $(STRIP) $(ROOT)$(DEFBIN)/pathchk 12 | $(MANINST) -c -m 644 pathchk.1 $(ROOT)$(MANDIR)/man1/pathchk.1 13 | 14 | clean: 15 | rm -f pathchk pathchk.o core log *~ 16 | -------------------------------------------------------------------------------- /pathchk/pathchk.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2005 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .\" Sccsid @(#)pathchk.1 1.1 (gritter) 7/17/05 7 | .TH PATHCHK 1 "7/17/05" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | pathchk \- check pathnames 10 | .SH SYNOPSIS 11 | \fBpathchk\fR [\fB\-p\fR] \fIname\fR ... 12 | .SH DESCRIPTION 13 | The 14 | .I pathchk 15 | command verifies the validity or portability of path names. 16 | For each 17 | .I name 18 | given, it is checked 19 | that each of the intermediate directories is searchable 20 | or could be created, 21 | that none of its components is longer than NAME_MAX, 22 | and that the whole 23 | .I name 24 | is not longer than PATH_MAX. 25 | .PP 26 | With the 27 | .B \-p 28 | option, the checks are performed using 29 | _POSIX_NAME_MAX and _POSIX_PATH_MAX, 30 | and each character of a component of 31 | .I name 32 | must be in the portable character set 33 | (i.\|e. alphanumerics, dot `.', underscore `_', and minus sign `\-'). 34 | The check for local searchability is omitted. 35 | .PP 36 | If any violation of these rules is detected, 37 | .I pathchk 38 | prints an error message and exits with failure. 39 | -------------------------------------------------------------------------------- /pg/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: pg pg_sus pg_su3 2 | 3 | pg: pg.o 4 | $(LD) $(LDFLAGS) pg.o $(LCURS) $(LCOMMON) $(LWCHAR) $(LIBS) -o pg 5 | 6 | pg.o: pg.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c pg.c 8 | 9 | pg_sus: pg_sus.o 10 | $(LD) $(LDFLAGS) pg_sus.o $(LCURS) $(LCOMMON) $(LUXRE) $(LWCHAR) $(LIBS) -o pg_sus 11 | 12 | pg_sus.o: pg.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) $(IUXRE) -DSUS -c pg.c -o pg_sus.o 14 | 15 | pg_su3: pg_su3.o 16 | $(LD) $(LDFLAGS) pg_su3.o $(LCURS) $(LCOMMON) $(LUXRE) $(LWCHAR) $(LIBS) -o pg_su3 17 | 18 | pg_su3.o: pg.c 19 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) $(IUXRE) -DSU3 -c pg.c -o pg_su3.o 20 | 21 | install: all 22 | $(UCBINST) -c pg $(ROOT)$(SV3BIN)/pg 23 | $(STRIP) $(ROOT)$(SV3BIN)/pg 24 | $(UCBINST) -c pg_sus $(ROOT)$(SUSBIN)/pg 25 | $(STRIP) $(ROOT)$(SUSBIN)/pg 26 | $(UCBINST) -c pg_su3 $(ROOT)$(SU3BIN)/pg 27 | $(STRIP) $(ROOT)$(SU3BIN)/pg 28 | $(MANINST) -c -m 644 pg.1 $(ROOT)$(MANDIR)/man1/pg.1 29 | 30 | clean: 31 | rm -f pg pg.o pg_sus pg_sus.o pg_su3 pg_su3.o core log *~ 32 | -------------------------------------------------------------------------------- /pgrep/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: pgrep pkill 2 | 3 | pgrep: pgrep.o 4 | $(LD) $(LDFLAGS) pgrep.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LKVM) $(LIBS) -o pgrep 5 | 6 | pgrep.o: pgrep.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(IUXRE) $(IWCHAR) $(ICOMMON) -c pgrep.c 8 | 9 | pkill: pgrep 10 | rm -f pkill 11 | $(LNS) pgrep pkill 12 | 13 | install: all 14 | $(UCBINST) -c pgrep $(ROOT)$(DEFBIN)/pgrep 15 | $(STRIP) $(ROOT)$(DEFBIN)/pgrep 16 | rm -f $(ROOT)$(DEFBIN)/pkill 17 | $(LNS) pgrep $(ROOT)$(DEFBIN)/pkill 18 | $(MANINST) -c -m 644 pgrep.1 $(ROOT)$(MANDIR)/man1/pgrep.1 19 | rm -f $(ROOT)$(MANDIR)/man1/pkill.1 20 | $(LNS) pgrep.1 $(ROOT)$(MANDIR)/man1/pkill.1 21 | 22 | clean: 23 | rm -f pgrep pgrep.o pkill core log *~ 24 | -------------------------------------------------------------------------------- /pkginfo: -------------------------------------------------------------------------------- 1 | # Sccsid @(#)pkginfo 1.4 (gritter) 7/12/05 2 | PKG=heirloom 3 | NAME=Heirloom Toolchest 4 | DESC=A collection of standard Unix utilities. 5 | VENDOR=Gunnar Ritter 6 | HOTLINE=http://heirloom.sourceforge.net 7 | EMAIL=gunnarr@acm.org 8 | VERSION=070715 9 | ARCH=IA32,i386 10 | CATEGORY=utilities 11 | BASEDIR=/ 12 | -------------------------------------------------------------------------------- /pr/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: pr pr_sus 2 | 3 | pr: pr.o 4 | $(LD) $(LDFLAGS) pr.o $(LCOMMON) $(LWCHAR) $(LIBS) -o pr 5 | 6 | pr.o: pr.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(LARGEF) $(XO6FL) $(IWCHAR) $(ICOMMON) -c pr.c 8 | 9 | pr_sus: pr_sus.o 10 | $(LD) $(LDFLAGS) pr_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o pr_sus 11 | 12 | pr_sus.o: pr.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(LARGEF) $(XO6FL) $(IWCHAR) $(ICOMMON) -DSUS -c pr.c -o pr_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c pr $(ROOT)$(SV3BIN)/pr 17 | $(STRIP) $(ROOT)$(SV3BIN)/pr 18 | $(UCBINST) -c pr_sus $(ROOT)$(SUSBIN)/pr 19 | $(STRIP) $(ROOT)$(SUSBIN)/pr 20 | $(MANINST) -c -m 644 pr.1 $(ROOT)$(MANDIR)/man1/pr.1 21 | 22 | clean: 23 | rm -f pr pr.o pr_sus pr_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /printenv/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: printenv 2 | 3 | printenv: printenv.o 4 | $(LD) $(LDFLAGS) printenv.o $(LCOMMON) $(LWCHAR) $(LIBS) -o printenv 5 | 6 | printenv.o: printenv.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c printenv.c 8 | 9 | install: all 10 | $(UCBINST) -c printenv $(ROOT)$(DEFBIN)/printenv 11 | $(STRIP) $(ROOT)$(DEFBIN)/printenv 12 | $(MANINST) -c -m 644 printenv.1 $(ROOT)$(MANDIR)/man1/printenv.1 13 | 14 | clean: 15 | rm -f printenv printenv.o core log *~ 16 | -------------------------------------------------------------------------------- /printenv/printenv.c: -------------------------------------------------------------------------------- 1 | /* 2 | * printenv - print out the environment 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, October 2003. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 13 | #define USED __attribute__ ((used)) 14 | #elif defined __GNUC__ 15 | #define USED __attribute__ ((unused)) 16 | #else 17 | #define USED 18 | #endif 19 | static const char sccsid[] USED = "@(#)printenv.sl 1.3 (gritter) 5/29/05"; 20 | 21 | #include 22 | #include 23 | 24 | int 25 | main(int argc, char **argv) 26 | { 27 | extern char **environ; 28 | char *cp, **ep; 29 | 30 | if (argc > 1 && argv[1][0]=='-' && argv[1][1]=='-' && argv[1][2]=='\0') 31 | argc--, argv++; 32 | if (argc > 1) { 33 | if ((cp = getenv(argv[1])) == NULL) 34 | return 1; 35 | puts(cp); 36 | } else { 37 | for (ep = environ; *ep; ep++) 38 | puts(*ep); 39 | } 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /printf/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: printf 2 | 3 | printf: printf.o 4 | $(LD) $(LDFLAGS) printf.o $(LCOMMON) $(LWCHAR) $(LIBS) -o printf 5 | 6 | printf.o: printf.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c printf.c 8 | 9 | install: all 10 | $(UCBINST) -c printf $(ROOT)$(DEFBIN)/printf 11 | $(STRIP) $(ROOT)$(DEFBIN)/printf 12 | $(MANINST) -c -m 644 printf.1 $(ROOT)$(MANDIR)/man1/printf.1 13 | 14 | clean: 15 | rm -f printf printf.o core log *~ 16 | -------------------------------------------------------------------------------- /priocntl/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: priocntl priocntl_s42 2 | 3 | priocntl: priocntl.o 4 | $(LD) $(LDFLAGS) priocntl.o $(LCOMMON) $(LWCHAR) $(LIBS) -o priocntl 5 | 6 | priocntl.o: priocntl.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -c priocntl.c 8 | 9 | priocntl_s42: priocntl_s42.o 10 | $(LD) $(LDFLAGS) priocntl_s42.o $(LCOMMON) $(LWCHAR) $(LIBS) -o priocntl_s42 11 | 12 | priocntl_s42.o: priocntl.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -DS42 -c priocntl.c -o priocntl_s42.o 14 | 15 | install: all 16 | uname=`uname`; \ 17 | if test "$$uname" = Linux || test "$$uname" = FreeBSD; \ 18 | then \ 19 | $(UCBINST) -c priocntl $(ROOT)$(SV3BIN)/priocntl &&\ 20 | $(STRIP) $(ROOT)$(SV3BIN)/priocntl &&\ 21 | $(UCBINST) -c priocntl_s42 $(ROOT)$(S42BIN)/priocntl &&\ 22 | $(STRIP) $(ROOT)$(S42BIN)/priocntl &&\ 23 | $(MANINST) -c -m 644 priocntl.1 $(ROOT)$(MANDIR)/man1/priocntl.1 ;\ 24 | else \ 25 | exit 0; \ 26 | fi 27 | 28 | clean: 29 | rm -f priocntl priocntl.o priocntl_s42 priocntl_s42.o core log *~ 30 | -------------------------------------------------------------------------------- /ps/ps.dfl: -------------------------------------------------------------------------------- 1 | # Sccsid @(#)ps.dfl 1.4 (gritter) 10/13/03 2 | 3 | # 4 | # ps needs to know whether a new-style O(1) scheduler (as in 2.6 5 | # kernels) or an old-style scheduler (as in stock 2.4 kernels) 6 | # is used. This is normally auto-detected, but it is impossible 7 | # to do this perfectly given the large number of variations and 8 | # backports. 9 | # 10 | #O1_SCHEDULER=1 11 | 12 | # 13 | # Unless this feature was deactivated at compilation time, ps keeps 14 | # a cache file of /dev entries to accelerate the search of names of 15 | # terminal devices. The file is automatically kept up to date by 16 | # ps and owned by the effective user ID ps is invoked with. The 17 | # following settings have no effect if no cache file is kept. 18 | # 19 | 20 | # 21 | # The location of the ps cache file. 22 | # 23 | CACHE_FILE=/tmp/ps_cache 24 | 25 | # 26 | # The octal permission mode for the ps cache file. 27 | # 28 | CACHE_MODE=664 29 | 30 | # 31 | # The group owner of the ps cache file. 32 | # 33 | CACHE_GROUP=sys 34 | 35 | # 36 | # If DROPPRIVS=1 ps will drop setuid privileges after it has created 37 | # the cache file. 38 | # 39 | DROPPRIVS=0 40 | -------------------------------------------------------------------------------- /psrinfo/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: psrinfo 2 | 3 | psrinfo: psrinfo.o 4 | $(LD) $(LDFLAGS) psrinfo.o $(LCOMMON) $(LIBS) -o psrinfo 5 | 6 | psrinfo.o: psrinfo.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) -c psrinfo.c 8 | 9 | install: all 10 | if test "`uname`" = Linux; \ 11 | then \ 12 | $(UCBINST) -c psrinfo $(ROOT)$(DEFBIN)/psrinfo && \ 13 | $(STRIP) $(ROOT)$(DEFBIN)/psrinfo && \ 14 | $(MANINST) -c -m 644 psrinfo.1 $(ROOT)$(MANDIR)/man1/psrinfo.1;\ 15 | else \ 16 | exit 0; \ 17 | fi 18 | 19 | clean: 20 | rm -f psrinfo psrinfo.o core log *~ 21 | -------------------------------------------------------------------------------- /pwd/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: pwd 2 | 3 | pwd: pwd.o 4 | $(LD) $(LDFLAGS) pwd.o $(LCOMMON) $(LIBS) -o pwd 5 | 6 | pwd.o: pwd.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(ICOMMON) -c pwd.c 8 | 9 | install: all 10 | $(UCBINST) -c pwd $(ROOT)$(DEFBIN)/pwd 11 | $(STRIP) $(ROOT)$(DEFBIN)/pwd 12 | $(MANINST) -c -m 644 pwd.1 $(ROOT)$(MANDIR)/man1/pwd.1 13 | 14 | clean: 15 | rm -f pwd pwd.o core log *~ 16 | -------------------------------------------------------------------------------- /pwd/pwd.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)pwd.1 1.2 (gritter) 6/29/05 3 | .\" Derived from pwd(1), Unix 7th Edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH PWD 1 "6/29/05" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | pwd \- working directory name 11 | .SH SYNOPSIS 12 | .B pwd 13 | .SH DESCRIPTION 14 | .I Pwd 15 | prints the pathname of the working (current) directory. 16 | .SH "SEE ALSO" 17 | sh(1) 18 | -------------------------------------------------------------------------------- /pwd/pwd.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pwd - print working directory 3 | * 4 | * A little bit based on Ritter's implementation 5 | */ 6 | /* 7 | * Copyright (c) 2005 Gunnar Ritter 8 | * Copyright (C) 2022 Arthur Bacci 9 | * 10 | * SPDX-Licence-Identifier: Zlib 11 | */ 12 | 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | /* The maximum size `buf` can take up, this check prevents the program from 21 | crashing your computer */ 22 | #define MAXIMUM_SIZE 65536 23 | 24 | int main(void) { 25 | size_t size = 256; 26 | char *cwd; 27 | char *buf = malloc(size); 28 | 29 | while ((cwd = getcwd(buf, size)) == NULL && errno == ERANGE) { 30 | if ((size *= 2) > MAXIMUM_SIZE) { 31 | errno = ENAMETOOLONG; 32 | break; 33 | } 34 | buf = realloc(buf, size); 35 | if (buf == NULL) break; 36 | } 37 | 38 | if (cwd == NULL) { 39 | prerror(errno); 40 | return 1; 41 | } 42 | /* ELSE */ 43 | puts(cwd); 44 | 45 | /* Not needed to free the allocated buf since the program ends here */ 46 | 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /random/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: random 2 | 3 | random: random.o 4 | $(LD) $(LDFLAGS) random.o $(LCOMMON) $(LIBS) -o random 5 | 6 | random.o: random.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c random.c 8 | 9 | install: all 10 | $(UCBINST) -c random $(ROOT)$(DEFBIN)/random 11 | $(STRIP) $(ROOT)$(DEFBIN)/random 12 | $(MANINST) -c -m 644 random.1 $(ROOT)$(MANDIR)/man1/random.1 13 | 14 | clean: 15 | rm -f random random.o core log *~ 16 | -------------------------------------------------------------------------------- /random/random.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)random.1 1.1 (gritter) 11/3/03 3 | .TH RANDOM 1XNX "11/3/03" "Heirloom Toolchest" "XENIX System Compatibility" 4 | .SH NAME 5 | random \- (XENIX) generate a random number 6 | .SH SYNOPSIS 7 | \fBrandom\fR [\fB\-s\fR] [\fIscale\fR] 8 | .SH DESCRIPTION 9 | .I Random 10 | computes a random value. 11 | The result is printed on standard output 12 | and is also returned as exit status. 13 | The 14 | .B \-s 15 | option inhibits printing of the result. 16 | When a 17 | .I scale 18 | is given, 19 | computed values lie between 0 and 20 | .IR scale . 21 | The maximum 22 | .I scale 23 | value is 255, 24 | the default is 1. 25 | .SH NOTES 26 | Since the current time in seconds 27 | is used as seed for computation, 28 | calling 29 | .I random 30 | more than once within the same second 31 | produces the same result for each call. 32 | -------------------------------------------------------------------------------- /readlink/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: readlink readlink_ucb 2 | 3 | readlink: readlink.o 4 | $(LD) $(LDFLAGS) readlink.o $(LCOMMON) $(LIBS) -o readlink 5 | 6 | readlink.o: readlink.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(ICOMMON) -c readlink.c 8 | 9 | readlink_ucb: readlink_ucb.o 10 | $(LD) $(LDFLAGS) readlink_ucb.o $(LCOMMON) $(LIBS) -o readlink_ucb 11 | 12 | readlink_ucb.o: readlink.c 13 | $(CC) $(CFLAGS) -DUCB $(CPPFLAGS) $(ICOMMON) -c readlink.c -o readlink_ucb.o 14 | 15 | install: all 16 | $(UCBINST) -c readlink $(ROOT)$(DEFBIN)/readlink 17 | $(STRIP) $(ROOT)$(DEFBIN)/readlink 18 | $(UCBINST) -c readlink_ucb $(ROOT)$(UCBBIN)/readlink 19 | $(STRIP) $(ROOT)$(UCBBIN)/readlink 20 | $(MANINST) -c -m 644 readlink.1 $(ROOT)$(MANDIR)/man1/readlink.1 21 | $(MANINST) -c -m 644 readlink.1b $(ROOT)$(MANDIR)/man1b/readlink.1b 22 | 23 | clean: 24 | rm -f readlink readlink.o readlink_ucb readlink_ucb.o core log *~ 25 | -------------------------------------------------------------------------------- /renice/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: renice 2 | 3 | renice: renice.o 4 | $(LD) $(LDFLAGS) renice.o $(LCOMMON) $(LIBS) -o renice 5 | 6 | renice.o: renice.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c renice.c 8 | 9 | install: all 10 | $(UCBINST) -c renice $(ROOT)$(DEFBIN)/renice 11 | $(STRIP) $(ROOT)$(DEFBIN)/renice 12 | $(MANINST) -c -m 644 renice.1 $(ROOT)$(MANDIR)/man1/renice.1 13 | 14 | clean: 15 | rm -f renice renice.o core log *~ 16 | -------------------------------------------------------------------------------- /rev/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: rev 2 | 3 | rev: rev.o 4 | $(LD) $(LDFLAGS) rev.o $(LCOMMON) $(LWCHAR) $(LIBS) -o rev 5 | 6 | rev.o: rev.c 7 | $(CC) $(CFLAGSU) $(CPPFLAGS) $(ICOMMON) $(IWCHAR) -c rev.c 8 | 9 | install: all 10 | $(UCBINST) -c rev $(ROOT)$(DEFBIN)/rev 11 | $(STRIP) $(ROOT)$(DEFBIN)/rev 12 | $(MANINST) -c -m 644 rev.1 $(ROOT)$(MANDIR)/man1/rev.1 13 | 14 | clean: 15 | rm -f rev rev.o core log *~ 16 | -------------------------------------------------------------------------------- /rev/rev.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2024 Luiz Antônio Rangel 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .TH REV 1 "07/21/24" "Heirloom Toolchest" "User Commands" 7 | .SH NAME 8 | rev \- reverse lines of a file 9 | .SH SYNOPSIS 10 | \fBrev\fR [\fIfile\fR] 11 | .SH DESCRIPTION 12 | .I Rev 13 | copies the lines of the specified 14 | files to the standard output, but 15 | reversing the order of characters. 16 | If no file is specified, it reads 17 | from the standard input. 18 | .SH NOTES 19 | This 20 | .I rev 21 | supports internationalisation. In 22 | varietate concordia. 23 | .SH HISTORY 24 | A 25 | .I rev 26 | command first appeared in UNIX 6th 27 | Edition, capable only of reading 28 | from the standard input. In the 29 | 7th Edition, an implementation 30 | closer to the current ones was 31 | presented, capable of reading from 32 | both the standard input and now 33 | from files. 34 | -------------------------------------------------------------------------------- /rm/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: rm rm_sysv3 rm_sus 2 | 3 | rm: rm.o 4 | $(LD) $(LDFLAGS) rm.o $(LCOMMON) $(LWCHAR) $(LIBS) -o rm 5 | 6 | rm.o: rm.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c rm.c 8 | 9 | rm_sysv3: rm_sysv3.o 10 | $(LD) $(LDFLAGS) rm_sysv3.o $(LCOMMON) $(LWCHAR) $(LIBS) -o rm_sysv3 11 | 12 | rm_sysv3.o: rm.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DSYSV3 -c rm.c -o rm_sysv3.o 14 | 15 | rm_sus: rm_sus.o 16 | $(LD) $(LDFLAGS) rm_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o rm_sus 17 | 18 | rm_sus.o: rm.c 19 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DSUS -c rm.c -o rm_sus.o 20 | 21 | install: all 22 | $(UCBINST) -c rm $(ROOT)$(DEFBIN)/rm 23 | $(STRIP) $(ROOT)$(DEFBIN)/rm 24 | $(UCBINST) -c rm_sysv3 $(ROOT)$(S42BIN)/rm 25 | $(STRIP) $(ROOT)$(S42BIN)/rm 26 | $(UCBINST) -c rm_sus $(ROOT)$(SUSBIN)/rm 27 | $(STRIP) $(ROOT)$(SUSBIN)/rm 28 | $(MANINST) -c -m 644 rm.1 $(ROOT)$(MANDIR)/man1/rm.1 29 | 30 | clean: 31 | rm -f rm rm.o rm_sysv3 rm_sysv3.o rm_sus rm_sus.o core log *~ 32 | -------------------------------------------------------------------------------- /rmdir/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: rmdir rmdir_sus 2 | 3 | rmdir: rmdir.o 4 | $(LD) $(LDFLAGS) rmdir.o $(LCOMMON) $(LIBS) -o rmdir 5 | 6 | rmdir.o: rmdir.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c rmdir.c 8 | 9 | rmdir_sus: rmdir_sus.o 10 | $(LD) $(LDFLAGS) rmdir_sus.o $(LCOMMON) $(LIBS) -o rmdir_sus 11 | 12 | rmdir_sus.o: rmdir.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -DSUS -c rmdir.c -o rmdir_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c rmdir $(ROOT)$(SV3BIN)/rmdir 17 | $(STRIP) $(ROOT)$(SV3BIN)/rmdir 18 | $(UCBINST) -c rmdir_sus $(ROOT)$(SUSBIN)/rmdir 19 | $(STRIP) $(ROOT)$(SUSBIN)/rmdir 20 | $(MANINST) -c -m 644 rmdir.1 $(ROOT)$(MANDIR)/man1/rmdir.1 21 | 22 | clean: 23 | rm -f rmdir rmdir.o rmdir_sus rmdir_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /rmdir/rmdir.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .\" Sccsid @(#)rmdir.1 1.7 (gritter) 12/1/03 7 | .TH RMDIR 1 "12/1/03" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | rmdir \- remove directories 10 | .SH SYNOPSIS 11 | \fBrmdir\fR [\fB\-ps\fR] \fIdirname\fR ... 12 | .SH DESCRIPTION 13 | .B Rmdir 14 | removes the entries for the named directories, 15 | which must be empty. 16 | .PP 17 | It accepts the following options: 18 | .TP 19 | .B \-p 20 | Remove the named directory 21 | and all its named parent directories. 22 | This is only successful 23 | if each parent directory 24 | contains only the specied subdirectories. 25 | For 26 | .B /usr/5bin/mkdir 27 | and 28 | .BR /usr/5bin/s42/mkdir , 29 | a message is printed 30 | if the whole hierarchy was successfully removed. 31 | .TP 32 | .B \-s 33 | Suppress error messages if 34 | .B \-p 35 | is in effect. 36 | .SH "SEE ALSO" 37 | mkdir(1), 38 | rm(1), 39 | rmdir(2) 40 | .SH NOTES 41 | -------------------------------------------------------------------------------- /sdiff/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: sdiff 2 | 3 | sdiff: sdiff.o 4 | $(LD) $(LDFLAGS) sdiff.o $(LCOMMON) $(LWCHAR) $(LIBS) -o sdiff 5 | 6 | sdiff.o: sdiff.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c sdiff.c 8 | 9 | install: all 10 | $(UCBINST) -c sdiff $(ROOT)$(DEFBIN)/sdiff 11 | $(STRIP) $(ROOT)$(DEFBIN)/sdiff 12 | $(MANINST) -c -m 644 sdiff.1 $(ROOT)$(MANDIR)/man1/sdiff.1 13 | 14 | clean: 15 | rm -f sdiff sdiff.o core log *~ 16 | -------------------------------------------------------------------------------- /sed/test/makefile: -------------------------------------------------------------------------------- 1 | DST=/usr/local/games 2 | INSTALL=/usr/ucb/install 3 | 4 | .SUFFIXES: .sed 5 | .sed: 6 | cat $< > $@ 7 | chmod 755 $@ 8 | 9 | all: math hanoi sokoban sedtris 10 | 11 | install: all 12 | $(INSTALL) -c math $(DST)/math 13 | $(INSTALL) -c hanoi $(DST)/hanoi 14 | $(INSTALL) -c sokoban $(DST)/sokoban 15 | 16 | clean: 17 | rm -f math hanoi sokoban sedtris core log *~ 18 | -------------------------------------------------------------------------------- /sed/test/sokoban.sed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Pindorama/heirloom-ng/e67bc5f3af049c1d61b9744b8b868da53bf28936/sed/test/sokoban.sed -------------------------------------------------------------------------------- /sed/version.c: -------------------------------------------------------------------------------- 1 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 2 | #define USED __attribute__ ((used)) 3 | #elif defined __GNUC__ 4 | #define USED __attribute__ ((unused)) 5 | #else 6 | #define USED 7 | #endif 8 | #if defined (SU3) 9 | static const char sccsid[] USED = "@(#)sed_su3.sl 2.34 (gritter) 6/26/05"; 10 | #elif defined (SUS) 11 | static const char sccsid[] USED = "@(#)sed_sus.sl 2.34 (gritter) 6/26/05"; 12 | #elif defined (S42) 13 | static const char sccsid[] USED = "@(#)sed_s42.sl 2.34 (gritter) 6/26/05"; 14 | #else /* !SUS, !SU3, !S42 */ 15 | static const char sccsid[] USED = "@(#)sed.sl 2.34 (gritter) 6/26/05"; 16 | #endif /* !SUS, !SU3, !S42 */ 17 | /* SLIST */ 18 | /* 19 | sed.h: Sccsid @(#)sed.h 1.32 (gritter) 2/6/05 20 | sed0.c: Sccsid @(#)sed0.c 1.64 (gritter) 3/12/05> 21 | sed1.c: Sccsid @(#)sed1.c 1.42 (gritter) 2/6/05> 22 | */ 23 | -------------------------------------------------------------------------------- /seq/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: seq 2 | 3 | seq: seq.o 4 | $(LD) $(LDFLAGS) seq.o $(LCOMMON) $(LIBS) -o seq 5 | 6 | seq.o: seq.c 7 | $(CC) $(CFLAGSU) $(CPPFLAGS) $(ICOMMON) -c seq.c 8 | 9 | install: all 10 | $(UCBINST) -c seq $(ROOT)$(DEFBIN)/seq 11 | $(STRIP) $(ROOT)$(DEFBIN)/seq 12 | $(MANINST) -c -m 644 seq.1 $(ROOT)$(MANDIR)/man1/seq.1 13 | 14 | clean: 15 | rm -f seq seq.o core log *~ 16 | -------------------------------------------------------------------------------- /setpgrp/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: setpgrp 2 | 3 | setpgrp: setpgrp.o 4 | $(LD) $(LDFLAGS) setpgrp.o $(LCOMMON) $(LIBS) -o setpgrp 5 | 6 | setpgrp.o: setpgrp.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c setpgrp.c 8 | 9 | install: all 10 | $(UCBINST) -c setpgrp $(ROOT)$(DEFBIN)/setpgrp 11 | $(STRIP) $(ROOT)$(DEFBIN)/setpgrp 12 | $(MANINST) -c -m 644 setpgrp.1 $(ROOT)$(MANDIR)/man1/setpgrp.1 13 | 14 | clean: 15 | rm -f setpgrp setpgrp.o core log *~ 16 | -------------------------------------------------------------------------------- /setpgrp/setpgrp.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright (c) 2003 Gunnar Ritter 3 | .\" 4 | .\" SPDX-Licence-Identifier: Zlib 5 | .\" 6 | .\" Sccsid @(#)setpgrp.1 1.3 (gritter) 4/17/03 7 | .TH SETPGRP 1 "4/17/03" "Heirloom Toolchest" "User Commands" 8 | .SH NAME 9 | setpgrp \- set process group ID and session ID 10 | .SH SYNOPSIS 11 | \fBsetpgrp\fI command\fR [\fIargument\fR\ ...] 12 | .SH DESCRIPTION 13 | If the 14 | .B setpgrp 15 | command is not already a session leader, 16 | it will set its process group ID and session ID 17 | to its process id 18 | and release its controlling terminal. 19 | In any case, 20 | .I command 21 | will be executed using the given 22 | .IR arguments . 23 | .SH "SEE ALSO" 24 | setpgid(2), 25 | setsid(2), 26 | execvp(3) 27 | -------------------------------------------------------------------------------- /shl/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: shl 2 | 3 | shl: shl.o 4 | $(LD) $(LDFLAGS) shl.o $(LCOMMON) $(LWCHAR) $(LIBS) -o shl 5 | 6 | shl.o: shl.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -DSV3BIN='"$(SV3BIN)"' -DDEFBIN='"$(DEFBIN)"' -c shl.c 8 | 9 | install: all 10 | u=`uname`; \ 11 | if test "$$u" != FreeBSD && test "$$u" != HP-UX && \ 12 | test "$$u" != AIX && test "$$u" != NetBSD && \ 13 | test "$$u" != OpenBSD && test "$$u" != DragonFly ; \ 14 | then \ 15 | $(UCBINST) -c $(TTYGRP) -m 2755 shl $(ROOT)$(DEFBIN)/shl &&\ 16 | $(STRIP) $(ROOT)$(DEFBIN)/shl &&\ 17 | $(MANINST) -c -m 644 shl.1 $(ROOT)$(MANDIR)/man1/shl.1; \ 18 | else \ 19 | exit 0; \ 20 | fi 21 | 22 | clean: 23 | rm -f shl shl.o core log *~ 24 | -------------------------------------------------------------------------------- /sleep/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: sleep 2 | 3 | sleep: sleep.o 4 | $(LD) $(LDFLAGS) sleep.o $(LCOMMON) $(LIBS) -o sleep 5 | 6 | sleep.o: sleep.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c sleep.c 8 | 9 | install: all 10 | $(UCBINST) -c sleep $(ROOT)$(DEFBIN)/sleep 11 | $(STRIP) $(ROOT)$(DEFBIN)/sleep 12 | $(MANINST) -c -m 644 sleep.1 $(ROOT)$(MANDIR)/man1/sleep.1 13 | 14 | clean: 15 | rm -f sleep sleep.o core log *~ 16 | -------------------------------------------------------------------------------- /sleep/sleep.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)sleep.1 1.3 (gritter) 4/12/03 3 | .\" Parts taken from sleep(1), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH SLEEP 1 "4/12/03" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | sleep \- suspend execution for an interval 11 | .SH SYNOPSIS 12 | \fBsleep\fI time\fR 13 | .SH DESCRIPTION 14 | The 15 | .B sleep 16 | command suspends execution for 17 | .I time 18 | seconds. 19 | It is used to execute a command 20 | after a certain amount of time as in: 21 | .RS 22 | .sp 23 | (sleep 105; command) & 24 | .sp 25 | .RE 26 | or to execute a command every so often, as in: 27 | .RS 28 | .sp 29 | .nf 30 | while true 31 | do 32 | command 33 | sleep 37 34 | done 35 | .fi 36 | .SH "SEE ALSO" 37 | sh(1), 38 | sleep(3) 39 | -------------------------------------------------------------------------------- /sort/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: sort sort_sus 2 | 3 | sort: sort.o 4 | $(LD) $(LDFLAGS) sort.o $(LCOMMON) $(LWCHAR) $(LIBS) -o sort 5 | 6 | sort.o: sort.c 7 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c sort.c 8 | 9 | sort_sus: sort_sus.o 10 | $(LD) $(LDFLAGS) sort_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o sort_sus 11 | 12 | sort_sus.o: sort.c 13 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) -DSUS $(IWCHAR) $(ICOMMON) -c sort.c -o sort_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c sort $(ROOT)$(SV3BIN)/sort 17 | $(STRIP) $(ROOT)$(SV3BIN)/sort 18 | $(UCBINST) -c sort_sus $(ROOT)$(SUSBIN)/sort 19 | $(STRIP) $(ROOT)$(SUSBIN)/sort 20 | $(MANINST) -c -m 644 sort.1 $(ROOT)$(MANDIR)/man1/sort.1 21 | 22 | clean: 23 | rm -f sort sort.o sort_sus sort_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /spell/compress.sh: -------------------------------------------------------------------------------- 1 | # 2 | # SPDX-Licence-Identifier: CDDL-1.0 3 | # 4 | # Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T 5 | # All Rights Reserved 6 | # 7 | # Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 8 | 9 | 10 | # from OpenSolaris "compress.sh 1.7 05/06/08 SMI" /* SVr4.0 1.3 */ 11 | # Sccsid @(#)compress.sh 2.1 (gritter) 6/21/05 12 | # compress - compress the spell program log 13 | 14 | PATH=@SV3BIN@:@DEFBIN@:$PATH export PATH 15 | 16 | tmp=/var/tmp/spellhist 17 | 18 | trap "rm -f $tmp;exit" 0 1 2 3 15 19 | echo "COMPRESSED `date`" > $tmp 20 | grep -v ' ' @SPELLHIST@ | sort -fud >> $tmp 21 | cp -f $tmp @SPELLHIST@ 22 | -------------------------------------------------------------------------------- /spell/hash.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 5 | /* All Rights Reserved */ 6 | 7 | 8 | /* from OpenSolaris "hash.h 1.9 05/06/08 SMI" SVr4.0 1.2 */ 9 | 10 | /* 11 | * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 12 | * 13 | * Sccsid @(#)hash.h 2.2 (gritter) 6/21/05 14 | */ 15 | 16 | #include 17 | 18 | #define HASHWIDTH 27 19 | #define HASHSIZE 134217689L /* prime under 2^HASHWIDTH */ 20 | #define INDEXWIDTH 9 21 | #define INDEXSIZE (1<= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 13 | #define USED __attribute__ ((used)) 14 | #elif defined __GNUC__ 15 | #define USED __attribute__ ((unused)) 16 | #else 17 | #define USED 18 | #endif 19 | static const char sccsid[] USED = "@(#)sync.sl 1.3 (gritter) 5/29/05"; 20 | 21 | #include 22 | 23 | int 24 | main(void) 25 | { 26 | sync(); 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /tabs/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tabs newform 2 | 3 | tabs: tabs.o tabspec.o 4 | $(LD) $(LDFLAGS) tabs.o tabspec.o $(LCURS) $(LCOMMON) $(LWCHAR) $(LIBS) -o tabs 5 | 6 | tabs.o: tabs.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c tabs.c 8 | 9 | newform: newform.o tabspec.o 10 | $(LD) $(LDFLAGS) newform.o tabspec.o $(LCOMMON) $(LWCHAR) $(LIBS) -o newform 11 | 12 | newform.o: newform.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c newform.c 14 | 15 | tabspec.o: tabspec.c 16 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c tabspec.c 17 | 18 | install: all 19 | $(UCBINST) -c tabs $(ROOT)$(DEFBIN)/tabs 20 | $(STRIP) $(ROOT)$(DEFBIN)/tabs 21 | $(UCBINST) -c newform $(ROOT)$(DEFBIN)/newform 22 | $(STRIP) $(ROOT)$(DEFBIN)/newform 23 | $(MANINST) -c -m 644 tabs.1 $(ROOT)$(MANDIR)/man1/tabs.1 24 | $(MANINST) -c -m 644 newform.1 $(ROOT)$(MANDIR)/man1/newform.1 25 | $(MANINST) -c -m 644 fspec.5 $(ROOT)$(MANDIR)/man5/fspec.5 26 | 27 | clean: 28 | rm -f tabs tabs.o newform newform.o tabspec.o core log *~ 29 | 30 | tabs.o: tabspec.h 31 | newform.o: tabspec.h 32 | tabspec.o: tabspec.h 33 | -------------------------------------------------------------------------------- /tabs/tabspec.h: -------------------------------------------------------------------------------- 1 | /* 2 | * tabs - set terminal tabs 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, January 2003. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | /* Sccsid @(#)tabspec.h 1.1 (gritter) 5/10/03 */ 13 | 14 | #ifndef TABSPEC_H 15 | #define TABSPEC_H 16 | 17 | struct tabulator { 18 | struct tabulator *t_nxt; /* next list element */ 19 | const char *t_str; /* tabulator string */ 20 | int t_tab; /* tab stop position */ 21 | int t_rep; /* repetitive tab count */ 22 | }; 23 | 24 | enum _taberrno { 25 | TABERR_NONE, 26 | TABERR_CANTOP, /* can't open */ 27 | TABERR_FILIND, /* file indirection */ 28 | TABERR_UNKTAB, /* unknown tab code */ 29 | TABERR_ILLINC, /* illegal increment */ 30 | TABERR_ILLTAB /* illegal tabs */ 31 | }; 32 | extern enum _taberrno taberrno; 33 | 34 | extern void *scalloc(size_t nmemb, size_t size); 35 | extern struct tabulator *tabstops(const char *s, int cols); 36 | 37 | #endif TABSPEC_H 38 | 39 | -------------------------------------------------------------------------------- /tail/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tail 2 | 3 | tail: tail.o 4 | $(LD) $(LDFLAGS) tail.o $(LCOMMON) $(LIBS) -o tail 5 | 6 | tail.o: tail.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(ICOMMON) -c tail.c 8 | 9 | install: all 10 | $(UCBINST) -c tail $(ROOT)$(DEFBIN)/tail 11 | $(STRIP) $(ROOT)$(DEFBIN)/tail 12 | $(MANINST) -c -m 644 tail.1 $(ROOT)$(MANDIR)/man1/tail.1 13 | 14 | clean: 15 | rm -f tail tail.o core log *~ 16 | -------------------------------------------------------------------------------- /tapecntl/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tapecntl mt tape 2 | 3 | tapecntl: tapecntl.o 4 | $(LD) $(LDFLAGS) tapecntl.o $(LCOMMON) $(LIBS) -o tapecntl 5 | 6 | tapecntl.o: tapecntl.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -DTAPEDFL='"$(DFLDIR)/tape"' -c tapecntl.c 8 | 9 | tape mt: tapecntl 10 | rm -f $@ 11 | $(LNS) tapecntl $@ 12 | 13 | install: all 14 | $(UCBINST) -c tapecntl $(ROOT)$(DEFBIN)/tapecntl 15 | $(STRIP) $(ROOT)$(DEFBIN)/tapecntl 16 | rm -f $(ROOT)$(DEFBIN)/mt 17 | $(LNS) tapecntl $(ROOT)$(DEFBIN)/mt 18 | rm -f $(ROOT)$(DEFBIN)/tape 19 | $(LNS) tapecntl $(ROOT)$(DEFBIN)/tape 20 | $(MANINST) -c -m 644 mt.1 $(ROOT)$(MANDIR)/man1/mt.1 21 | $(MANINST) -c -m 644 tape.1 $(ROOT)$(MANDIR)/man1/tape.1 22 | $(MANINST) -c -m 644 tapecntl.1 $(ROOT)$(MANDIR)/man1/tapecntl.1 23 | 24 | clean: 25 | rm -f mt tape tapecntl tapecntl.o core log *~ 26 | -------------------------------------------------------------------------------- /tar/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tar 2 | 3 | tar: tar.o 4 | $(LD) $(LDFLAGS) tar.o $(LCOMMON) $(LWCHAR) $(LIBS) -o tar 5 | 6 | tar.o: tar.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DTARDFL='"$(DFLDIR)/tar"' -DSHELL='"$(SHELL)"' -DSV3BIN='"$(SV3BIN)"' -DDEFBIN='"$(DEFBIN)"' -c tar.c 8 | 9 | install: all 10 | $(UCBINST) -c tar $(ROOT)$(DEFBIN)/tar 11 | $(STRIP) $(ROOT)$(DEFBIN)/tar 12 | test -r $(ROOT)$(DFLDIR)/tar || $(UCBINST) -c -m 644 tar.dfl $(ROOT)$(DFLDIR)/tar 13 | $(MANINST) -c -m 644 tar.1 $(ROOT)$(MANDIR)/man1/tar.1 14 | 15 | clean: 16 | rm -f tar tar.o core log *~ 17 | -------------------------------------------------------------------------------- /tar/tar.dfl: -------------------------------------------------------------------------------- 1 | # 2 | # Sccsid @(#)tar.dfl 1.4 (gritter) 2/4/04 3 | 4 | archive=/dev/rmt/c0s0 20 0 5 | 6 | archive0=/dev/dsk/f0t 18 1440 7 | archive1=/dev/dsk/f1t 15 1200 8 | archive2=/dev/cdrom/c1t0d0 20 0 9 | archive3=/dev/cdrom/c1t0d1 20 0 10 | -------------------------------------------------------------------------------- /tcopy/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tcopy 2 | 3 | tcopy: tcopy.o 4 | $(LD) $(LDFLAGS) tcopy.o $(LCOMMON) $(LWCHAR) $(LIBS) -o tcopy 5 | 6 | tcopy.o: tcopy.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c tcopy.c 8 | 9 | install: all 10 | $(UCBINST) -c tcopy $(ROOT)$(DEFBIN)/tcopy 11 | $(STRIP) $(ROOT)$(DEFBIN)/tcopy 12 | $(MANINST) -c -m 644 tcopy.1 $(ROOT)$(MANDIR)/man1/tcopy.1 13 | 14 | clean: 15 | rm -f tcopy tcopy.o core log *~ 16 | -------------------------------------------------------------------------------- /tee/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tee 2 | 3 | tee: tee.o 4 | $(LD) $(LDFLAGS) tee.o $(LCOMMON) $(LIBS) -o tee 5 | 6 | tee.o: tee.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) -c tee.c 8 | 9 | install: all 10 | $(UCBINST) -c tee $(ROOT)$(DEFBIN)/tee 11 | $(STRIP) $(ROOT)$(DEFBIN)/tee 12 | $(MANINST) -c -m 644 tee.1 $(ROOT)$(MANDIR)/man1/tee.1 13 | 14 | clean: 15 | rm -f tee tee.o core log *~ 16 | -------------------------------------------------------------------------------- /tee/tee.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)tee.1 1.3 (gritter) 1/11/03 3 | .\" Parts taken from tee(1), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH TEE 1 "1/11/03" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | tee \- pipe fitting 11 | .SH SYNOPSIS 12 | \fBtee\fR [\fB\-ai\fR] [\fIfile\fR\ ...] 13 | .SH DESCRIPTION 14 | The 15 | .B tee 16 | command transcribes the standard input 17 | to the standard output 18 | and makes a copy in each 19 | .IR file . 20 | .PP 21 | It accepts the following options: 22 | .TP 23 | .B \-a 24 | Causes the output to be appended to the files 25 | rather than overwriting them. 26 | .TP 27 | .B \-i 28 | The 29 | .B tee 30 | command will ignore interrupts with this option. 31 | .SH "SEE ALSO" 32 | cat(1) 33 | -------------------------------------------------------------------------------- /test/main.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | 5 | /* 6 | * Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 7 | * 8 | * Sccsid @(#)main.c 1.3 (gritter) 7/2/05 9 | */ 10 | 11 | #include "defs.h" 12 | #include 13 | 14 | int mb_cur_max; 15 | 16 | int 17 | main(int argc, char **argv) 18 | { 19 | extern int func(int, char **); 20 | extern int sysv3; 21 | 22 | if (sysv3) 23 | putenv("SYSV3=set"); 24 | setlocale(LC_CTYPE, ""); 25 | mb_cur_max = MB_CUR_MAX; 26 | return func(argc, argv); 27 | } 28 | 29 | struct namnod * 30 | findnam(const char *name) 31 | { 32 | static struct namnod n; 33 | char *cp; 34 | 35 | if ((cp = getenv(name)) != NULL) { 36 | n.value = cp; 37 | n.namflg = N_EXPORT|N_ENVNAM; 38 | return &n; 39 | } 40 | return NULL; 41 | } 42 | -------------------------------------------------------------------------------- /test/version.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-Licence-Identifier: CDDL-1.0 3 | */ 4 | /* 5 | * Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 6 | */ 7 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 8 | #define USED __attribute__ ((used)) 9 | #elif defined __GNUC__ 10 | #define USED __attribute__ ((unused)) 11 | #else 12 | #define USED 13 | #endif 14 | #if defined (UCB) 15 | static const char id[] = "@(#)/usr/ucb/test.sl 1.6 (gritter) 7/2/05"; 16 | #elif defined (SUS) 17 | static const char id[] = "@(#)test_sus.sl 1.6 (gritter) 7/2/05"; 18 | #else 19 | static const char id[] = "@(#)test.sl 1.6 (gritter) 7/2/05"; 20 | #endif 21 | /* SLIST */ 22 | /* 23 | defs.h: * Sccsid @(#)defs.h 1.3 (gritter) 7/2/05 24 | helper.c: * Sccsid @(#)helper.c 1.2 (gritter) 6/29/05 25 | main.c: * Sccsid @(#)main.c 1.3 (gritter) 7/2/05 26 | test.c: * Sccsid @(#)test.c 1.9 (gritter) 6/29/05 27 | */ 28 | -------------------------------------------------------------------------------- /time/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: time ptime 2 | 3 | time: time.o 4 | $(LD) $(LDFLAGS) time.o $(LCOMMON) $(LWCHAR) $(LIBS) -o time 5 | 6 | time.o: time.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -c time.c 8 | 9 | ptime: ptime.o 10 | $(LD) $(LDFLAGS) ptime.o $(LCOMMON) $(LWCHAR) $(LIBS) -o ptime 11 | 12 | ptime.o: time.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -DPTIME -c time.c -o ptime.o 14 | 15 | install: all 16 | $(UCBINST) -c time $(ROOT)$(DEFBIN)/time 17 | $(STRIP) $(ROOT)$(DEFBIN)/time 18 | $(MANINST) -c -m 644 time.1 $(ROOT)$(MANDIR)/man1/time.1 19 | if test "`uname`" = Linux; \ 20 | then \ 21 | $(UCBINST) -c ptime $(ROOT)$(DEFBIN)/ptime && \ 22 | $(STRIP) $(ROOT)$(DEFBIN)/ptime && \ 23 | rm -f $(ROOT)$(MANDIR)/man1/ptime.1 && \ 24 | $(LNS) time.1 $(ROOT)$(MANDIR)/man1/ptime.1 ;\ 25 | fi 26 | 27 | clean: 28 | rm -f time time.o ptime ptime.o core log *~ 29 | -------------------------------------------------------------------------------- /timeout/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: timeout 2 | 3 | timeout: timeout.o sigtable.o 4 | $(LD) $(LDFLAGS) timeout.o sigtable.o $(LCOMMON) $(LWCHAR) $(LIBS) -L. -o timeout 5 | 6 | timeout.o: timeout.c 7 | $(CC) -std=c99 -Wall $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -I. -c timeout.c 8 | 9 | sigtable.o: sigtable.c 10 | $(CC) $(CPPFLAGS) -I. -c sigtable.c 11 | 12 | install: all 13 | $(UCBINST) -c timeout $(ROOT)$(DEFBIN)/timeout 14 | $(STRIP) $(ROOT)$(DEFBIN)/timeout 15 | $(MANINST) -c -m 644 timeout.1 $(ROOT)$(MANDIR)/man1/timeout.1 16 | 17 | clean: 18 | rm -f timeout timeout.o sigtable.o core log *~ 19 | 20 | sigtable.h: sigtable.c 21 | -------------------------------------------------------------------------------- /timeout/sigtable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * sigtable.h - declarations for a signal map-like struct. 3 | */ 4 | /* 5 | * Partially derived from kill/strsig.c 6 | * 7 | * Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany 8 | * Copyright (C) 2023, 2024: Luiz Antônio (takusuman) 9 | * 10 | * SPDX-Licence-Identifier: CDDL-1.0 11 | */ 12 | 13 | 14 | struct sig_strlist { 15 | int signum; 16 | char *signame; 17 | }; 18 | 19 | extern const struct sig_strlist sig_strs[]; 20 | -------------------------------------------------------------------------------- /timeout/takefive.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # takefive.sh: test script for timeout(1), takes 3 | # seconds as argument. 4 | # Copyright (c) 2023, 2024 Luiz Antônio Rangel. 5 | # 6 | # This script is public domain, no more, no less. 7 | 8 | main() { 9 | for SIG in ABRT ALRM CHLD HUP INT TERM; do 10 | eval "trap 'handle_signal $SIG' $SIG" 11 | done 12 | take=${1:-5} 13 | printf 1>&2 'Sleeping %d seconds...\n' $take 14 | while [ $take -gt 0 ]; do 15 | take=$(($take - 1)) 16 | printf '%d... ' $take 17 | sleep 1 18 | done 19 | sleep $take 20 | return 3 21 | } 22 | 23 | handle_signal() { # function input: string signal 24 | s=$1 25 | printf 'Caught %s\n' "$1" 26 | } 27 | 28 | main $1 29 | -------------------------------------------------------------------------------- /touch/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: touch touch_sus 2 | 3 | touch: touch.o 4 | $(LD) $(LDFLAGS) touch.o $(LCOMMON) $(LIBS) -o touch 5 | 6 | touch.o: touch.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(LARGEF) -c touch.c 8 | 9 | touch_sus: touch_sus.o 10 | $(LD) $(LDFLAGS) touch_sus.o $(LCOMMON) $(LIBS) -o touch_sus 11 | 12 | touch_sus.o: touch.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(LARGEF) -DSUS -c touch.c -o touch_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c touch $(ROOT)$(SV3BIN)/touch 17 | $(STRIP) $(ROOT)$(SV3BIN)/touch 18 | $(UCBINST) -c touch_sus $(ROOT)$(SUSBIN)/touch 19 | $(STRIP) $(ROOT)$(SUSBIN)/touch 20 | rm -f $(ROOT)$(DEFBIN)/settime 21 | $(LNS) touch $(ROOT)$(DEFBIN)/settime 22 | $(MANINST) -c -m 644 touch.1 $(ROOT)$(MANDIR)/man1/touch.1 23 | $(MANINST) -c -m 644 settime.1 $(ROOT)$(MANDIR)/man1/settime.1 24 | 25 | clean: 26 | rm -f touch touch.o touch_sus touch_sus.o core log *~ 27 | -------------------------------------------------------------------------------- /tr/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tr tr_sus tr_ucb 2 | 3 | tr: tr.o 4 | $(LD) $(LDFLAGS) tr.o $(LCOMMON) $(LWCHAR) $(LIBS) -o tr 5 | 6 | tr.o: tr.c 7 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c tr.c 8 | 9 | tr_sus: tr_sus.o 10 | $(LD) $(LDFLAGS) tr_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o tr_sus 11 | 12 | tr_sus.o: tr.c 13 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DSUS -c tr.c -o tr_sus.o 14 | 15 | tr_ucb: tr_ucb.o 16 | $(LD) $(LDFLAGS) tr_ucb.o $(LCOMMON) $(LWCHAR) $(LIBS) -o tr_ucb 17 | 18 | tr_ucb.o: tr.c 19 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DUCB -c tr.c -o tr_ucb.o 20 | 21 | install: all 22 | $(UCBINST) -c tr $(ROOT)$(SV3BIN)/tr 23 | $(STRIP) $(ROOT)$(SV3BIN)/tr 24 | $(UCBINST) -c tr_sus $(ROOT)$(SUSBIN)/tr 25 | $(STRIP) $(ROOT)$(SUSBIN)/tr 26 | $(UCBINST) -c tr_ucb $(ROOT)$(UCBBIN)/tr 27 | $(STRIP) $(ROOT)$(UCBBIN)/tr 28 | $(MANINST) -c -m 644 tr.1 $(ROOT)$(MANDIR)/man1/tr.1 29 | $(MANINST) -c -m 644 tr.1b $(ROOT)$(MANDIR)/man1b/tr.1b 30 | 31 | clean: 32 | rm -f tr tr.o tr_sus tr_sus.o tr_ucb tr_ucb.o core log *~ 33 | -------------------------------------------------------------------------------- /true/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: true false 2 | 3 | true: truther.c 4 | $(CC) $(CFLAGS) $(CPPFLAGS) truther.c -DTRUE -o true 5 | 6 | false: truther.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) truther.c -DFALSE -o false 8 | 9 | install: all 10 | $(UCBINST) -c true $(ROOT)$(DEFBIN)/true 11 | $(UCBINST) -c false $(ROOT)$(DEFBIN)/false 12 | $(MANINST) -c -m 644 true.1 $(ROOT)$(MANDIR)/man1/true.1 13 | rm -f $(ROOT)$(MANDIR)/man1/false.1 14 | $(LNS) true.1 $(ROOT)$(MANDIR)/man1/false.1 15 | 16 | clean: 17 | rm -f true false *~ 18 | -------------------------------------------------------------------------------- /true/true.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)true.1 1.2 (gritter) 6/30/05 3 | .\" Derived from true(1), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH TRUE 1 "7/04/22" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | true, false \- provide truth values 11 | .SH SYNOPSIS 12 | .B true 13 | .PP 14 | .B false 15 | .SH DESCRIPTION 16 | .I True 17 | does nothing, successfully. 18 | .I False 19 | does nothing, unsuccessfully. 20 | They are typically used in input to 21 | .IR sh (1) 22 | such as: 23 | .PP 24 | while true 25 | .br 26 | do 27 | .br 28 | command 29 | .br 30 | done 31 | .SH "SEE ALSO" 32 | sh(1) 33 | .SH DIAGNOSTICS 34 | .I True 35 | has exit status zero, 36 | .I false 37 | has a non-zero one. 38 | -------------------------------------------------------------------------------- /true/truther.c: -------------------------------------------------------------------------------- 1 | /* truther.c - provide truth values 2 | * This file contain code for both true(1) and false(1). 3 | */ 4 | /* Copyright (C) 2022: Luiz Antônio (takusuman) 5 | * 6 | * SPDX-Licence-Identifier: Zlib 7 | */ 8 | 9 | #if defined(FALSE) 10 | #define n 255 11 | #elif !defined(FALSE) || defined(TRUE) 12 | #define n 0 13 | #endif 14 | 15 | int main(void){ 16 | return(n); 17 | } 18 | -------------------------------------------------------------------------------- /tsort/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tsort 2 | 3 | tsort: tsort.o 4 | $(LD) $(LDFLAGS) tsort.o $(LCOMMON) $(LWCHAR) $(LIBS) -o tsort 5 | 6 | tsort.o: tsort.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -c tsort.c 8 | 9 | install: all 10 | $(UCBINST) -c tsort $(ROOT)$(CCSBIN)/tsort 11 | $(STRIP) $(ROOT)$(CCSBIN)/tsort 12 | $(MANINST) -c -m 644 tsort.1 $(ROOT)$(MANDIR)/man1/tsort.1 13 | 14 | clean: 15 | rm -f tsort tsort.o core log *~ 16 | -------------------------------------------------------------------------------- /tsort/tsort.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)tsort.1 1.2 (gritter) 8/17/03 3 | .\" Parts taken from tsort(1), Unix 32V: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH TSORT 1 "8/17/03" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | tsort \- topological sort 11 | .SH SYNOPSIS 12 | \fBtsort\fR [\fIfile\fR] 13 | .SH DESCRIPTION 14 | .I Tsort 15 | produces on the standard output a totally ordered list of items 16 | consistent with a partial ordering of items 17 | mentioned in the input 18 | .IR file . 19 | If no 20 | .I file 21 | is specified, the standard input is understood. 22 | .PP 23 | The input consists of pairs of items (nonempty strings) 24 | separated by blanks. 25 | Pairs of different items indicate ordering. 26 | Pairs of identical items indicate presence, but not ordering. 27 | .SH "SEE ALSO" 28 | lorder(1) 29 | .SH DIAGNOSTICS 30 | Odd data: there is an odd number of fields in the input file. 31 | .SH NOTES 32 | Uses a quadratic algorithm; 33 | not worth fixing for the typical use of ordering 34 | a library archive file. 35 | -------------------------------------------------------------------------------- /tty/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: tty 2 | 3 | tty: tty.o 4 | $(LD) $(LDFLAGS) tty.o $(LCOMMON) $(LIBS) -o tty 5 | 6 | tty.o: tty.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c tty.c 8 | 9 | install: all 10 | $(UCBINST) -c tty $(ROOT)$(DEFBIN)/tty 11 | $(STRIP) $(ROOT)$(DEFBIN)/tty 12 | $(MANINST) -c -m 644 tty.1 $(ROOT)$(MANDIR)/man1/tty.1 13 | 14 | clean: 15 | rm -f tty tty.o core log *~ 16 | -------------------------------------------------------------------------------- /tty/tty.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)tty.1 1.2 (gritter) 5/21/03 3 | .\" Parts taken from tty(1), Unix 7th edition: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH TTY 1 "5/21/03" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | tty \- get terminal name 11 | .SH SYNOPSIS 12 | \fBtty\fR [\fB\-l\fR] [\fB\-s\fR] 13 | .SH DESCRIPTION 14 | .I Tty 15 | prints the pathname of the user's terminal. 16 | If the 17 | .B \-s 18 | option is present, 19 | nothing is printed, 20 | and only the exit status is affected. 21 | With the 22 | .B \-l 23 | option, 24 | .I tty 25 | prints the line number 26 | if standard input is connected to a synchronous line. 27 | .SH DIAGNOSTICS 28 | `not a tty' if the standard input file is not a terminal. 29 | .PP 30 | The exit status is 31 | .TP 10 32 | 0 33 | if standard input is a terminal; 34 | .br 35 | .ns 36 | .TP 10 37 | 1 38 | if standard input is not a terminal; 39 | .br 40 | .ns 41 | .TP 10 42 | 2 43 | or greater on error. 44 | -------------------------------------------------------------------------------- /ul/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: ul 2 | 3 | ul: ul.o 4 | $(LD) $(LDFLAGS) ul.o $(LCURS) $(LCOMMON) $(LWCHAR) $(LIBS) -o ul 5 | 6 | ul.o: ul.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c ul.c 8 | 9 | install: all 10 | $(UCBINST) -c ul $(ROOT)$(DEFBIN)/ul 11 | $(STRIP) $(ROOT)$(DEFBIN)/ul 12 | $(MANINST) -c -m 644 ul.1 $(ROOT)$(MANDIR)/man1/ul.1 13 | 14 | clean: 15 | rm -f ul ul.o core log *~ 16 | -------------------------------------------------------------------------------- /uname/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: uname 2 | 3 | uname: uname.o 4 | $(LD) $(LDFLAGS) uname.o $(LCOMMON) $(LIBS) -o uname 5 | 6 | uname.o: uname.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) -c uname.c 8 | 9 | install: all 10 | $(UCBINST) -c uname $(ROOT)$(DEFBIN)/uname 11 | $(STRIP) $(ROOT)$(DEFBIN)/uname 12 | $(MANINST) -c -m 644 uname.1 $(ROOT)$(MANDIR)/man1/uname.1 13 | 14 | clean: 15 | rm -f uname uname.o core log *~ 16 | -------------------------------------------------------------------------------- /uniq/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: uniq 2 | 3 | uniq: uniq.o 4 | $(LD) $(LDFLAGS) uniq.o $(LCOMMON) $(LWCHAR) $(LIBS) -o uniq 5 | 6 | uniq.o: uniq.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c uniq.c 8 | 9 | install: all 10 | $(UCBINST) -c uniq $(ROOT)$(DEFBIN)/uniq 11 | $(STRIP) $(ROOT)$(DEFBIN)/uniq 12 | $(MANINST) -c -m 644 uniq.1 $(ROOT)$(MANDIR)/man1/uniq.1 13 | 14 | clean: 15 | rm -f uniq uniq.o core log *~ 16 | -------------------------------------------------------------------------------- /units/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: units 2 | 3 | units: units.o 4 | $(LD) $(LDFLAGS) units.o $(LCOMMON) $(LWCHAR) $(LIBS) -o units 5 | 6 | units.o: units.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -DUNITTAB='"$(DEFLIB)/unittab"' -c units.c 8 | 9 | install: all 10 | $(UCBINST) -c units $(ROOT)$(DEFBIN)/units 11 | $(STRIP) $(ROOT)$(DEFBIN)/units 12 | $(MANINST) -c -m 644 units.1 $(ROOT)$(MANDIR)/man1/units.1 13 | $(UCBINST) -c -m 644 unittab $(ROOT)$(DEFLIB)/unittab 14 | 15 | clean: 16 | rm -f units units.o core log *~ 17 | -------------------------------------------------------------------------------- /units/unittab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Pindorama/heirloom-ng/e67bc5f3af049c1d61b9744b8b868da53bf28936/units/unittab -------------------------------------------------------------------------------- /users/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: users 2 | 3 | users: users.o 4 | $(LD) $(LDFLAGS) users.o $(LCOMMON) $(LWCHAR) $(LIBS) -o users 5 | 6 | users.o: users.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c users.c 8 | 9 | install: all 10 | $(UCBINST) -c users $(ROOT)$(DEFBIN)/users 11 | $(STRIP) $(ROOT)$(DEFBIN)/users 12 | $(MANINST) -c -m 644 users.1 $(ROOT)$(MANDIR)/man1/users.1 13 | 14 | clean: 15 | rm -f users users.o core log *~ 16 | -------------------------------------------------------------------------------- /users/users.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)users.1 1.2 (gritter) 10/26/03 3 | .TH USERS 1 "10/26/03" "Heirloom Toolchest" "User Commands" 4 | .SH NAME 5 | users \- display a compact list of users logged in 6 | .SH SYNOPSIS 7 | \fBusers\fR [\fIfile\fR] 8 | .SH DESCRIPTION 9 | .I Users 10 | gives a on-line summary of the names of users 11 | currently logged in. 12 | If a 13 | .I file 14 | argument is given, 15 | .I users 16 | uses this file to get the list of users instead of 17 | .BR /var/run/utmp. 18 | .SH "SEE ALSO" 19 | who(1) 20 | -------------------------------------------------------------------------------- /wall/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: wall 2 | 3 | wall: wall.o 4 | $(LD) $(LDFLAGS) wall.o $(LCOMMON) $(LIBS) -o wall 5 | 6 | wall.o: wall.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(ICOMMON) -c wall.c 8 | 9 | install: all 10 | $(UCBINST) -c wall $(ROOT)$(DEFSBIN)/wall 11 | $(STRIP) $(ROOT)$(DEFSBIN)/wall 12 | $(MANINST) -c -m 644 wall.1m $(ROOT)$(MANDIR)/man1m/wall.1m 13 | 14 | clean: 15 | rm -f wall wall.o core log *~ 16 | -------------------------------------------------------------------------------- /wall/wall.1m: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)wall.1m 0.1 (takusuman) 9/26/24 3 | .\" Parts taken from wall(1m), Unix 32V: 4 | .\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. 5 | .\" 6 | .\" SPDX-Licence-Identifier: Caldera 7 | .\" 8 | .TH WALL 1M "09/26/24" "Heirloom Toolchest" "Maintenance Commands" 9 | .SH NAME 10 | wall \- write to all users 11 | .SH SYNOPSIS 12 | .B wall 13 | [\fIfile\fR] 14 | .SH DESCRIPTION 15 | .I Wall 16 | reads its standard input until an end-of-file. 17 | It then sends this message, 18 | preceded by 19 | `Broadcast Message ...', 20 | to all logged in users. 21 | .PP 22 | The sender should be super-user to override 23 | any protections the users may have invoked. 24 | .SH FILES 25 | /dev/tty? 26 | .br 27 | /var/adm/utmp 28 | .SH "SEE ALSO" 29 | mesg(1), write(1), utmp(5) 30 | .SH DIAGNOSTICS 31 | `Cannot send to ...' when the open on 32 | a user's tty file fails. 33 | -------------------------------------------------------------------------------- /watch/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: watch 2 | 3 | watch: watch.o 4 | $(LD) $(LDFLAGS) watch.o $(LCURS) $(LCOMMON) $(LIBS) -o watch 5 | 6 | watch.o: watch.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(ICOMMON) -c watch.c 8 | 9 | install: all 10 | $(UCBINST) -c watch $(ROOT)$(DEFBIN)/watch 11 | $(STRIP) $(ROOT)$(DEFBIN)/watch 12 | $(MANINST) -c -m 644 watch.1 $(ROOT)$(MANDIR)/man1/watch.1 13 | 14 | clean: 15 | rm -f watch watch.o core log *~ 16 | -------------------------------------------------------------------------------- /watch/debug.txt: -------------------------------------------------------------------------------- 1 | Exit code: ec = 256 2 | -------------------------------------------------------------------------------- /wc/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: wc wc_sus wc_s42 2 | 3 | wc: wc.o 4 | $(LD) $(LDFLAGS) wc.o $(LCOMMON) $(LWCHAR) $(LIBS) -o wc 5 | 6 | wc.o: wc.c 7 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c wc.c 8 | 9 | wc_sus: wc_sus.o 10 | $(LD) $(LDFLAGS) wc_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o wc_sus 11 | 12 | wc_sus.o: wc.c 13 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DSUS -c wc.c -o wc_sus.o 14 | 15 | wc_s42: wc_s42.o 16 | $(LD) $(LDFLAGS) wc_s42.o $(LCOMMON) $(LWCHAR) $(LIBS) -o wc_s42 17 | 18 | wc_s42.o: wc.c 19 | $(CC) $(CFLAGS2) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DS42 -c wc.c -o wc_s42.o 20 | 21 | install: all 22 | $(UCBINST) -c wc $(ROOT)$(SV3BIN)/wc 23 | $(STRIP) $(ROOT)$(SV3BIN)/wc 24 | $(UCBINST) -c wc_sus $(ROOT)$(SUSBIN)/wc 25 | $(STRIP) $(ROOT)$(SUSBIN)/wc 26 | $(UCBINST) -c wc_s42 $(ROOT)$(S42BIN)/wc 27 | $(STRIP) $(ROOT)$(S42BIN)/wc 28 | $(MANINST) -c -m 644 wc.1 $(ROOT)$(MANDIR)/man1/wc.1 29 | 30 | clean: 31 | rm -f wc wc.o wc_sus wc_sus.o wc_s42 wc_s42.o core log *~ 32 | -------------------------------------------------------------------------------- /what/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: what 2 | 3 | what: what.o 4 | $(LD) $(LDFLAGS) what.o $(LCOMMON) $(LIBS) -o what 5 | 6 | what.o: what.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c what.c 8 | 9 | install: all 10 | $(UCBINST) -c what $(ROOT)$(DEFBIN)/what 11 | $(STRIP) $(ROOT)$(DEFBIN)/what 12 | $(MANINST) -c -m 644 what.1 $(ROOT)$(MANDIR)/man1/what.1 13 | 14 | clean: 15 | rm -f what what.o core log *~ 16 | -------------------------------------------------------------------------------- /who/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: who who_sus 2 | 3 | who: who.o 4 | $(LD) $(LDFLAGS) who.o $(LCOMMON) $(LWCHAR) $(LIBS) -o who 5 | 6 | who.o: who.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c who.c 8 | 9 | who_sus: who_sus.o 10 | $(LD) $(LDFLAGS) who_sus.o $(LCOMMON) $(LWCHAR) $(LIBS) -o who_sus 11 | 12 | who_sus.o: who.c 13 | $(CC) $(CFLAGS) $(CPPFLAGS) $(GNUFL) $(LARGEF) $(IWCHAR) $(ICOMMON) -DSUS -c who.c -o who_sus.o 14 | 15 | install: all 16 | $(UCBINST) -c who $(ROOT)$(SV3BIN)/who 17 | $(STRIP) $(ROOT)$(SV3BIN)/who 18 | $(UCBINST) -c who_sus $(ROOT)$(SUSBIN)/who 19 | $(STRIP) $(ROOT)$(SUSBIN)/who 20 | $(MANINST) -c -m 644 who.1 $(ROOT)$(MANDIR)/man1/who.1 21 | 22 | clean: 23 | rm -f who who.o who_sus who_sus.o core log *~ 24 | -------------------------------------------------------------------------------- /whoami/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: whoami 2 | 3 | whoami: whoami.o 4 | $(LD) $(LDFLAGS) whoami.o $(LCOMMON) $(LWCHAR) $(LIBS) -o whoami 5 | 6 | whoami.o: whoami.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c whoami.c 8 | 9 | install: all 10 | $(UCBINST) -c whoami $(ROOT)$(DEFBIN)/whoami 11 | $(STRIP) $(ROOT)$(DEFBIN)/whoami 12 | $(MANINST) -c -m 644 whoami.1 $(ROOT)$(MANDIR)/man1/whoami.1 13 | 14 | clean: 15 | rm -f whoami whoami.o core log *~ 16 | -------------------------------------------------------------------------------- /whoami/whoami.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)whoami.1 1.1 (gritter) 10/26/03 3 | .TH WHOAMI 1 "10/26/03" "Heirloom Toolchest" "User Commands" 4 | .SH NAME 5 | whoami \- display the effective current username 6 | .SH SYNOPSIS 7 | \fBwhoami\fR 8 | .SH DESCRIPTION 9 | .I Whoami 10 | prints the user name associated 11 | with its effective user id. 12 | If invoked after 13 | .IR su (1), 14 | the newly assumed name is printed, 15 | instead of the name previously used for logging in. 16 | .SH "SEE ALSO" 17 | id(1), 18 | who(1) 19 | -------------------------------------------------------------------------------- /whoami/whoami.c: -------------------------------------------------------------------------------- 1 | /* 2 | * whoami - display the effective current username 3 | * 4 | * Gunnar Ritter, Freiburg i. Br., Germany, October 2003. 5 | */ 6 | /* 7 | * Copyright (c) 2003 Gunnar Ritter 8 | * 9 | * SPDX-Licence-Identifier: Zlib 10 | */ 11 | 12 | #if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 13 | #define USED __attribute__ ((used)) 14 | #elif defined __GNUC__ 15 | #define USED __attribute__ ((unused)) 16 | #else 17 | #define USED 18 | #endif 19 | static const char sccsid[] USED = "@(#)whoami.sl 1.3 (gritter) 5/29/05"; 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | int 26 | main(int argc, char **argv) 27 | { 28 | struct passwd *pw; 29 | 30 | if ((pw = getpwuid(geteuid())) != NULL) { 31 | puts(pw->pw_name); 32 | return 0; 33 | } else { 34 | puts("Intruder alert."); 35 | return 1; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /whodo/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: whodo 2 | 3 | whodo: whodo.o 4 | $(LD) $(LDFLAGS) whodo.o $(LCOMMON) $(LWCHAR) $(LKVM) $(LIBS) -o whodo 5 | 6 | whodo.o: whodo.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) $(IWCHAR) $(ICOMMON) -c whodo.c 8 | 9 | install: all 10 | $(UCBINST) -c whodo $(ROOT)$(DEFBIN)/whodo 11 | $(STRIP) $(ROOT)$(DEFBIN)/whodo 12 | rm -f $(ROOT)$(DEFBIN)/w $(ROOT)$(DEFBIN)/uptime 13 | $(LNS) whodo $(ROOT)$(DEFBIN)/w 14 | $(LNS) whodo $(ROOT)$(DEFBIN)/uptime 15 | $(MANINST) -c -m 644 whodo.1 $(ROOT)$(MANDIR)/man1/whodo.1 16 | $(MANINST) -c -m 644 w.1 $(ROOT)$(MANDIR)/man1/w.1 17 | $(MANINST) -c -m 644 uptime.1 $(ROOT)$(MANDIR)/man1/uptime.1 18 | 19 | clean: 20 | rm -f whodo whodo.o core log *~ 21 | -------------------------------------------------------------------------------- /whodo/uptime.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)uptime.1 1.5 (gritter) 4/17/03 3 | .\" partially derived from 4.2BSD's uptime(1) 4 | .\" Copyright (c) 2003 Gunnar Ritter 5 | .\" 6 | .\" SPDX-Licence-Identifier: Zlib 7 | .\" 8 | .TH UPTIME 1 "4/17/03" "Heirloom Toolchest" "User Commands" 9 | .SH NAME 10 | uptime \- show how long system has been up 11 | .SH SYNOPSIS 12 | uptime 13 | .SH DESCRIPTION 14 | Uptime prints the current time, 15 | the length of time the system has been up, 16 | and the average number of jobs in the run queue 17 | over the last 1, 5 and 15 minutes. 18 | It is, essentially, the first line of a 19 | .IR w (1) 20 | command. 21 | .SH FILES 22 | .TP 23 | .B /proc 24 | list of processes 25 | .TP 26 | .B /var/run/utmp 27 | list of active logins 28 | .SH "SEE ALSO" 29 | w(1), 30 | proc(5), 31 | utmp(5) 32 | -------------------------------------------------------------------------------- /write/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: write 2 | 3 | write: write.o 4 | $(LD) $(LDFLAGS) write.o $(LCOMMON) $(LWCHAR) $(LIBS) -o write 5 | 6 | write.o: write.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(ICOMMON) -DSHELL='"$(SHELL)"' -c write.c 8 | 9 | install: all 10 | $(UCBINST) -c write $(ROOT)$(DEFBIN)/write 11 | $(STRIP) $(ROOT)$(DEFBIN)/write 12 | $(MANINST) -c -m 644 write.1 $(ROOT)$(MANDIR)/man1/write.1 13 | 14 | clean: 15 | rm -f write write.o core log *~ 16 | -------------------------------------------------------------------------------- /xargs/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: xargs 2 | 3 | xargs: xargs.o 4 | $(LD) $(LDFLAGS) xargs.o $(LCOMMON) $(LWCHAR) $(LIBS) -o xargs 5 | 6 | xargs.o: xargs.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c xargs.c 8 | 9 | install: all 10 | $(UCBINST) -c xargs $(ROOT)$(DEFBIN)/xargs 11 | $(STRIP) $(ROOT)$(DEFBIN)/xargs 12 | $(MANINST) -c -m 644 xargs.1 $(ROOT)$(MANDIR)/man1/xargs.1 13 | 14 | clean: 15 | rm -f xargs xargs.o core log *~ 16 | -------------------------------------------------------------------------------- /yes/Makefile.mk: -------------------------------------------------------------------------------- 1 | all: yes 2 | 3 | yes: yes.o 4 | $(LD) $(LDFLAGS) yes.o $(LCOMMON) $(LIBS) -o yes 5 | 6 | yes.o: yes.c 7 | $(CC) $(CFLAGS) $(CPPFLAGS) $(XO5FL) -c yes.c 8 | 9 | install: all 10 | $(UCBINST) -c yes $(ROOT)$(DEFBIN)/yes 11 | $(STRIP) $(ROOT)$(DEFBIN)/yes 12 | $(MANINST) -c -m 644 yes.1 $(ROOT)$(MANDIR)/man1/yes.1 13 | 14 | clean: 15 | rm -f yes yes.o core log *~ 16 | -------------------------------------------------------------------------------- /yes/yes.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Sccsid @(#)yes.1 1.2 (gritter) 12/25/06 3 | .TH YES 1XNX "12/25/06" "Heirloom Toolchest" "XENIX System Compatibility" 4 | .SH NAME 5 | yes \- (XENIX) print string repeatedly 6 | .SH SYNOPSIS 7 | \fByes\fR [\fIstring\fR] 8 | .SH DESCRIPTION 9 | The 10 | .I yes 11 | command prints the given string 12 | (or `y' if no string is given) 13 | repeatedly until it is aborted. 14 | -------------------------------------------------------------------------------- /yes/yes.c: -------------------------------------------------------------------------------- 1 | /* 2 | * yes.c - repeatedly print a string or "y" if no arguments 3 | * 4 | * Rewritten from scratch, `main` takes up 10 less instructions when compiled 5 | * with gcc -O3 and should also be faster 6 | */ 7 | /* 8 | * Copyright (C) 2022: Arthur Bacci (arthurbacci) 9 | * 10 | * SPDX-Licence-Identifier: Zlib 11 | */ 12 | 13 | #include 14 | 15 | int main(int argc, char **argv) { 16 | /* Defining it before looping for the comparison to be executed a single 17 | time */ 18 | const char *to_print = argc > 1 ? argv[1] : "y"; 19 | 20 | while (puts(to_print) != EOF); 21 | 22 | /* Always return error since it can only stop if it couldn't write */ 23 | return 1; 24 | } 25 | --------------------------------------------------------------------------------