Commit Graph

148 Commits

Author SHA1 Message Date
tg
56c6e384e6 (experimental) implement getrusage via times if not found 2009-04-03 09:39:07 +00:00
tg
ca539f08f0 remove espie's double-linked-list based allocator and write a
similarily simple one from scratch, which however performs
better than espie's with AFREE_DEBUG enabled which took away
the benefit of the double-linked-list approach

all of (core) mksh is now MirOS licenced
2009-03-22 16:55:38 +00:00
tg
31d1499219 * back out almost all of the memory allocator related changes, as aalloc
was hard to type and hard to fix, galloc is also hard to fix, and some
  things I learned will probably improve things more but make me use the
  original form as base (especially for space savings)
* let sizeofN die though, remove even more casts
* optimise, polish
* regen Makefiles
* sprinkle a few /* CONSTCOND */ while here
2008-12-13 17:02:18 +00:00
tg
d97691ca61 by the principle of the working tree, we cannot enable aalloc as of now.
damn, pointers in C are so uselessly complicated… in asm it’s much easier
2008-11-17 01:14:57 +00:00
tg
90e8e7ea72 rewrite the cookie logic… while this is better than previously,
we still have issues:

(gdb) r
Starting program: /usr/obj/bin/mksh/mksh -c print\ \$KSH_VERSION
mksh in free(): error: modified (chunk-) pointer

Program received signal SIGABRT, Aborted.
2008-11-15 11:42:18 +00:00
tg
255c77ff32 use -DAALLOC_TRACK in MirOS-current but not releases, similar to
-DMKSH_AFREE_DEBUG, which is even similar in functionality

cost 412 code, 32 bss
2008-11-12 07:38:42 +00:00
tg
d099b00b53 leave at least a working tree, with zero-penalty -DAALLOC_NO_COOKIES
XXX cookies are still broken?

cost for aalloc.c: data -= (4, 0, 4, 0); text += (1665, ?, 2115, 2217)
2008-11-12 07:36:19 +00:00
tg
d15671f6f6 fix first batch of compile warnings, enable aalloc for mirbsd 2008-11-12 04:59:42 +00:00
tg
17ecb986c8 regenerate CPPFLAGS 2008-11-02 22:42:37 +00:00
tg
88d7b7d08b • rewrite code to no longer use statements-as-expressions
• optimise a little
• Build.sh: remove HAVE_EXPSTMT test
• Build.sh, */Makefile: sort tests, regenerate
• mksh.hts: sync clog
2008-10-28 14:32:43 +00:00
tg
5167e7398b sync MirBSD-specific mksh Makefiles after recent Build.sh changes 2008-10-26 22:03:05 +00:00
tg
94b7792718 use mksh realpath builtin instead of readlink -f for canonicalisation
note: there’s still a readlink(1) call left in, for instance, mirmake;
this does not hurt because we initially assumed that readlink(1) does
exist anyway and bundled ours just because some do not have the ‘-f’
option for realpath(2)isation
2008-10-05 16:26:13 +00:00
tg
a30066cd6f run millert’s afree checker by default (idea from openbsd) if MirOS-current
and not MirOS-stable (via DEBUGLIBS from <bsd.own.mk>)
2008-08-02 17:40:37 +00:00
tg
5d73013c02 remove check_category “pdksh”, it starts to make trouble and was never
taken seriously anyway, just historic ballast
2008-06-21 19:20:15 +00:00
tg
b41a72ac2e add new builtin “realpath” calling realpath(3) on its argument, skipping
over “--” for compatibility to Debian realpath(1) and possibly busybox’

“sounds handy” replaced@TNF
2008-05-17 18:27:57 +00:00
tg
604ec0ff6c remove dead code and ifdefs, speed up configuring 2008-05-04 01:51:31 +00:00
tg
d6f3f726a6 clean up unused defines 2008-04-20 02:15:12 +00:00
tg
aacc0b2179 • Build.sh: be a little more explicit about the unknown compilers
• Build.sh: add another one
• */Makefile: sync CPPFLAGS
2008-03-27 22:44:17 +00:00
tg
def9c172df • Add support for Ultrix 4.5 and ucode cc (?)
‣ I/O redirection seems broken:
    $ (date; date >/dev/null; date) | wc -l
    1 (expected: 2)
  ‣ other than that: working fine
  ‣ -YBSD (default) and -YSYSTEM_FIVE don’t work, just -YPOSIX, somehow
• Fix $(…) to `…` for OSF/1 V2.0 /bin/sh
  ‣ this compiler is FUBAR though:
	$ cat >t.c
	main() { return (foo()); }
	$ cc t.c
	ld:
	Unresolved :
	foo
	$ echo $?
	0
	$ ls -l a.out
	-rwxr-xr-x   1 mirbsd   users      10835 Jul 21 17:12 a.out
  ‣ it seems to have ucode, but man is not installed
• new mirtoconf check: mkstemp(3)
• if !HAVE_MKSTEMP (Ultrix), use tempnam(3)
• only use printf(1) if it exists (it doesn’t on Ultrix)
• a few more signals
• add S_ISLNK if the OS doesn’t define it
• add strcasecmp(3) proto for Ultrix (it _is_ in <portability.h>, but
  only for -YBSD I think)
• fgrep(1) on Ultrix doesn’t do “-e ① -e ②”

10x DEChengst:#UnixNL for giving access
2008-03-25 21:34:45 +00:00
tg
845f6f0d64 • check for flock decl too (weird on OSF/1: if !POSIX and BSD)
• un-experimental Tru64
2008-03-05 18:49:15 +00:00
tg
3d9bd0e1f0 OSF/1 doesn’t seem to declare revoke(2) anywhere 2008-03-05 17:06:50 +00:00
tg
8d170a3d01 fix on Interix, where tr(1) is more weird than even Solaris’ XPG4 one…
just do not use ranges, no matter what.
2008-02-29 16:38:41 +00:00
tg
d17e25c7f4 fix passing of env var to regression tests 2008-02-29 11:57:30 +00:00
tg
6d2a011a93 be more quiet at test-build time 2007-10-25 14:43:02 +00:00
tg
f8ead8ae27 sync w/ current Build.sh 2007-10-14 13:36:40 +00:00
tg
87eeeb6da0 revert the -std=gnu99–by–default change until programmes are ready, as this
is too much annoying (for now) – extra commit so that we have a changeset
2007-08-24 14:25:33 +00:00
tg
c8ac9422f9 • add -std=gnu99 to default CFLAGS
• first round of assorted fixes
2007-08-24 14:19:56 +00:00
tg
499327f7b8 add “set -o arc4random”, RTFM for details 2007-08-12 13:42:23 +00:00
tg
496b8f4dc3 • new way of checking for mknod & friends, due to tcc vs glibc weirdness
• bump vsn for the code restructuring
2007-07-31 11:11:25 +00:00
tg
f948c13a78 • fix display problem
• add <libutil.h> if it exists – revoke(2) on UWIN
• add <stdlib.h> for NULL in test of mmap(2)
• regen CPPFLAGS for MirBSD native builds
2007-07-01 21:47:08 +00:00
tg
91431e4cf6 with this, we don't need the special list of pre-known signal names
any more either, and can make use of code sharing between detection
of sys_siglist and sys_signame (and the underscored variants); nuke
the now-useless signames.c file too (merge struct into histrap.c)
2007-06-05 21:47:49 +00:00
tg
63c31c43e3 fix for the SUNpro 8 on yofuh's E420:
cc: Sun C 5.8 Patch 121015-04 2007/01/10
2007-06-05 19:48:47 +00:00
tg
dee38c5be7 sync 2007-06-04 21:55:38 +00:00
tg
6e1bfd6e4b When compiling native MirOS BSD binaries with SUNpro 12 (don't look like a
car only slower, yes this is possible, and the resulting binary passes the
testsuite just fine), the definition of __RCSID() in <sys/cdefs.h> expands
to something with __attribute__((used)), which triggers a warning, because
__attribute__ in general is supported but the used attribute isn't. Thusly
always use our own strings and get rid of the MULTI_RCSID test (introduced
because __RCSID() on Darwin is inferiour).

Maybe we should fix <sys/cdefs.h> too? #ifdef __SUNPRO_C helps here.
2007-06-04 21:27:53 +00:00
tg
63623bb479 we don't have -d in mksh R30β any more 2007-05-24 09:06:31 +00:00
tg
1a0b51b697 • arc4random, arc4random_push: use our own protos to check
XXX u_int32_t is not ISO C99, but seems to work well enough
  XXX if it fails anywhere, we'll see in the build logs
  XXX apple doesn't have the standard uint32_t and API doesn't specify it
• sys_siglist_defn: rename to sys_siglist_decl as we're really checking
  for the declaration in the headers; change wording to “check if … does
  not need to be declared” since we don't need to declare if we don't use
• scan for arc4random, arc4random_push, confstr declarations too
• sh.h: confstr declaration is no longer #ifdef __sun__; sort
2007-04-24 10:42:02 +00:00
tg
615a7794a6 AIX has sys_siglist[] but doesn't define it anywhere, so add a means to
scan for defns and use it here; bug reported by Kurt Telep
2007-04-23 20:37:16 +00:00
tg
c79cacdfa5 • from a MirOS point of view:
place most stuff from /etc/profile in /etc/skel/.mkshrc; admins must make
  sure to copy this file to users' homes on upgrade (benefit: non-login but
  interactive shells also get all the goodies); fix some quoting; simplify,
  reformat, change comments
• from an mksh point of view:
  slight internal changes in dot.mkshrc; external commands are now prefixed
  with “ulimit -c 0”; $TERM is defined; improvement in determining the host
  name (e.g. on Debian if a FQDN is not given); declare locals as such both
  in $PS1 and outside; remove superfluous quoting, quote properly; simplify
  hd alias, add rot13 alias; place RCS ID at the bottom
2007-04-16 18:54:37 +00:00
tg
0a20bb8dd4 • Minix 3 doesn't have <sys/mman.h>
• Some OSes might need <stdint.h> for int32_t (Minix 3 with GCC)
2007-03-04 04:36:45 +00:00
tg
83c2ee87f4 • remove strcasestr.c, use home-grown implementation¹, call it stricmp,
and have it return an API-correct const char *
• enhance and stylify comments
• a little KNF and simplifications
• #ifdef DEBUG: replace strchr and strstr with ucstrchr and ucstrstr
  that take and return a non-const char *, and fix the violations
• new cstrchr, cstrstr (take and give const char *)
• new vstrchr, vstrstr (take const or not, give boolean value)
• new afreechk(x) = afreechv(x,x) = if (x1) afree(x2, ATEMP)
• new ksh_isdash(str) = (str != NULL) && !strcmp(str, "-")
• replace the only use of strrchr with inlined code to shrink
• minor man page fixes
• Minix 3 signames are autogenerated with gcc
• rename strlfun.c to strlcpy.c since we don't do strlcat(3) anyway,
  only strlcpy(3), and shorten it
• dot.mkshrc: move MKSH=… down to the export line
  to not disturb the PS1 visual impression ☺
• dot.mkshrc: Lstripcom(): optimise
• bump version

¹) side effect from creating API-correct cstrchr, cstrstr, etc.
   uses goto so it must be better ☻

tested on mirbsd-current via both Makefile and Build.sh
2007-03-04 03:04:28 +00:00
tg
62b347a1b0 merge the const branch +- a few 2007-03-04 00:13:17 +00:00
tg
90af366ee0 sync 2007-03-03 21:48:33 +00:00
tg
e0e4c992fc • embed MKSH_ASSUME_UTF8 and MKSH_NEED_MKNOD in Build.sh
• have mksh with BSD makefiles always enable MKSH_ASSUME_UTF8
• sync BSD makefiles with Build.sh output
2007-02-18 16:24:13 +00:00
tg
a0fcdecb75 add new #ifdef MKSH_ASSUME_UTF8 which saves us from needing to
call setlocale() if we know the result will always be UTF-8
2007-02-10 21:59:15 +00:00
tg
6d157ffe47 autoscan for persistent history support 2007-01-18 16:05:05 +00:00
tg
7b903e4aa9 header overhaul: replace all #ifdef __OS__ with mirtoconf checks
(except the persistent history one)
2007-01-18 15:50:32 +00:00
tg
8df4639675 * new target 'test-build' to easily check Build.sh operation from mbsd
* regen CPPFLAGS+= stuff with 'test-build'
2007-01-18 01:24:46 +00:00
tg
65a2806e81 scan for revoke() 2007-01-17 23:27:47 +00:00
tg
af606537e2 if we don't have rlim_t, assume it's long 2007-01-17 23:18:55 +00:00
tg
ddd2dac47d * support old environments without libgen.h (ancient GNU/Linux)
and stdbool.h (ancient GNU/Linux; NetBSD® 1.6.1)
* __dead must come after, not before, to accomodate gcc 2.7.2.3
2007-01-17 22:51:47 +00:00
tg
ceb5a7dba0 check if __RCSID() can be used multiple times; req'd eg. on Mac 2007-01-17 21:42:23 +00:00
tg
cff011696e clean regress-dir before re-using 2007-01-12 01:11:03 +00:00
tg
2f15a11c55 Clean up the signal mess, saves 172 Bytes:
* 'sigseen' in Build.sh goes away
* Signal name existence is checked in this order:
  have our own¹ -> sys_signame[] -> _sys_signame[] -> build our own²
* Signal description existence is checked in this order:
  sys_siglist[] -> _sys_siglist[] -> strsignal() -> NULL³
¹ Predefined list of items, for operating systems where we
  cannot build² them, i.e. Plan 9 and Minix 3 (e.g. no $CPP -dD)
² The usual cpp(1) stuff
³ Changed later, see below
* Make $CPP test dependent on $NEED_MKSH_SIGNAME (others can
  be added here, this is not absolute)
* Make signal name list generation² dependent on $NEED_MKSH_SIGNAME
* Fix check if the generation worked
* Guarantee that sigtraps[*].name and sigtraps[*].mess are valid
  C strings; this makes the code shorter *and* removes a few pos-
  sible nil pointer dereferences
* Embed autoconf'd usages of sys_sig* / strsignal / mksh_sigpairs
  into inittraps()
* Check for each signal 0<=i<=NSIG that
  name is not NULL or "" -> replace with ("%d", i)
  mess is not NULL or "" -> replace with ("Signal %d", i)
  name does not start (case-insensitive) with "SIG" -> name += 3
* In gettrap(), fix check if signal name starts, case-sensitive
  or case-insensitive, depending on need, with "SIG" (bug from millert@)

Other changes:
* Build.sh: ac_test[n]() are documented
* Build.sh: ac_test[n]() can have negative prereqs as well now
* Build.sh: use <<-'EOF' consistently
* bump patchlevel to today
2007-01-12 00:25:40 +00:00
tg
623bf49f19 order the same way as Build.sh outputs them 2006-11-12 13:21:50 +00:00
tg
df01c5b051 strcasestr, oops 2006-11-12 13:19:06 +00:00
tg
a799f50fea scan for setresuid/setresgid and setgroups
no alternative implementation yet
2006-11-12 12:56:10 +00:00
tg
617950554f missed these 2006-11-09 15:03:56 +00:00
tg
0307ecb492 * instead of including <sys/cdefs.h> (not in Solaris), we hope <sys/types.h>
includes it for us
* autoconf-test for <sys/param.h> (not in SUSv3) existence
2006-11-09 00:11:39 +00:00
tg
11fbdb4378 implement autoconf tests for langstuff; sync date 2006-11-08 23:45:47 +00:00
tg
adbd7f4b74 fix native build 2006-11-08 23:24:49 +00:00
tg
1547b04e66 add new "set -o utf8-hack", currently no effect
set automatically on startup if we have locale functions (on MirOS)
2006-11-05 12:11:14 +00:00
tg
695503952f use an autoconf-like approach to check for arc4random(3)
after gecko2 told me his mac recently has it and I found
out that Interix has it in -lcrypt and soon -lmirmake (:
2006-08-26 20:30:27 +00:00
tg
d121622e84 remove GNUish 'check' target, we always use 'regress' 2006-08-01 12:46:01 +00:00
tg
85a4745978 switch /bin/sh to mksh
this at least gets us rid of a bunch of segfaults on freewrt openssl builds
2006-07-23 19:10:59 +00:00
tg
301066165b auto-test check.t:mkshrc-1 as well (verified to work) 2006-05-08 12:18:49 +00:00
tg
0b85dc1e81 remove USE_PRINTF hooks, it never worked anyway, and probably nobody
is going to fix it...
2005-10-21 11:44:25 +00:00
tg
30aed785bc fix up DEBUGLIBS and DEBUGPROGS 2005-10-20 12:47:49 +00:00
tg
1b081938fb * bump version
* disable DEBUGPROGS
2005-10-08 18:53:10 +00:00
tg
ef41b5dbdc disable printf(1) builtin for now, it's broken (yet irreproducible)
probably multiple i/o redirection, or stuff like that
2005-08-29 01:16:22 +00:00
tg
6c5d08ea6f * add printf(1) as mksh(1) builtin on MirOS
(or, more general, all systems using Makefile
  instead of Build.sh)
* document this fact
2005-08-26 22:03:56 +00:00
tg
5b1a2fe3a9 fix running of all tests 2005-05-23 14:48:21 +00:00
tg
7af5be731b * if __CRAZY, automatically add CDIAGFLAGS, and add them AFTER our
crazy warning options
* use it for mksh
2005-05-23 11:59:06 +00:00
tg
cd7b8bd79b Add mirbsdksh R21, which was developed in a temporary external CVS repo-
sitory whose ChangeLog follows. mksh R21 is licenced under the MirOS li-
cence, shown in "sh.h", and a two-clause UCB-style licence by Marc Espie
as shown in "alloc.c".

This executable is a fair bit smaller and shorter than our /bin/ksh that
it is designed to eventually replace (as /bin/sh hardlink), with the old
/bin/ksh to completely vanish. It is still in beta testing though, and I
don't think it will compile on other operating systems.

mksh R21 is a completely new port, bringing together the OpenBSD-current
/bin/ksh, the MirOS-current /bin/ksh and the older mksh R20 (which still
was portable, ocvs-based).
2005-05-23 03:06:10 +00:00
tg
d8d708aa45 * un-hook bin/ksh, usr.bin/xmlwf and lib/libexpat from the build
- expat as discussed with bsiegert@ today on the phone
  - ksh as announced earlier on the lists
* un-hook lib/libexpat from make includes
* remove /usr/include/{,open}ssl upgrade workaround from includes/Makefile
* nuke old bin/ksh
* nuke libexpat and xmlwf
2005-10-21 11:33:15 +00:00
tg
b65ac4d1e3 * merge bin and lib completely
* convert some ancient RCSID styles etc. to more modern stuff
* fix use of CDIAGFLAGS+=, CFLAGS+= and COPTS+= to the correct
  variant (include bsd.own.mk _then_ COPTS+=) so they're added
  after any user-specified flags
  (this is probably lurking in more places than I can imagine)
* fix some indenting, comments, etc.
* make stuff compile (fix warnings/errors)
* add script to review _all_ shlib_version after an openbsd import
* remove two more obsolete /usr/lib/debug/ references
* bin/ps: comment out some SMP code
2005-10-21 11:02:33 +00:00
tg
386c302d84 switch /bin/sh to nb-ash (without command line editing) 2005-08-29 20:54:39 +00:00
tg
34f975017d use "beforedepend" 2005-03-15 19:05:11 +00:00
tg
230e0aec14 CFLAGS vs COPTS vs CPPFLAGS cleanup 2005-03-15 18:58:32 +00:00
tg
a90702a5a1 Initial revision 2005-03-06 15:42:55 +00:00
tg
e8307f4a45 get rid of manually generated signal lists 2004-12-31 19:24:20 +00:00
tg
4c4a9323f8 unifdef: KSH
no binary change
2004-12-18 18:58:32 +00:00
tg
978a1d53a1 * reduce amount of empty lines
* replace some spaces by tabs
* shuffle code around (shrink)
2004-12-13 18:53:25 +00:00
tg
429f327c0a nuke some dead code 2004-12-13 16:50:52 +00:00
tg
97d9512149 bump to mksh R19 2004-12-10 18:12:32 +00:00
tg
7920708324 Initial revision 2004-12-10 18:12:29 +00:00
tg
ff8192c9b9 remove mail check functionality (everybody SANE uses uw, imaps and mbx now)
update notes
fix Build.sh
2004-11-10 17:13:11 +00:00
tg
582bb62b81 add to mksh the unique ability to spawn on a different VT 2004-10-31 22:28:43 +00:00
tg
78a5e1d662 fixes for stuff, better display of mksh version, etc. 2004-10-28 16:35:03 +00:00
tg
7ad780aa98 -Wall -Werror -W -pedantic clean 2004-10-28 11:03:24 +00:00
tg
547e103a78 correct MAN= entries for tbl and eqn sources
while here, enforce \${SHELL}, CPPFLAGS instead of CFLAGS, etc.
2004-07-15 16:21:04 +00:00
tg
381aa0285b use \$SHELL here, too 2004-06-03 12:37:07 +00:00
tg
712a3cc064 overhaul the random stuff ;-) 2004-05-24 19:06:55 +00:00
tg
b051c6e857 * merge OpenBSD 3.5-current
* retain local changes to ls and md5 (md4, hint hint)
* fix up ksh (limits - we still have 4096 bytes input buffer;
  random usage)
* fix manpages (mdX, ksh)
2004-05-23 12:47:01 +00:00
tg
138338c10d build process improvements
builds with -Werror -Wall and without -Wno-unused now
GNU now uses improvements and mkstemp, too
correct version variable for sh(1)
2004-04-07 17:14:13 +00:00
tg
cd4db2e965 Import OpenBSD as of today again (seems pretty stable, I hope)
Prominent changes: more bgpd, tcpmd5; tcpdump/isakmpd fixes
2004-01-26 16:55:10 +00:00
tg
3d7587ad85 Import OpenBSD source tree from CVS (anoncvs canada)
of roughly 12:00 UTC today. Bumps us to OpenBSD 3.4
and makes source/ports in sync. Hopefully.
2003-08-17 12:50:45 +00:00
tg
1a61c10126 Import the complete OpenBSD source tree (base system)
as of CTM delta 3496 (roughly 1200 UTC today) into the
vendor branch.
Attention: this is a big update. Don't even try to
build this system, OpenBSD 3.4-beta, yet on your own.
2003-08-11 17:45:54 +00:00
tg
a34b05d2e6 Import OpenBSD 3.3 source repository from CTM 3132 the first time
This opens an OpenBSD-mirabile (aka MirBSD) repository.

### MirBSD is:
# Copyright (c) 1982-2003 by Thorsten "mirabile" Glaser <x86@ePost.de>
# Copyright © 1968-2003  The authors of And contributors to UNIX®, the
#       C Language, BSD/Berkeley Unix; 386BSD, NetBSD 1.1 and OpenBSD.
#
# Anyone who obtained a copy of this work is hereby permitted to freely use,
# distribute, modify, merge, sublicence, give away or sell it as long as the
# authors are given due credit and the following notice is retained:
#
# This work is provided "as is", with no explicit or implicit warranty what-
# soever. Use it only at your own risk. In no event may an author or contri-
# butor be held liable for any damage, directly or indirectly, that origina-
# ted through or is caused by creation or modification of this work.

MirBSD is my private tree. MirBSD does not differ very much from OpenBSD
and intentionally tracks OpenBSD. That's why it _is_ OpenBSD, just not the
official one. It's like with DarrenBSD.

At time of this writing, no advertising for MirBSD must be done,
because the advertising clause has not yet been sorted out.

http://templeofhate.com/tglaser/MirBSD/index.php
2003-03-22 17:35:03 +00:00