annotate sbr/m_remsg.c @ 3:f89a9a79e124

utf-8
author kono
date Wed, 20 Apr 2005 00:25:01 +0900
parents bce86c4163a3
children 441a2190cfae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /* m_remsg.c - realloc a msgs structure */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 #ifndef lint
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 static char ident[] = "@(#)$Id$";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 #endif /* lint */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 #include "../h/mh.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 #include <stdio.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 struct msgs *m_remsg (mp, lo, hi)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 register struct msgs *mp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 int lo,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 hi;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 int msgnum;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 #ifdef MTR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 register int *sp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 *pp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 #endif /* MTR */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 if (lo == 0 && (lo = mp -> lowmsg) == 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 lo = 1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 if (hi < mp -> hghmsg)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 hi = mp -> hghmsg + (MAXFOLDER - mp -> nummsg);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 if (hi <= mp -> hghmsg)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 hi = mp -> hghmsg + MAXFOLDER;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 if (lo == mp -> lowmsg && hi == mp -> hghmsg)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 return mp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 #ifndef MTR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 mp = (struct msgs *) realloc ((char *) mp, MHSIZE (mp, lo, hi));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 if (mp == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 adios (NULLCP, "unable to re-allocate folder storage");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 #else /* MTR */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 if ((sp = (int *) calloc ((unsigned) 1, MHSIZEX (mp, lo, hi))) == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 adios (NULLCP, "unable to re-allocate messages storage");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 pp = sp - lo;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 if (pp < (int *)0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 adios (NULLCP, "m_remsg() botch -- you lose big[1]");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 for (msgnum = mp -> lowmsg; msgnum <= mp -> hghmsg; msgnum++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 pp[msgnum] = mp -> msgstats[msgnum];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 free ((char *) mp -> msgbase);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 mp -> msgstats = sp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 #endif /* MTR */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 mp -> lowoff = lo;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 mp -> hghoff = hi;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 #ifdef MTR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 mp -> msgstats = (mp -> msgbase = mp -> msgstats) - mp -> lowoff;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 if (mp -> msgstats < (int *)0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 adios (NULLCP, "m_remsg() botch -- you lose big[2]");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 #endif /* MTR */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 for (msgnum = mp -> lowmsg - 1; msgnum >= lo; msgnum--)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 mp -> msgstats[msgnum] = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55 for (msgnum = mp -> hghmsg + 1; msgnum <= hi; msgnum++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 mp -> msgstats[msgnum] = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58 return mp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 }