+#include "dict-p.h"
+
+static void dict_copy_page(Dict dict, char *to_p, char *from_p, int *map)
+{
+ int i, slen, no = 0;
+ short *from_indxp, *to_indxp;
+ char *from_info, *to_info;
+
+ from_indxp = (short*) ((char*) from_p+DICT_bsize(from_p));
+ to_indxp = (short*) ((char*) to_p+DICT_bsize(to_p));
+ to_info = (char*) to_p + DICT_infoffset;
+ for (i = DICT_nodir (from_p); --i >= 0; )
+ {
+ if (*--from_indxp > 0) /* tail string here! */
+ {
+ /* string (Dict_char *) DICT_EOS terminated */
+ /* unsigned char length of information */
+ /* char * information */
+
+ from_info = (char*) from_p + *from_indxp;
+ *--to_indxp = to_info - to_p;
+ slen = (dict_strlen((Dict_char*) from_info)+1)*sizeof(Dict_char);
+ memcpy (to_info, from_info, slen);
+ from_info += slen;
+ to_info += slen;
+ }
+ else
+ {
+ Dict_ptr subptr;
+ Dict_char subchar;
+ /* Dict_ptr subptr */
+ /* Dict_char sub char */
+ /* unsigned char length of information */
+ /* char * information */
+
+ *--to_indxp = -(to_info - to_p);
+ from_info = (char*) from_p - *from_indxp;