From b27ece46a69aa7d5b9a759a2164609dab689f258 Mon Sep 17 00:00:00 2001
From: piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>
Date: Wed, 26 Mar 2008 17:26:28 +0000
Subject: (internal) refine directory layout: libbbs/libbbsutil ->
 common/bbs,sys.

git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4027 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
---
 mbbsd/Makefile |   6 +-
 mbbsd/random.c | 711 ---------------------------------------------------------
 mbbsd/time.c   |  20 --
 3 files changed, 3 insertions(+), 734 deletions(-)
 delete mode 100644 mbbsd/random.c
 delete mode 100644 mbbsd/time.c

(limited to 'mbbsd')

diff --git a/mbbsd/Makefile b/mbbsd/Makefile
index b46c3574..af0a28d6 100644
--- a/mbbsd/Makefile
+++ b/mbbsd/Makefile
@@ -87,8 +87,8 @@ LDFLAGS+=-Wl,--sort-common
 CFLAGS+= -DMERGEBBS
 OBJS+= merge.o
 .endif
-LIBS+=	$(SRCROOT)/src/libbbsutil/libbbsutil.a \
-	$(SRCROOT)/src/libbbs/libbbs.a
+LIBS+=	$(SRCROOT)/common/bbs/libcmbbs.a \
+	$(SRCROOT)/common/sys/libcmsys.a
 
 #######################################################################
 # Make Rules
@@ -117,7 +117,7 @@ initemaildb: emaildb.c
 	$(CC) -DINIT_MAIN $(CFLAGS) $(LDFLAGS) -o initemaildb emaildb.c $(LIBS)
 
 ctags:
-	ctags *.c ../include/*.h ../src/libbbs/*.c ../src/libbbsutil/*.c
+	ctags *.c ../include/*.h -R ../common
 
 test: $(PROG)
 	killall -9 testmbbsd || true
diff --git a/mbbsd/random.c b/mbbsd/random.c
deleted file mode 100644
index dd369c41..00000000
--- a/mbbsd/random.c
+++ /dev/null
@@ -1,711 +0,0 @@
-#ifdef __dietlibc__
-/* 
-   Copyright (C) 1995 Free Software Foundation
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/*
-   Copyright (C) 1983 Regents of the University of California.
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-   1. Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-   2. Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-   4. Neither the name of the University nor the names of its contributors
-      may be used to endorse or promote products derived from this software
-      without specific prior written permission.
-   
-   THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-   ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-   SUCH DAMAGE.*/
-
-/*
- * This is derived from the Berkeley source:
- *	@(#)random.c	5.5 (Berkeley) 7/6/88
- * It was reworked for the GNU C Library by Roland McGrath.
- * Rewritten to be reentrant by Ulrich Drepper, 1995
- */
-
-#include <errno.h>
-#include <limits.h>
-#include <stddef.h>
-#include <stdlib.h>
-struct random_data
-  {
-    int32_t *fptr;              /* Front pointer.  */
-    int32_t *rptr;              /* Rear pointer.  */
-    int32_t *state;             /* Array of state values.  */
-    int rand_type;              /* Type of random number generator.  */
-    int rand_deg;               /* Degree of random number generator.  */
-    int rand_sep;               /* Distance between front and rear.  */
-    int32_t *end_ptr;           /* Pointer behind state table.  */
-  };
-int __random_r (struct random_data *buf, int32_t *result);
-
-
-
-/* An improved random number generation package.  In addition to the standard
-   rand()/srand() like interface, this package also has a special state info
-   interface.  The initstate() routine is called with a seed, an array of
-   bytes, and a count of how many bytes are being passed in; this array is
-   then initialized to contain information for random number generation with
-   that much state information.  Good sizes for the amount of state
-   information are 32, 64, 128, and 256 bytes.  The state can be switched by
-   calling the setstate() function with the same array as was initialized
-   with initstate().  By default, the package runs with 128 bytes of state
-   information and generates far better random numbers than a linear
-   congruential generator.  If the amount of state information is less than
-   32 bytes, a simple linear congruential R.N.G. is used.  Internally, the
-   state information is treated as an array of longs; the zeroth element of
-   the array is the type of R.N.G. being used (small integer); the remainder
-   of the array is the state information for the R.N.G.  Thus, 32 bytes of
-   state information will give 7 longs worth of state information, which will
-   allow a degree seven polynomial.  (Note: The zeroth word of state
-   information also has some other information stored in it; see setstate
-   for details).  The random number generation technique is a linear feedback
-   shift register approach, employing trinomials (since there are fewer terms
-   to sum up that way).  In this approach, the least significant bit of all
-   the numbers in the state table will act as a linear feedback shift register,
-   and will have period 2^deg - 1 (where deg is the degree of the polynomial
-   being used, assuming that the polynomial is irreducible and primitive).
-   The higher order bits will have longer periods, since their values are
-   also influenced by pseudo-random carries out of the lower bits.  The
-   total period of the generator is approximately deg*(2**deg - 1); thus
-   doubling the amount of state information has a vast influence on the
-   period of the generator.  Note: The deg*(2**deg - 1) is an approximation
-   only good for large deg, when the period of the shift register is the
-   dominant factor.  With deg equal to seven, the period is actually much
-   longer than the 7*(2**7 - 1) predicted by this formula.  */
-
-
-
-/* For each of the currently supported random number generators, we have a
-   break value on the amount of state information (you need at least this many
-   bytes of state info to support this random number generator), a degree for
-   the polynomial (actually a trinomial) that the R.N.G. is based on, and
-   separation between the two lower order coefficients of the trinomial.  */
-
-/* Linear congruential.  */
-#define	TYPE_0		0
-#define	BREAK_0		8
-#define	DEG_0		0
-#define	SEP_0		0
-
-/* x**7 + x**3 + 1.  */
-#define	TYPE_1		1
-#define	BREAK_1		32
-#define	DEG_1		7
-#define	SEP_1		3
-
-/* x**15 + x + 1.  */
-#define	TYPE_2		2
-#define	BREAK_2		64
-#define	DEG_2		15
-#define	SEP_2		1
-
-/* x**31 + x**3 + 1.  */
-#define	TYPE_3		3
-#define	BREAK_3		128
-#define	DEG_3		31
-#define	SEP_3		3
-
-/* x**63 + x + 1.  */
-#define	TYPE_4		4
-#define	BREAK_4		256
-#define	DEG_4		63
-#define	SEP_4		1
-
-
-/* Array versions of the above information to make code run faster.
-   Relies on fact that TYPE_i == i.  */
-
-#define	MAX_TYPES	5	/* Max number of types above.  */
-
-struct random_poly_info
-{
-  int seps[MAX_TYPES];
-  int degrees[MAX_TYPES];
-};
-
-static const struct random_poly_info random_poly_info =
-{
-  { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 },
-  { DEG_0, DEG_1, DEG_2, DEG_3, DEG_4 }
-};
-
-
-
-
-/* Initialize the random number generator based on the given seed.  If the
-   type is the trivial no-state-information type, just remember the seed.
-   Otherwise, initializes state[] based on the given "seed" via a linear
-   congruential generator.  Then, the pointers are set to known locations
-   that are exactly rand_sep places apart.  Lastly, it cycles the state
-   information a given number of times to get rid of any initial dependencies
-   introduced by the L.C.R.N.G.  Note that the initialization of randtbl[]
-   for default usage relies on values produced by this routine.  */
-int
-__srandom_r (seed, buf)
-     unsigned int seed;
-     struct random_data *buf;
-{
-  int type;
-  int32_t *state;
-  long int i;
-  long int word;
-  int32_t *dst;
-  int kc;
-
-  if (buf == NULL)
-    goto fail;
-  type = buf->rand_type;
-  if ((unsigned int) type >= MAX_TYPES)
-    goto fail;
-
-  state = buf->state;
-  /* We must make sure the seed is not 0.  Take arbitrarily 1 in this case.  */
-  if (seed == 0)
-    seed = 1;
-  state[0] = seed;
-  if (type == TYPE_0)
-    goto done;
-
-  dst = state;
-  word = seed;
-  kc = buf->rand_deg;
-  for (i = 1; i < kc; ++i)
-    {
-      /* This does:
-	   state[i] = (16807 * state[i - 1]) % 2147483647;
-	 but avoids overflowing 31 bits.  */
-      long int hi = word / 127773;
-      long int lo = word % 127773;
-      word = 16807 * lo - 2836 * hi;
-      if (word < 0)
-	word += 2147483647;
-      *++dst = word;
-    }
-
-  buf->fptr = &state[buf->rand_sep];
-  buf->rptr = &state[0];
-  kc *= 10;
-  while (--kc >= 0)
-    {
-      int32_t discard;
-      (void) __random_r (buf, &discard);
-    }
-
- done:
-  return 0;
-
- fail:
-  return -1;
-}
-
-
-/* Initialize the state information in the given array of N bytes for
-   future random number generation.  Based on the number of bytes we
-   are given, and the break values for the different R.N.G.'s, we choose
-   the best (largest) one we can and set things up for it.  srandom is
-   then called to initialize the state information.  Note that on return
-   from srandom, we set state[-1] to be the type multiplexed with the current
-   value of the rear pointer; this is so successive calls to initstate won't
-   lose this information and will be able to restart with setstate.
-   Note: The first thing we do is save the current state, if any, just like
-   setstate so that it doesn't matter when initstate is called.
-   Returns a pointer to the old state.  */
-int
-__initstate_r (seed, arg_state, n, buf)
-     unsigned int seed;
-     char *arg_state;
-     size_t n;
-     struct random_data *buf;
-{
-  int type;
-  int degree;
-  int separation;
-  int32_t *state;
-
-  if (buf == NULL)
-    goto fail;
-
-  if (n >= BREAK_3)
-    type = n < BREAK_4 ? TYPE_3 : TYPE_4;
-  else if (n < BREAK_1)
-    {
-      if (n < BREAK_0)
-	{
-	  __set_errno (EINVAL);
-	  goto fail;
-	}
-      type = TYPE_0;
-    }
-  else
-    type = n < BREAK_2 ? TYPE_1 : TYPE_2;
-
-  degree = random_poly_info.degrees[type];
-  separation = random_poly_info.seps[type];
-
-  buf->rand_type = type;
-  buf->rand_sep = separation;
-  buf->rand_deg = degree;
-  state = &((int32_t *) arg_state)[1];	/* First location.  */
-  /* Must set END_PTR before srandom.  */
-  buf->end_ptr = &state[degree];
-
-  buf->state = state;
-
-  __srandom_r (seed, buf);
-
-  state[-1] = TYPE_0;
-  if (type != TYPE_0)
-    state[-1] = (buf->rptr - state) * MAX_TYPES + type;
-
-  return 0;
-
- fail:
-  __set_errno (EINVAL);
-  return -1;
-}
-
-
-/* Restore the state from the given state array.
-   Note: It is important that we also remember the locations of the pointers
-   in the current state information, and restore the locations of the pointers
-   from the old state information.  This is done by multiplexing the pointer
-   location into the zeroth word of the state information. Note that due
-   to the order in which things are done, it is OK to call setstate with the
-   same state as the current state
-   Returns a pointer to the old state information.  */
-int
-__setstate_r (arg_state, buf)
-     char *arg_state;
-     struct random_data *buf;
-{
-  int32_t *new_state = 1 + (int32_t *) arg_state;
-  int type;
-  int old_type;
-  int32_t *old_state;
-  int degree;
-  int separation;
-
-  if (arg_state == NULL || buf == NULL)
-    goto fail;
-
-  old_type = buf->rand_type;
-  old_state = buf->state;
-  if (old_type == TYPE_0)
-    old_state[-1] = TYPE_0;
-  else
-    old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type;
-
-  type = new_state[-1] % MAX_TYPES;
-  if (type < TYPE_0 || type > TYPE_4)
-    goto fail;
-
-  buf->rand_deg = degree = random_poly_info.degrees[type];
-  buf->rand_sep = separation = random_poly_info.seps[type];
-  buf->rand_type = type;
-
-  if (type != TYPE_0)
-    {
-      int rear = new_state[-1] / MAX_TYPES;
-      buf->rptr = &new_state[rear];
-      buf->fptr = &new_state[(rear + separation) % degree];
-    }
-  buf->state = new_state;
-  /* Set end_ptr too.  */
-  buf->end_ptr = &new_state[degree];
-
-  return 0;
-
- fail:
-  __set_errno (EINVAL);
-  return -1;
-}
-
-
-/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
-   congruential bit.  Otherwise, we do our fancy trinomial stuff, which is the
-   same in all the other cases due to all the global variables that have been
-   set up.  The basic operation is to add the number at the rear pointer into
-   the one at the front pointer.  Then both pointers are advanced to the next
-   location cyclically in the table.  The value returned is the sum generated,
-   reduced to 31 bits by throwing away the "least random" low bit.
-   Note: The code takes advantage of the fact that both the front and
-   rear pointers can't wrap on the same call by not testing the rear
-   pointer if the front one has wrapped.  Returns a 31-bit random number.  */
-
-int
-__random_r (buf, result)
-     struct random_data *buf;
-     int32_t *result;
-{
-  int32_t *state;
-
-  if (buf == NULL || result == NULL)
-    goto fail;
-
-  state = buf->state;
-
-  if (buf->rand_type == TYPE_0)
-    {
-      int32_t val = state[0];
-      val = ((state[0] * 1103515245) + 12345) & 0x7fffffff;
-      state[0] = val;
-      *result = val;
-    }
-  else
-    {
-      int32_t *fptr = buf->fptr;
-      int32_t *rptr = buf->rptr;
-      int32_t *end_ptr = buf->end_ptr;
-      int32_t val;
-
-      val = *fptr += *rptr;
-      /* Chucking least random bit.  */
-      *result = (val >> 1) & 0x7fffffff;
-      ++fptr;
-      if (fptr >= end_ptr)
-	{
-	  fptr = state;
-	  ++rptr;
-	}
-      else
-	{
-	  ++rptr;
-	  if (rptr >= end_ptr)
-	    rptr = state;
-	}
-      buf->fptr = fptr;
-      buf->rptr = rptr;
-    }
-  return 0;
-
- fail:
-  __set_errno (EINVAL);
-  return -1;
-}
-
-/* Copyright (C) 1995 Free Software Foundation
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/*
- * This is derived from the Berkeley source:
- *	@(#)random.c	5.5 (Berkeley) 7/6/88
- * It was reworked for the GNU C Library by Roland McGrath.
- * Rewritten to use reentrant functions by Ulrich Drepper, 1995.
- */
-
-/*
-   Copyright (C) 1983 Regents of the University of California.
-   All rights reserved.
- 
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-   1. Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-   2. Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-   4. Neither the name of the University nor the names of its contributors
-      may be used to endorse or promote products derived from this software
-      without specific prior written permission.
-   
-   THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-   ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-   SUCH DAMAGE.*/
-
-#include <limits.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-
-/* An improved random number generation package.  In addition to the standard
-   rand()/srand() like interface, this package also has a special state info
-   interface.  The initstate() routine is called with a seed, an array of
-   bytes, and a count of how many bytes are being passed in; this array is
-   then initialized to contain information for random number generation with
-   that much state information.  Good sizes for the amount of state
-   information are 32, 64, 128, and 256 bytes.  The state can be switched by
-   calling the setstate() function with the same array as was initialized
-   with initstate().  By default, the package runs with 128 bytes of state
-   information and generates far better random numbers than a linear
-   congruential generator.  If the amount of state information is less than
-   32 bytes, a simple linear congruential R.N.G. is used.  Internally, the
-   state information is treated as an array of longs; the zeroth element of
-   the array is the type of R.N.G. being used (small integer); the remainder
-   of the array is the state information for the R.N.G.  Thus, 32 bytes of
-   state information will give 7 longs worth of state information, which will
-   allow a degree seven polynomial.  (Note: The zeroth word of state
-   information also has some other information stored in it; see setstate
-   for details).  The random number generation technique is a linear feedback
-   shift register approach, employing trinomials (since there are fewer terms
-   to sum up that way).  In this approach, the least significant bit of all
-   the numbers in the state table will act as a linear feedback shift register,
-   and will have period 2^deg - 1 (where deg is the degree of the polynomial
-   being used, assuming that the polynomial is irreducible and primitive).
-   The higher order bits will have longer periods, since their values are
-   also influenced by pseudo-random carries out of the lower bits.  The
-   total period of the generator is approximately deg*(2**deg - 1); thus
-   doubling the amount of state information has a vast influence on the
-   period of the generator.  Note: The deg*(2**deg - 1) is an approximation
-   only good for large deg, when the period of the shift register is the
-   dominant factor.  With deg equal to seven, the period is actually much
-   longer than the 7*(2**7 - 1) predicted by this formula.  */
-
-
-
-/* For each of the currently supported random number generators, we have a
-   break value on the amount of state information (you need at least this many
-   bytes of state info to support this random number generator), a degree for
-   the polynomial (actually a trinomial) that the R.N.G. is based on, and
-   separation between the two lower order coefficients of the trinomial.  */
-
-/* Linear congruential.  */
-#define	TYPE_0		0
-#define	BREAK_0		8
-#define	DEG_0		0
-#define	SEP_0		0
-
-/* x**7 + x**3 + 1.  */
-#define	TYPE_1		1
-#define	BREAK_1		32
-#define	DEG_1		7
-#define	SEP_1		3
-
-/* x**15 + x + 1.  */
-#define	TYPE_2		2
-#define	BREAK_2		64
-#define	DEG_2		15
-#define	SEP_2		1
-
-/* x**31 + x**3 + 1.  */
-#define	TYPE_3		3
-#define	BREAK_3		128
-#define	DEG_3		31
-#define	SEP_3		3
-
-/* x**63 + x + 1.  */
-#define	TYPE_4		4
-#define	BREAK_4		256
-#define	DEG_4		63
-#define	SEP_4		1
-
-
-/* Array versions of the above information to make code run faster.
-   Relies on fact that TYPE_i == i.  */
-
-#define	MAX_TYPES	5	/* Max number of types above.  */
-
-
-/* Initially, everything is set up as if from:
-	initstate(1, randtbl, 128);
-   Note that this initialization takes advantage of the fact that srandom
-   advances the front and rear pointers 10*rand_deg times, and hence the
-   rear pointer which starts at 0 will also end up at zero; thus the zeroth
-   element of the state information, which contains info about the current
-   position of the rear pointer is just
-	(MAX_TYPES * (rptr - state)) + TYPE_3 == TYPE_3.  */
-
-static int32_t randtbl[DEG_3 + 1] =
-  {
-    TYPE_3,
-
-    -1726662223, 379960547, 1735697613, 1040273694, 1313901226,
-    1627687941, -179304937, -2073333483, 1780058412, -1989503057,
-    -615974602, 344556628, 939512070, -1249116260, 1507946756,
-    -812545463, 154635395, 1388815473, -1926676823, 525320961,
-    -1009028674, 968117788, -123449607, 1284210865, 435012392,
-    -2017506339, -911064859, -370259173, 1132637927, 1398500161,
-    -205601318,
-  };
-
-
-static struct random_data unsafe_state =
-  {
-/* FPTR and RPTR are two pointers into the state info, a front and a rear
-   pointer.  These two pointers are always rand_sep places aparts, as they
-   cycle through the state information.  (Yes, this does mean we could get
-   away with just one pointer, but the code for random is more efficient
-   this way).  The pointers are left positioned as they would be from the call:
-	initstate(1, randtbl, 128);
-   (The position of the rear pointer, rptr, is really 0 (as explained above
-   in the initialization of randtbl) because the state table pointer is set
-   to point to randtbl[1] (as explained below).)  */
-
-    .fptr = &randtbl[SEP_3 + 1],
-    .rptr = &randtbl[1],
-
-/* The following things are the pointer to the state information table,
-   the type of the current generator, the degree of the current polynomial
-   being used, and the separation between the two pointers.
-   Note that for efficiency of random, we remember the first location of
-   the state information, not the zeroth.  Hence it is valid to access
-   state[-1], which is used to store the type of the R.N.G.
-   Also, we remember the last location, since this is more efficient than
-   indexing every time to find the address of the last element to see if
-   the front and rear pointers have wrapped.  */
-
-    .state = &randtbl[1],
-
-    .rand_type = TYPE_3,
-    .rand_deg = DEG_3,
-    .rand_sep = SEP_3,
-
-    .end_ptr = &randtbl[sizeof (randtbl) / sizeof (randtbl[0])]
-};
-
-/* POSIX.1c requires that there is mutual exclusion for the `rand' and
-   `srand' functions to prevent concurrent calls from modifying common
-   data.  */
-
-/* Initialize the random number generator based on the given seed.  If the
-   type is the trivial no-state-information type, just remember the seed.
-   Otherwise, initializes state[] based on the given "seed" via a linear
-   congruential generator.  Then, the pointers are set to known locations
-   that are exactly rand_sep places apart.  Lastly, it cycles the state
-   information a given number of times to get rid of any initial dependencies
-   introduced by the L.C.R.N.G.  Note that the initialization of randtbl[]
-   for default usage relies on values produced by this routine.  */
-void
-__srandom (x)
-     unsigned int x;
-{
-  (void) __srandom_r (x, &unsafe_state);
-}
-
-
-/* Initialize the state information in the given array of N bytes for
-   future random number generation.  Based on the number of bytes we
-   are given, and the break values for the different R.N.G.'s, we choose
-   the best (largest) one we can and set things up for it.  srandom is
-   then called to initialize the state information.  Note that on return
-   from srandom, we set state[-1] to be the type multiplexed with the current
-   value of the rear pointer; this is so successive calls to initstate won't
-   lose this information and will be able to restart with setstate.
-   Note: The first thing we do is save the current state, if any, just like
-   setstate so that it doesn't matter when initstate is called.
-   Returns a pointer to the old state.  */
-char *
-__initstate (seed, arg_state, n)
-     unsigned int seed;
-     char *arg_state;
-     size_t n;
-{
-  int32_t *ostate;
-
-
-  ostate = &unsafe_state.state[-1];
-
-  __initstate_r (seed, arg_state, n, &unsafe_state);
-
-
-  return (char *) ostate;
-}
-
-
-/* Restore the state from the given state array.
-   Note: It is important that we also remember the locations of the pointers
-   in the current state information, and restore the locations of the pointers
-   from the old state information.  This is done by multiplexing the pointer
-   location into the zeroth word of the state information. Note that due
-   to the order in which things are done, it is OK to call setstate with the
-   same state as the current state
-   Returns a pointer to the old state information.  */
-char *
-__setstate (arg_state)
-     char *arg_state;
-{
-  int32_t *ostate;
-
-
-  ostate = &unsafe_state.state[-1];
-
-  if (__setstate_r (arg_state, &unsafe_state) < 0)
-    ostate = NULL;
-
-
-  return (char *) ostate;
-}
-
-
-/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
-   congruential bit.  Otherwise, we do our fancy trinomial stuff, which is the
-   same in all the other cases due to all the global variables that have been
-   set up.  The basic operation is to add the number at the rear pointer into
-   the one at the front pointer.  Then both pointers are advanced to the next
-   location cyclically in the table.  The value returned is the sum generated,
-   reduced to 31 bits by throwing away the "least random" low bit.
-   Note: The code takes advantage of the fact that both the front and
-   rear pointers can't wrap on the same call by not testing the rear
-   pointer if the front one has wrapped.  Returns a 31-bit random number.  */
-
-long int
-__random (void)
-{
-  int32_t retval;
-
-
-  (void) __random_r (&unsafe_state, &retval);
-
-
-  return retval;
-}
-
-long int glibc_random(void) { return __random(); }
-void glibc_srandom(unsigned int seed) { __srandom(seed); }
-char *glibc_initstate(unsigned int seed, char *state, size_t n) { return __initstate(seed,state,n); }
-char *glibc_setstate(char *state) { return __setstate(state); }
-#endif
diff --git a/mbbsd/time.c b/mbbsd/time.c
deleted file mode 100644
index 11f963c3..00000000
--- a/mbbsd/time.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef __dietlibc__
-#include <time.h>
-#warning	"hardcoded time zone as GMT+8!"
-extern void __maplocaltime(void);
-extern time_t __tzfile_map(time_t t, int *isdst, int forward);
-extern time_t timegm(struct tm *const t);
-
-time_t mktime(register struct tm* const t) {
-  time_t x=timegm(t);
-  x-=8*3600;
-  return x;
-}
-
-struct tm* localtime_r(const time_t* t, struct tm* r) {
-  time_t tmp;
-  tmp=*t;
-  tmp+=8*3600;
-  return gmtime_r(&tmp,r);
-}
-#endif
-- 
cgit v1.2.3