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

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  recmj.c  - Records in Microjournal
  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. /* $Id: recmj.c,v 1.246 1997/04/15 11:45:41 vera Exp $ */
  29. #include "destrn.h"
  30. #include "strml.h"
  31. #include "fdcltrn.h"
  32. #include "xmem.h"
  33. #define SZMJBF SZMSGBUF-2*size2b
  34. struct rec_mj
  35. {
  36.   struct ADBL addmj;
  37.   char typemj;
  38.   i4_t idmmj;
  39.   u2_t snmj;
  40.   u2_t pnmj;
  41.   u2_t offmj;
  42.   u2_t fsmj;
  43. };
  44. extern struct ADBL admj;
  45. extern struct ADREC blmj;
  46. extern char *bufmj;
  47. extern char *pbufmj;
  48. void
  49. recmjform (i4_t type, u2_t sn, u2_t pn, i4_t idm, u2_t off, u2_t fs, char *af, i2_t shsize)
  50. {
  51.   u2_t size;
  52.   char *a;
  53.   size = adjsize + 1 + size4b + 4 * size2b;
  54.   if (type != OLD)
  55.     size += size2b;
  56.   else
  57.     size += fs;
  58.   if (type == COMBR || type == COMBL)
  59.     size += shsize;
  60.   size += pbufmj - bufmj;
  61.   if (size > SZMJBF)
  62.     MJ_PUTBL ();
  63.   a = pbufmj;
  64.   bcopy ((char *) &admj, a, adjsize);
  65.   a += adjsize;
  66.   *a++ = type;
  67.   t4bpack (idm, a);
  68.   a += size4b;
  69.   t2bpack (sn, a);
  70.   a += size2b;
  71.   t2bpack (pn, a);
  72.   a += size2b;
  73.   t2bpack (off, a);
  74.   a += size2b;
  75.   t2bpack (fs, a);
  76.   a += size2b;
  77.   if (type != OLD)
  78.     {
  79.       bcopy ((char *) &shsize, a, size2b);
  80.       a += size2b;
  81.     }
  82.   else
  83.     {
  84.       bcopy (af, a, fs);
  85.       a += fs;
  86.     }
  87.   if (type == COMBR || type == COMBL)
  88.     {
  89.       bcopy (af, a, shsize);
  90.       a += shsize;
  91.     }
  92.   pbufmj = a;
  93. }
  94. i4_t
  95. begmop (char *asp)
  96. {
  97.   i4_t idm;
  98.   beg_mop ();
  99.   idm = ++((struct p_head *) asp)->idmod;
  100.   return (idm);
  101. }
  102. void
  103. beg_mop ()
  104. {
  105.   admj.npage = 1;
  106.   admj.cm = 0;
  107.   pbufmj = bufmj;
  108. }