Commit Graph

1542 Commits

Author SHA1 Message Date
tg
9b8d4023fa … but since I liked the bonus of having the hval stored so much, merge
it with the array index; var.c says that
│ 1244         /* The table entry is always [0] */
so that we can have a special flag and a union which stores hval for
the table index, the array index otherwise (coïncidentally *hint hint*
they have the same size)
2009-08-28 21:01:27 +00:00
tg
bb7a720a00 for now, until we really use kt*() otherwise, ifdef out tablep/hval 2009-08-28 20:38:43 +00:00
tg
4ccdfc8508 much better solution: save tablep and hash value¹ in the struct tbl entry
① also saves time during texpand :D

XXX this doesn’t work well with the current indexed-array implementation
2009-08-28 20:30:59 +00:00
tg
7240c843ce this is a rather stupid diff: give ktsearch/ktenter the capability to
return information needed to do a real ktremove instead of the pseudo
ktdelete operation which merely unsets the DEFINED flag to mark it as
eligible for texpand garbage collection (even worse, !DEFINED entries
are still counted)
2009-08-28 19:57:43 +00:00
tg
cd7f3fd836 another int→bool 2009-08-28 19:16:17 +00:00
tg
2cda4dd7bb this wants a size_t (but ssize_t is enough, since order(size_t) elements
is pretty much impossible… I estimate at most a million, but not more
than 16 million, array or keytab entries)
2009-08-28 18:59:01 +00:00
tg
ca1f967a45 • use Jenkins’ one-at-a-time hash for mksh keytabs, as it has
much better avalanche and no known funnels
• improve comments
• fix some types (uint32_t for hash, size_t for sizes)
• optimise ktsort()

no functional change, I think
2009-08-28 18:54:01 +00:00
tg
8f937ec71b shuffle fields of struct tbl around for better padding results 2009-08-28 18:33:05 +00:00
tg
aec424e631 rpmlint says that one scn.c is compiled without rpm’s $CFLAGS
it’s probably right, except, maybe it was from a CPP invocation
nevertheless it now will never call $CC without $CFLAGS et al.
2009-08-28 17:37:47 +00:00
tg
345030a578 we need more RCS IDs! 2009-08-27 16:52:12 +00:00
tg
b5b5d905b0 various fixes and optimisations:
• ensure unsigned arithmetics is used in the cdb hash
• make the hash functions print their result again
• now we can use the Lb64{en,de}code trick of using stdin if "$*"==""
• optimise the one-at-a-time code for shell
2009-08-27 16:40:08 +00:00
tg
4c1a99da7c implement Jenkins’ one-at-a-time hash, which has better avalanche
behaviour than DJB’s CDB hash (good if using more than one byte)
and probably no funnels

the CDB hash is good for short (5-6 char) ASCII keys though
2009-08-27 16:29:21 +00:00
tg
fb6d8cd895 this is Korn Shell, not C – less ops are always faster than many fast ops 2009-08-27 16:03:52 +00:00
tg
a95b90b79f add the keyword “colour” to the PS1 example, since it wasn’t found in
here in either spelling and smultron@ wanted to see how it’s done
2009-08-14 09:00:30 +00:00
tg
56d51abd1f need <sys/types.h> for mode_t 2009-08-08 13:52:35 +00:00
tg
0e1266ef90 While mksh R39 builds fine on MirOS #7s8E on my trusty sparc, pgcc 2.95.3
throws out quite some warnings – fix most of them except most emitted via
-Wconversion; work around some others; discard bogus warnings.

sync clog
2009-08-08 13:08:53 +00:00
tg
0d750bba12 Linux libc5 has some function protos in weird places 2009-08-01 21:58:06 +00:00
tg
cc4af7b17e some bit of advice 2009-08-01 21:57:52 +00:00
tg
5cc1722967 ULTRIX, OSF/1, Tru64, Linux 2.0: uint8_t check must come *before* the
arc4random.c source file is added to $LIBS (and related checks)
2009-08-01 21:52:02 +00:00
tg
a49d855ab2 ash 0.2 (ecce!GNU/Linux 1.05) chokes on such "long" echo statements... 2009-08-01 21:51:24 +00:00
tg
587822eb4a *curses* ensure all ‘!’ are quoted, ash 0.2, ecce!GNU/Linux 1.05 2009-08-01 20:58:07 +00:00
tg
ed0299042c more use of memcpy(3) when we know destination and source sizes 2009-08-01 20:32:45 +00:00
tg
66b4399881 use sizeof 2009-08-01 20:31:47 +00:00
tg
68f9bfa689 if duplicating strings, it’s idiotic to use strlcpy(3) when we know
the sizes (checked)
2009-08-01 20:29:25 +00:00
tg
cfa64cebd1 arc4random.c needs uint8_t
tested on ULTRIX
2009-08-01 20:29:02 +00:00
tg
0c2555e5c2 utfincptr is a no-op in !UTFMODE, yet I had the “if (UTFMODE)” not only
commented out for mksh R38* but also used // denoting a temporary, de-
bugging-only, code exclusion which never should have been in the wild

Caught by ucode cc on DEC ULTRIX (where else?), thanks DEChengst ☻☺
2009-08-01 19:31:02 +00:00
tg
c172cdc922 bump version and rebuild+check on MirBSD 2009-08-01 14:21:30 +00:00
tg
7f5ce5e5ba oops, fix adding arc4random.c to SRCS 2009-08-01 14:12:13 +00:00
tg
0bd3e05b9c fix another warning from
gcc version 4.5.0 20090718 (experimental) [trunk revision 149777] (Debian 20090718-1)
caused by over-optimisation
2009-08-01 14:07:42 +00:00
tg
848edc698c sync cleandir target 2009-07-30 19:18:06 +00:00
tg
cb2fd22c38 "official" but unsupported printf-as-builtin code, cleaner API than
in the branch; USE_PRINTF_BUILTIN=1 to enable it (Build.sh + Makefile)
2009-07-30 19:11:12 +00:00
tg
918aca2c45 * add __COPYRIGHT
* if MirBSD is recent enough, use OS' RCSID macros
2009-07-30 18:42:31 +00:00
tg
758dc5c6fe * improve CPPFLAGS vs #define handling again: do not touch CPPFLAGS from
Build.sh but use 'if defined(PRECOND) && !defined(TOBEDEFINED)'if possible
* for all of the source code, drop annotations "imake style" (if we check
  for specific OSes, bad, instead of using mirtoconf checks proper) and
  "conditions correct?" (if I'm not entirely sure if that #if catches all
  cases and no false positives) where I can see it by grepping immediately
* bump mksh patchlevel
* refresh Makefiles
2009-07-25 21:31:27 +00:00
tg
cfe6688a36 in an interesting piece of self humour, remove the stop and suspend
aliases from shells requiring the Arbeitsamt to get a job ;-)
2009-07-25 20:52:41 +00:00
tg
ac148debe8 another duplicate defn avoidance 2009-07-25 20:35:22 +00:00
tg
bcf4080793 improve MKSH_NOPWNAM handling, whether MKSH_SMALL or not; it will cause
the entire ~fac/ expansion code to be omitted
2009-07-25 20:26:33 +00:00
tg
5e3aba8b00 simplify MKSH_SMALL => MKSH_CONSERVATIVE_FDS handling 2009-07-25 20:18:13 +00:00
tg
48c84b6c62 avoid a redefinition warning if MKSH_SMALL and MKSH_NOPWNAM both given 2009-07-25 20:17:47 +00:00
tg
0a77903f53 allow overriding -DMKSH_SMALL with HAVE_PERSISTENT_HISTORY=x too 2009-07-25 20:04:09 +00:00
tg
c7b8b512a8 restructure the build system: new ac_ifcpp macro for _reliably_ determining
the state of the C Præprocessor at configuration time (simple checks, i.e.
set/unset, set+1/set+!1/unset, and more complex checks), including verbose
output; related cosmetics and variable naming cleanup
2009-07-19 14:59:40 +00:00
tg
45cac320e0 sync more tests with GNU bash2 (MirPorts), bash3 (sid), bash4 (experimental) 2009-07-19 11:14:28 +00:00
tg
0ce8f6fa39 bash4 expands 「echo ~/foo」 even if the ~ is generated by a substitution;
add appropriate quotes and mention that bash_4.0-3 (experimental) succeeds
2009-07-19 11:03:18 +00:00
tg
b42582689f ABI bump to R39: adhere to the future POSIX standard regarding -o nounset;
add appropriate regression test (except $_ *is* unset in non-interactive
shells). See the thread at:
http://article.gmane.org/gmane.os.miros.general/8863
2009-07-16 15:06:45 +00:00
tg
e42e775d9b sync special commands list (XXX why is alias there twice? pdksh.deb too…) 2009-07-08 10:37:24 +00:00
tg
db98d5e964 Nils Weller says to not use nwcc -stackprotect 2009-07-07 20:36:58 +00:00
tg
649eaa7244 nwcc accepts -std=gnu99 (but doesn't process it yet) and -Wall 2009-07-07 18:42:47 +00:00
tg
fca27ce872 fix cast warnings discovered by nwcc, and work around const optimisation
related over-zealous warnings by using a non-const integer value
2009-07-07 18:39:51 +00:00
tg
d162ed09a4 remove tack workarounds, for now 2009-07-07 18:38:49 +00:00
tg
30b1c9b2c0 prepare for ACK on GNU/Linux 2009-07-07 18:34:21 +00:00
tg
f349aeab3c be more robust against things like Debian #535970
reverts and rewrites the code from cid 10047C1EBA57E4F4AF0

XXX find out if this is done right
2009-07-06 15:06:25 +00:00