|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 1047 (0x417)
Types: TextFile
Names: »m_seq.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦3658e588a⟧ »EurOpenD3/mail/mh/mh-6.7.tar.Z«
└─⟦c75e36ecb⟧
└─⟦this⟧ »mh-6.7/sbr/m_seq.c«
/* m_seq.c - print out a message sequence */
#include "../h/mh.h"
#include <stdio.h>
/* new version from VJ 2/90 - faster? */
char *
m_seq(mp, cp)
struct msgs *mp;
char *cp;
{
int mask;
register int i, j;
register char *bp;
static char buffer[BUFSIZ*2]; /* for big sequences */
if (strcmp(current, cp) == 0) {
if (mp->curmsg) {
(void) sprintf(buffer, "%s", m_name(mp->curmsg));
return (buffer);
} else
return (NULL);
}
for (i = 0; mp->msgattrs[i]; i++)
if (strcmp(mp->msgattrs[i], cp) == 0)
break;
if (! mp->msgattrs[i])
return (NULL);
mask = EXISTS | (1 << (FFATTRSLOT + i));
bp = buffer;
for (i = mp->lowmsg; i <= mp->hghmsg; ++i) {
if ((mp->msgstats[i] & mask) != mask)
continue;
if (bp > buffer)
*bp++ = ' ';
(void) sprintf(bp, "%s", m_name(i));
bp += strlen(bp);
j = i;
for (++i; i <= mp->hghmsg && (mp->msgstats[i] & mask) == mask;
++i)
;
if (i - j > 1) {
(void) sprintf(bp, "-%s", m_name(i - 1));
bp += strlen(bp);
}
}
return (bp > buffer? buffer : NULL);
}