X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fseq_read.c;h=68351acb173bb6b26f6de49e22d72ab8f656c9e9;hp=c1ac9fa72ad593e54e19f74df16a633f3ec8622f;hb=a87df3543d3bc128ba4079d1f95638476ba5ca50;hpb=3cc8ed080f6e741b8df04a3ebe764c659e75cb38 diff --git a/sbr/seq_read.c b/sbr/seq_read.c index c1ac9fa..68351ac 100644 --- a/sbr/seq_read.c +++ b/sbr/seq_read.c @@ -7,6 +7,7 @@ ** complete copyright information. */ +#include #include #include @@ -54,9 +55,9 @@ seq_read(struct msgs *mp) static void seq_public(struct msgs *mp) { - int state; - char *cp, seqfile[PATH_MAX]; - char name[NAMESZ], field[BUFSIZ]; + enum state state; + struct field f = free_field; + char seqfile[PATH_MAX]; FILE *fp; /* @@ -73,41 +74,24 @@ seq_public(struct msgs *mp) return; /* Use m_getfld to scan sequence file */ - for (state = FLD;;) { - switch (state = m_getfld(state, name, field, sizeof(field), - fp)) { - case FLD: - case FLDPLUS: - case FLDEOF: - if (state == FLDPLUS) { - cp = getcpy(field); - while (state == FLDPLUS) { - state = m_getfld(state, name, field, - sizeof(field), fp); - cp = add(field, cp); - } - seq_init(mp, getcpy(name), trimcpy(cp)); - free(cp); - } else { - seq_init(mp, getcpy(name), trimcpy(field)); - } - if (state == FLDEOF) - break; + for (state = FLD2;;) { + switch (state = m_getfld2(state, &f, fp)) { + case FLD2: + seq_init(mp, getcpy(f.name), trimcpy(f.value)); continue; - case BODY: - case BODYEOF: - adios(NULL, "no blank lines are permitted in %s", + case BODY2: + adios(EX_CONFIG, NULL, "no blank lines are permitted in %s", seqfile); - /* fall */ + /* FALL */ - case FILEEOF: + case FILEEOF2: break; default: - adios(NULL, "%s is poorly formatted", seqfile); + adios(EX_CONFIG, NULL, "%s is poorly formatted", seqfile); } - break; /* break from for loop */ + break; } lkfclose(fp, seqfile); @@ -132,11 +116,10 @@ seq_private(struct msgs *mp) plen = strlen(mp->foldpath) + 1; for (np = m_defs; np; np = np->n_next) { - if (isprefix("atr-", np->n_name) - && (j = strlen(np->n_name) - plen) > alen - && *(np->n_name + j) == '-' - && strcmp(mp->foldpath, np->n_name + j + 1) - == 0) { + if (strncmp(np->n_name, "atr-", alen)==0 && + (j = strlen(np->n_name) - plen) > alen && + *(np->n_name + j) == '-' && + strcmp(mp->foldpath, np->n_name + j + 1)==0) { cp = getcpy(np->n_name + alen); *(cp + j - alen) = '\0'; if ((i = seq_init(mp, cp, getcpy(np->n_field))) != -1) @@ -159,14 +142,15 @@ seq_private(struct msgs *mp) static int seq_init(struct msgs *mp, char *name, char *field) { - int i, j, k, is_current; + unsigned int i; + int j, k, is_current; char *cp, **ap; /* ** Check if this is the cur sequence, ** so we can do some special things. */ - is_current = !strcmp(seq_cur, name); + is_current = (strcmp(seq_cur, name)==0); /* ** Search for this sequence name to see if we've seen @@ -175,7 +159,7 @@ seq_init(struct msgs *mp, char *name, char *field) ** mesages in this folder. */ for (i = 0; mp->msgattrs[i]; i++) { - if (!strcmp(mp->msgattrs[i], name)) { + if (strcmp(mp->msgattrs[i], name)==0) { for (j = mp->lowmsg; j <= mp->hghmsg; j++) clear_sequence(mp, i, j); break;