Annotation of 43BSD/contrib/mh/sbr/m_remsg.c, revision 1.1.1.1

1.1       root        1: /* m_remsg.c - realloc a msgs structure */
                      2: 
                      3: #include "../h/mh.h"
                      4: #include <stdio.h>
                      5: 
                      6: 
                      7: struct msgs *m_remsg (mp, lo, hi)
                      8: register struct msgs *mp;
                      9: int    lo,
                     10:        hi;
                     11: {
                     12:     int     msgnum;
                     13: #ifdef MTR
                     14:     register short *sp,
                     15:                   *pp;
                     16: #endif MTR
                     17: 
                     18:     if (lo == 0 && (lo = mp -> lowmsg) == 0)
                     19:        lo = 1;
                     20:     if (hi < mp -> hghmsg)
                     21:        hi = mp -> hghmsg + (MAXFOLDER - mp -> nummsg);
                     22:     if (hi <= mp -> hghmsg)
                     23:        hi = mp -> hghmsg + MAXFOLDER;
                     24:     if (lo == mp -> lowmsg && hi == mp -> hghmsg)
                     25:        return mp;
                     26: 
                     27: #ifndef        MTR
                     28:     mp = (struct msgs  *) realloc ((char *) mp, MSIZE (mp, lo, hi));
                     29:     if (mp == NULL)
                     30:        adios (NULLCP, "unable to re-allocate folder storage");
                     31: #else  MTR
                     32:     if ((sp = (short *) calloc ((unsigned) 1, MSIZEX (mp, lo, hi))) == NULL)
                     33:        adios (NULLCP, "unable to re-allocate messages storage");
                     34: 
                     35:     pp = sp - lo;
                     36:     if (pp < 0)
                     37:        adios (NULLCP, "m_remsg() botch -- you lose big[1]");
                     38:     for (msgnum = mp -> lowmsg; msgnum <= mp -> hghmsg; msgnum++)
                     39:        pp[msgnum] = mp -> msgstats[msgnum];
                     40:     free ((char *) mp -> msgbase);
                     41:     mp -> msgstats = sp;
                     42: #endif MTR
                     43:     mp -> lowoff = lo;
                     44:     mp -> hghoff = hi;
                     45: #ifdef MTR
                     46:     mp -> msgstats = (mp -> msgbase = mp -> msgstats) - mp -> lowoff;
                     47:     if (mp -> msgstats < 0)
                     48:        adios (NULLCP, "m_remsg() botch -- you lose big[2]");
                     49: #endif MTR
                     50:     for (msgnum = mp -> lowmsg - 1; msgnum >= lo; msgnum--)
                     51:        mp -> msgstats[msgnum] = NULL;
                     52:     for (msgnum = mp -> hghmsg + 1; msgnum <= hi; msgnum++)
                     53:        mp -> msgstats[msgnum] = NULL;
                     54: 
                     55:     return mp;
                     56: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.