fdcltrn.h
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:18k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  fdcltrn.h  -  Transaction Functions declarations 
  3.  *                Kernel of GNU SQL-server  
  4.  *
  5.  *  This file is a part of GNU SQL Server
  6.  *
  7.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  8.  *  Developed at the Institute of System Programming
  9.  *  This file is written by  Vera Ponomarenko
  10.  *
  11.  *  This program is free software; you can redistribute it and/or modify
  12.  *  it under the terms of the GNU General Public License as published by
  13.  *  the Free Software Foundation; either version 2 of the License, or
  14.  *  (at your option) any later version.
  15.  *
  16.  *  This program is distributed in the hope that it will be useful,
  17.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  *  GNU General Public License for more details.
  20.  *
  21.  *  You should have received a copy of the GNU General Public License
  22.  *  along with this program; if not, write to the Free Software
  23.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  24.  *
  25.  *  Contacts:   gss@ispras.ru
  26.  *
  27.  */
  28. #ifndef __fdcltrn_h__
  29. #define __fdcltrn_h__
  30. /* $Id: fdcltrn.h,v 1.249 1997/04/17 11:03:59 vera Exp $ */
  31. #include "inpop.h"
  32. #include "f1f2decl.h"
  33. #include "strml.h"
  34. #include <assert.h>
  35. /* addflds.c */
  36. i4_t addflds __P ((struct id_rel * pidrel, i4_t fn, struct des_field * afn));
  37. /* aggravg.c */
  38. struct ans_avg
  39. avgitab __P ((struct id_ind * pidind, u2_t slsz,
  40.               char *sc, u2_t diasz, char *diasc));
  41. struct ans_avg
  42. avgstab __P ((struct id_rel * pidrel));
  43. i4_t fndslc __P ((struct d_r_t *desrel, char *asp, u2_t * ai,
  44.  char *selcon, u2_t slsz, char *cort));
  45. i4_t tstcsel __P ((struct des_field * df, u2_t fn, u2_t fdf, u2_t slsz,
  46.   char *selc, char *c, char **arrpnt, u2_t * arrsz));
  47. /* aggrifn.c */
  48. void minitab __P ((struct ans_next * ans, struct id_ind * pidind,
  49.                    u2_t slsz, char *sc, u2_t diasz, char *diasc));
  50. void maxitab __P ((struct ans_next *ans, struct id_ind *pidind,
  51.                    u2_t slsz, char *sc, u2_t diasz, char *diasc));
  52. i4_t cmpval __P ((char *val1, char *val2, u2_t type, u2_t * n));
  53. void agrfind __P ((struct ans_next *ans, struct id_ind *pidind, u2_t nf, u2_t *mnf,
  54.                    u2_t slsz, char *sc, u2_t diasz, char *diasc, char *flaglist));
  55. void agrcount __P ((char **agrl, char *tuple, struct des_field * df, u2_t fdf,
  56.                     u2_t field_num, u2_t nf, u2_t * mnf, char *flaglist));
  57. void agr_frm __P ((char *agrl, i4_t flag, char *val, u2_t type));
  58. i4_t write_val __P ((char *mas, char **agrl, struct des_field * df,
  59.                      u2_t nf, u2_t * mnf, char *flaglist));
  60. char *write_average __P ((u2_t type, char *pnt_from, char *pnt_to));
  61. /* aggrsfn.c */
  62. u2_t minstab __P ((struct id_rel * pidrel, char *val));
  63. u2_t maxstab __P ((struct id_rel * pidrel, char *val));
  64. void agrfrel __P ((struct ans_next *ans, struct id_rel *pidrel, u2_t nf,
  65.                    u2_t *mnf, u2_t slsz, char *sc, char *flaglist));
  66. /* bdunion.c */
  67. struct ans_ctob bdunion __P ((struct id_ob * pit1, struct id_ob * pit2));
  68. struct ans_ctob intersctn __P ((struct id_ob * pit1, struct id_ob * pit2));
  69. struct ans_ctob differnc __P ((struct id_ob * pit1, struct id_ob * pit2));
  70. void minsfltr __P ((struct A * pg, struct des_tob * dt, struct des_tid * tid));
  71. char *getcort __P ((struct A * ppage, u2_t ** ai));
  72. i4_t cmpfv __P ((u2_t type, i4_t d, char *val1, char *val2));
  73. /* blfltr.c */
  74. struct ans_ctob blflrl __P ((struct id_rel * pidrel, u2_t slsz,
  75.                              char *sc, u2_t kn, u2_t * fsrt));
  76. struct ans_ctob blflin __P ((struct id_ind * pidind, u2_t slsz, char *sc,
  77.                              u2_t diasz, char *diasc, u2_t kn, u2_t *fsrt));
  78. struct ans_ctob blflfl __P ((i4_t idfl, u2_t slsz, char *sc, u2_t kn, u2_t * fsrt));
  79. /* cmpkeys.c */
  80. i4_t cmpkeys __P ((u2_t kn, u2_t *afn, struct des_field * df, char *pk1, char *pk2));
  81. i4_t cmp2keys __P ((u2_t type, char *pk1, char *pk2));
  82. /* cntrid.c */
  83. CPNM contir __P ((struct id_rel * idrel, struct d_r_t ** desrel));
  84. CPNM tabcl __P ((struct id_rel * pidrel, u2_t fln, u2_t * fmn));
  85. CPNM cont_id __P ((struct id_ind * pidind, struct d_r_t ** desrel,
  86.                    struct ldesind ** di));
  87. CPNM cont_fir __P ((struct id_rel * pidrel, struct d_r_t ** desrel));
  88. /* cnttab.c */
  89. void cntttab __P ((struct ans_cnt * ans, struct id_rel * pidrel,
  90.                    u2_t condsz, char *cond));
  91. void cntitab __P ((struct ans_cnt * ans, struct id_ind * pidind,
  92.                    u2_t condsz, char *cond, u2_t diasz, char *diasc));
  93. i4_t cntftab __P ((i4_t idfl, u2_t condsz, char *cond));
  94. void sumtmpt __P ((struct ans_next * ans, struct id_rel * pidrel));
  95. /* crind.c */
  96. struct ans_cind crind __P ((struct id_rel * pidrel, i4_t prun, i4_t type,
  97.                             i4_t afsize, u2_t * arfn));
  98. void dipack __P ((struct des_index * di, i4_t disize, char *pnt));
  99. /* crrel.c */
  100. struct ans_cr crrel __P ((i4_t sn, i4_t fn, i4_t fdf, struct des_field * df));
  101. void drbdpack __P ((struct d_r_bd * drbd, char *pnt));
  102. void dfpack __P ((struct des_field * df, u2_t fn, char *pnt));
  103. struct ans_ctob crview __P ((u2_t sn, u2_t fn, struct des_field * df));
  104. /* crtfrm.c */
  105. u2_t cortform __P ((struct des_field * df, u2_t fdf, u2_t fields_n, char *fc,
  106.      char *fval, char *cort, char *buf, u2_t * mfn));
  107. /* delcon.c */
  108. CPNM delcrl __P ((struct id_rel * pidrl, u2_t slsz, char *sc));
  109. i4_t delcin __P ((struct id_ind * pidind, u2_t slsz, char *sc,
  110.                   u2_t diasz, char *diasc));
  111. CPNM delcfl __P ((i4_t idfl, u2_t slsz, char *sc));
  112. i4_t fnd_slc __P ((struct d_r_t *desrel, char *asp, u2_t * ai, char *selcon,
  113.                    u2_t slsz, char *cort, struct des_tid *ref_tid));
  114. /* delind.c */
  115. CPNM delind __P ((struct id_ind * pidind));
  116. /* delrel.c */
  117. CPNM delrel __P ((struct id_rel * pidrel));
  118. struct d_r_t *getrd __P ((struct id_rel *pidrel, struct des_tid *ref_tid,
  119.                           char *a, u2_t * corsize));
  120. u2_t getrc __P ((struct d_r_bd * drbd, char *cort));
  121. /* dltn.c */
  122. i4_t dltn __P ((i4_t scnum));
  123. /* empty_page.c */
  124. void emptypg __P ((u2_t sn, u2_t pn, char type));
  125. u2_t getempt __P ((u2_t sn));
  126. /* fltrel.c */
  127. struct ans_ctob rflrel __P ((struct id_rel * pidrel, u2_t fln,
  128.                              u2_t * fl, u2_t slsz, char *sc));
  129. struct ans_ctob rflind __P ((struct id_ind * pidind, u2_t fln, u2_t * fl,
  130.                              u2_t slsz, char *sc, u2_t diasz, char *diasc));
  131. struct ans_ctob rflflt __P ((u2_t idfl, u2_t fln, u2_t * fl, u2_t slsz, char *sc));
  132. /* ind_ins.c */
  133. i4_t icp_insrtn __P ((struct ldesind * desind, char *key,
  134.                       char *key2, char *inf, i4_t infsz));
  135. i4_t icp_spusk __P ((struct A * pg, i4_t elsz, char *key, char *key2));
  136. i4_t remrep __P ((char *asp, char *key, char *key2, i4_t elsz,
  137.                   char **rbeg, char **rloc, i4_t *offbef));
  138. void icp_remrec __P ((char *beg, char *loc, i4_t sz, char *lastb,
  139.                       i4_t elsz, u2_t pn, char *asp, i4_t idm));
  140. i4_t mlreddi __P ((char *lkey, char *lkey2, char *lnkey, char *lnkey2, u2_t pn));
  141. i4_t modlast __P ((char *key, char *key2, char *nkey, char *nkey2, u2_t pn));
  142. void all_unlock __P ((void));
  143. void upunlock __P ((void));
  144. void downunlock __P ((void));
  145. i4_t lenforce __P ((void));
  146. /* ind_rem.c */
  147. i4_t icp_rem __P ((struct ldesind * desind, char *key, char *key2, i4_t infsz));
  148. i4_t kszcal __P ((char *key, u2_t * mfn, struct des_field * ad_f));
  149. i4_t killind __P ((struct ldesind * desind));
  150. /* ind_scan.c */
  151. i4_t fscan_ind __P ((struct ldesscan * desscn, char *key2,
  152.                      char *inf, i4_t infsz, char modescan));
  153. i4_t scan_ind __P ((struct ldesscan * desscn, char *key2,
  154.                     char *inf, i4_t infsz, char modescan));
  155. char *icp_lookup __P ((struct A * pg, struct ldesind * desind, char *key,
  156.                        char *key2, i4_t infsz, char **agr, char **loc));
  157. /* inscon.c */
  158. CPNM inscrl __P ((struct id_rel * pidrl_in, struct id_rel * pidrl_out,
  159.                   u2_t fln, u2_t * fl, u2_t slsz, char *sc));
  160. i4_t inscin __P ((struct id_ind * pidind, struct id_rel * pidrl_out, u2_t fln,
  161.                   u2_t * fl, u2_t slsz, char *sc, u2_t diasz, char *diasc));
  162. i4_t inscfl __P ((i4_t idfl, struct id_rel * pidrl_out, u2_t fln,
  163.                   u2_t * fl, u2_t slsz, char *sc));
  164. /* insfltr.c */
  165. i4_t insfltr __P ((i4_t scnum, i4_t idfl));
  166. /* insrtn.c */
  167. i4_t insrtn __P ((struct id_rel * pidrel, char *cort));
  168. /* join.c */
  169. struct ans_ctob join __P ((struct id_rel * pir1, i4_t mfn1sz, u2_t * mfn1,
  170.                            struct id_rel * pir2, i4_t mfn2sz, u2_t * mfn2));
  171. /* keyfrm.c */
  172. void keyform __P ((struct ldesind * desind, u2_t fdf, char *mas, char *cort));
  173. char *remval __P ((char *aval, char **a, u2_t type));
  174. /* makegr.c */
  175. struct ans_ctob makegroup __P ((struct id_rel * pidrel, u2_t ng, u2_t * glist, u2_t nf,
  176.                                 u2_t * mnf, char *flaglist, char *order));
  177. int tuple_break __P ((char *tuple, char **arrpnt, u2_t * arrsz,
  178.                       struct des_field * df, u2_t fdf, u2_t fn));
  179. void agrl_frm __P ((char **agrl, struct des_field * df, u2_t nf,
  180.                     u2_t * mnf, char *flaglist));
  181. void distagr_frm __P ((char **agrl, u2_t nf, char *flaglist));
  182. /* mdfctn.c */
  183. i4_t mdfctn __P ((i4_t scnum, char *fl));
  184. i4_t testcmod __P ((struct des_field * df, u2_t fdf, u2_t fmn,
  185.                     u2_t * mfn, char *fml, char **fval));
  186. i4_t mod_spec_flds __P ((i4_t scnum, u2_t fmnum, u2_t * fmn, char *fl));
  187. /* modcon.c */
  188. i4_t modcrl __P ((struct id_rel * pidrl, u2_t slsz, char *sc,
  189.                   u2_t flsz, u2_t * fl, u2_t flmsz, char *flmod));
  190. CPNM modcin __P ((struct id_ind * pidind, u2_t slsz, char *sc,
  191.                   u2_t diasz, char *diasc, u2_t flsz,
  192.   u2_t * fl, u2_t flmsz, char *flmod));
  193. i4_t modcfl __P ((i4_t idfl, u2_t slsz, char *sc, u2_t flsz,
  194.                   u2_t * fl, u2_t flmsz, char *flmod));
  195. /* next.c */
  196. void next __P ((struct ans_next * ans, i4_t scnum));
  197. void readrow __P ((struct ans_next * ans, i4_t scnum, i4_t fln, u2_t * fl));
  198. /* obrind.c */
  199. u2_t getrec __P ((u2_t sn, i4_t rn, u2_t pn, struct A * pg, u2_t * offloc));
  200. i4_t fgetnext __P ((struct ldesscan * desscn, u2_t * pn, u2_t * size, i4_t modescan));
  201. i4_t getnext __P ((struct ldesscan * desscn, u2_t * pn, u2_t * size, i4_t modescan));
  202. void modcur __P ((struct ldesscan * desscn, u2_t size));
  203. void modrec __P ((u2_t sn, i4_t rn, u2_t pn, i2_t delta));
  204. i4_t insrec __P ((struct ldesind * desind, i4_t rn, u2_t pn, u2_t size));
  205. i4_t delrec __P ((struct ldesind * desind, i4_t rn, u2_t pn));
  206. void crindci __P ((struct ldesind * desind));
  207. i4_t ordindi __P ((struct ldesind * desind, char *key, struct des_tid * tid));
  208. i4_t ordindd __P ((struct ldesind * desind, char *key, struct des_tid * tid));
  209. i4_t ind_tid __P ((struct ldesscan * desscn, struct des_tid * tid, i4_t modescan));
  210. i4_t ind_ftid __P ((struct ldesscan * desscn, struct des_tid * tid, i4_t modescan));
  211. /* opinpg.c */
  212. i4_t testfree __P ((char *asp, u2_t fs, u2_t corsize));
  213. void rempbd __P ((char *asp, u2_t sn, u2_t pn, i4_t idm));
  214. void inscort __P ((u2_t sn, struct des_tid *tid, i4_t idm,
  215.                    char *asp, char *cort, u2_t corsize));
  216. void exspind __P ((u2_t sn, struct des_tid *tid, i4_t idm, char *asp,
  217.                    u2_t oldsize, u2_t newsize, char *nc));
  218. void compress __P ((u2_t sn, struct des_tid *tid, i4_t idm, char *asp,
  219.                     u2_t oldsize, u2_t newsize));
  220. /* opscfl.c */
  221. u2_t opscfl __P ((i4_t idfl, i4_t mode, u2_t fn, u2_t * fl,
  222.                   u2_t slsz, char *sc, u2_t fmn, u2_t * fml));
  223. /* opscin.c */
  224. struct ans_opsc opscin __P ((struct id_ind * pidind, i4_t mode, u2_t fln,
  225.                              u2_t * fl, u2_t slsz, char *sc, u2_t diasz,
  226.                              char *diasc, u2_t fmn, u2_t * fml));
  227. i4_t testdsc __P ((struct d_r_t *desrel, u2_t * diasz, char *diasc,
  228.                    u2_t * mfn, u2_t * dscsz));
  229. i4_t dsccal __P ((u2_t fn, char *diasc, u2_t * dscsz));
  230. char *pred_compress __P ((char *diaval, char *lastb, struct des_field * df,
  231.                           unsigned char t));
  232. /* opscrl.c */
  233. struct ans_opsc opscrel __P ((struct id_rel * pidrel, i4_t mode,
  234.                               u2_t fnum, u2_t * fl, u2_t slsz,
  235.       char *sc, u2_t fmnum, u2_t * fml));
  236. i4_t testcond __P ((struct des_field * df, u2_t fn, u2_t fdf,
  237.                     u2_t fnum, u2_t * fl, u2_t * slsz,
  238.    char *selcon, u2_t fmnum, u2_t * fml));
  239. /* orddel.c */
  240. void orddel __P ((u2_t sn, i4_t rn, struct des_tid *tid,
  241.                   struct des_tid *ref_tid, u2_t oldsize));
  242. /* ordins.c */
  243. struct des_tid ordins __P ((u2_t sn, i4_t rn, char *cort, u2_t corsize, char type));
  244. /* ordmod.c */
  245. void ordmod __P ((u2_t sn, i4_t rn, struct des_tid *tid, struct des_tid *ref_tid,
  246.                   u2_t oldsize, char *nc, u2_t newsize));
  247. i4_t nordins __P ((u2_t sn, i4_t rn, struct des_tid *tid, i4_t type,
  248.                    u2_t oldsize, u2_t newsize, char *nc));
  249. void doindir __P ((u2_t sn, i4_t rn, struct des_tid *tid,
  250.                    u2_t oldsize, u2_t newsize, char *nc));
  251. /* proind.c */
  252. u2_t proind __P ((i4_t __P ((*f)) __P (()), struct d_r_t * desrel,
  253.                   u2_t cinum, char *cort, struct des_tid * tid));
  254. u2_t mproind __P ((struct d_r_t * desrel, u2_t cinum, char *cort,
  255.                    char *newc, struct des_tid * tid));
  256. /* rdcort.c */
  257. i4_t readcort __P ((u2_t sn, struct des_tid *tid, char *cort,
  258.                     u2_t * corsize, struct des_tid *ref_tid));
  259. u2_t calsc __P ((u2_t * afi, u2_t * ai));
  260. /* reclj.c */
  261. void wmlj __P ((i4_t type, u2_t size, struct ADBL * cadlj, struct id_rel *pidrel,
  262. struct des_tid * tid, CPNM cpn));
  263. /* recmj.c */
  264. void recmjform __P ((i4_t type, u2_t sn, u2_t pn, i4_t idm,
  265.                      u2_t off, u2_t fs, char *af, i2_t shsize));
  266. i4_t begmop __P ((char *asp));
  267. void beg_mop __P ((void));
  268. /* rllbck.c */
  269. i4_t rollback __P ((i4_t cpn));
  270. i4_t roll_back __P ((i4_t cpn));
  271. void rllbck __P ((CPNM cpn, struct ADBL cadlj));
  272. /* rllbfn.c */
  273. void redo_dltn __P ((u2_t sn, struct d_r_t * desrel, i4_t rn,
  274.                      struct des_tid * tid, u2_t n, char *a));
  275. void redo_insrtn __P ((u2_t sn, struct d_r_t * desrel, i4_t rn,
  276.                        struct des_tid * tid, i2_t n, char *a));
  277. void redo_dind __P ((struct d_r_t * desrel, char *a));
  278. void redo_cind __P ((char *a, i2_t n, u2_t sn, u2_t pnr,
  279.                      u2_t indr, struct des_tid * tid));
  280. u2_t get_placement __P ((u2_t sn, struct des_tid * tid,
  281.                          struct des_tid * ref_tid));
  282. void delscd __P ((u2_t n, char *a));
  283. void fill_ind __P ((struct d_r_t * desrel, struct ldesind * desind));
  284. struct d_r_t *crtfrd __P ((struct id_rel *pidrel, char *a));
  285. void crt_all_id __P ((struct d_r_t * desrel, char *a));
  286. void dindunpack __P ((struct des_index * di, char *pnt));
  287. /* snlock.c */
  288. CPNM synrd __P ((u2_t sn, char *aval, u2_t size));
  289. CPNM synlock __P ((struct id_rel * idr, struct d_r_bd * drbd, char *cort));
  290. CPNM synlsc __P ((i4_t type, struct id_rel * idr, char *selcon,
  291.                   u2_t selsize, u2_t fn, u2_t * mfn));
  292. CPNM synind __P ((u2_t sn, i4_t rn));
  293. CPNM syndmod __P ((struct id_rel * idr, struct des_field * df, char *cort));
  294. /* tmpob.c */
  295. struct ans_ctob crtrel __P ((i4_t fn, i4_t fdf, struct des_field * df));
  296. struct ans_ctob crfltr __P ((struct id_rel * pidrel));
  297. struct des_tob *gettob __P ((struct A * pg, u2_t size, i2_t * n, i4_t type));
  298. i4_t deltob __P ((struct id_ob * pidtob));
  299. i4_t instr __P ((struct des_tob * dt, char *cort, u2_t corsize));
  300. void minstr __P ((struct A * pg, char *cort, u2_t corsize, struct des_tob * dt));
  301. char *getloc __P ((struct A * pg, u2_t corsize, struct des_tob * dt));
  302. char *getptob __P ((struct A * pg, struct des_tob * destob));
  303. void deltr __P ((struct d_mesc * scpr, char *asp, u2_t * ai,
  304.                  struct des_tob * destob, u2_t pn));
  305. i4_t frptr __P ((char *asp));
  306. void comptr __P ((char *asp, u2_t * ai, u2_t size));
  307. void frptob __P ((struct des_tob * destob, char *asp, u2_t pn));
  308. struct ans_ctob trsort __P ((struct id_rel * pidrel, u2_t kn,
  309.                              u2_t * mfn, char *drctn, char prdbl));
  310. struct ans_ctob flsort __P ((struct id_ob * pidtob, u2_t kn,
  311.                              u2_t * mfn, char *drctn, char prdbl));
  312. /* trns.c */
  313. void finit __P ((void));
  314. i4_t svpnt __P ((void));
  315. i4_t killtran __P ((void));
  316. i4_t closesc __P ((i4_t scnum));
  317. i4_t mempos __P ((i4_t scnum));
  318. i4_t curpos __P ((i4_t scnum));
  319. void modmes __P ((void));
  320. i4_t uniqnm __P ((void));
  321. CPNM sn_lock __P ((struct id_rel * pidrel, i4_t t, char *lc, i4_t sz));
  322. void sn_unltsp __P ((CPNM cpn));
  323. void srtr_trsort __P ((u2_t * fpn, struct des_field * df, u2_t fn,
  324.                        u2_t fdfn, u2_t * fsrt,
  325.        u2_t kn, char prdbl, char *drctn, u2_t * lpn));
  326. void srtr_flsort __P ((u2_t sn, u2_t * fpn, struct des_field * df,
  327.                        u2_t fn, u2_t fdfn, u2_t * mfn, u2_t kn,
  328.                        char prdbl, char *drctn, u2_t * lpn));
  329. void srtr_tid __P ((struct des_tob *dt));
  330. void LJ_put __P ((i4_t type));
  331. void LJ_GETREC __P ((struct ADBL * pcadlj));
  332. void MJ_PUTBL __P ((void));
  333. void ADMT_getext __P ((u2_t * pn));
  334. void ADMT_putext __P ((u2_t * mfpn, u2_t cnt));
  335. char *getpg __P ((struct A * ppage, u2_t sn, u2_t pn, i4_t type));
  336. char *getwl __P ((struct A * ppage, u2_t sn, u2_t pn));
  337. char *getnew __P ((struct A * ppage, u2_t sn, u2_t pn));
  338. void putpg __P ((struct A * ppage, i4_t type));
  339. void put_page __P ((struct A * ppage, char type, struct msg_buf * sbuf));
  340. void putwul __P ((struct A * ppage, i4_t type));
  341. void BUF_unlock __P ((u2_t sn, u2_t lnum, u2_t * mpn));
  342. i4_t BUF_lockpage __P ((u2_t sn, u2_t pn, i4_t type));
  343. i4_t BUF_enforce __P ((u2_t sn, u2_t pn));
  344. void BUF_endop __P ((void));
  345. void ans_adm __P ((void));
  346. void error __P ((char *s));
  347. #define CHECK_PG_ENTRY(ent)  
  348.     (assert(ent && (!*ent || ((*ent>0) && (*ent <= BD_PAGESIZE)))),1)
  349. #define mod_nels(newnels,loc)  
  350.     { u2_t mnels;             
  351. mnels=t2bunpack(loc);  
  352. mnels+=(newnels);      
  353. t2bpack(mnels,loc);    
  354.     }
  355. #endif