X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fnew.c;h=5bc71366b42aa8c9e5946161ba654ec9092fa2f4;hp=e95ee6ab317a1a48ff14f07694f7c32d7bca3ee9;hb=a8984c0e490cda653615bc0e1d4743ad8fe7a2a7;hpb=2abb9a7cfb0930e27062088734d306e7d78e4cc2 diff --git a/uip/new.c b/uip/new.c index e95ee6a..5bc7136 100644 --- a/uip/new.c +++ b/uip/new.c @@ -19,6 +19,7 @@ #include #include #include +#include static struct swit switches[] = { #define MODESW 0 @@ -54,7 +55,7 @@ count_messages(char *field) int j, k; char *cp, **ap; - field = getcpy(field); + field = mh_xstrdup(field); /* copied from seq_read.c:seq_init */ for (ap = brkstring(field, " ", "\n"); *ap; ap++) { @@ -67,7 +68,7 @@ count_messages(char *field) } } - free(field); + mh_free0(&field); return total; } @@ -112,9 +113,8 @@ get_msgnums(char *folder, char *sequences[]) fp)) { case FLD: case FLDPLUS: - case FLDEOF: if (state == FLDPLUS) { - cp = getcpy(field); + cp = mh_xstrdup(field); while (state == FLDPLUS) { state = m_getfld(state, name, field, sizeof(field), fp); @@ -134,11 +134,11 @@ get_msgnums(char *folder, char *sequences[]) } else { old_msgnums = msgnums; msgnums = concat(old_msgnums, " ", this_msgnums, (void *)NULL); - free(old_msgnums); - free(this_msgnums); + mh_free0(&old_msgnums); + mh_free0(&this_msgnums); } } - free(cp); + mh_free0(&cp); } else { /* and here */ if (seq_in_list(name, sequences)) { @@ -148,19 +148,16 @@ get_msgnums(char *folder, char *sequences[]) } else { old_msgnums = msgnums; msgnums = concat(old_msgnums, " ", this_msgnums, (void *)NULL); - free(old_msgnums); - free(this_msgnums); + mh_free0(&old_msgnums); + mh_free0(&this_msgnums); } } } - if (state == FLDEOF) - break; continue; case BODY: - case BODYEOF: - adios(NULL, "no blank lines are permitted in %s", + adios(EX_DATAERR, NULL, "no blank lines are permitted in %s", seqfile); /* fall */ @@ -168,7 +165,7 @@ get_msgnums(char *folder, char *sequences[]) break; default: - adios(NULL, "%s is poorly formatted", seqfile); + adios(EX_SOFTWARE, NULL, "%s is poorly formatted", seqfile); } break; /* break from for loop */ } @@ -190,9 +187,9 @@ check_folder(char *folder, size_t len, struct list_state *b) if (is_cur || msgnums != NULL) { if (*b->first == NULL) { - *b->first = b->node = mh_xmalloc(sizeof(*b->node)); + *b->first = b->node = mh_xcalloc(1, sizeof(*b->node)); } else { - b->node->n_next = mh_xmalloc(sizeof(*b->node)); + b->node->n_next = mh_xcalloc(1, sizeof(*b->node)); b->node = b->node->n_next; } b->node->n_name = folder; @@ -256,12 +253,12 @@ check_folders(struct node **first, struct node **last, } else { fp = fopen(folders, "r"); if (fp == NULL) { - adios(NULL, "failed to read %s", folders); + adios(EX_IOERR, NULL, "failed to read %s", folders); } while (vfgets(fp, &line) == OK) { len = strlen(line) - 1; line[len] = '\0'; - check_folder(getcpy(line), len, &b); + check_folder(mh_xstrdup(line), len, &b); } fclose(fp); } @@ -283,7 +280,7 @@ join_sequences(char *sequences[]) for (i = 0; sequences[i] != NULL; i++) { len += strlen(sequences[i]) + 1; } - result = mh_xmalloc(len + 1); + result = mh_xcalloc(len + 1, sizeof(char)); for (i = 0, cp = result; sequences[i] != NULL; i++, cp += len + 1) { len = strlen(sequences[i]); @@ -457,28 +454,28 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - exit(1); + exit(EX_USAGE); case UNKWNSW: - adios(NULL, "-%s unknown", cp); + adios(EX_USAGE, NULL, "-%s unknown", cp); case HELPSW: snprintf(help, sizeof(help), "%s [switches] [sequences]", invo_name); print_help(help, switches, 1); - exit(0); + exit(argc == 2 ? EX_OK : EX_USAGE); case VERSIONSW: print_version(invo_name); - exit(0); + exit(argc == 2 ? EX_OK : EX_USAGE); case FOLDERSSW: if (!(folders = *argp++) || *folders == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); continue; case MODESW: if (!(invo_name = *argp++) || *invo_name == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); invo_name = mhbasename(invo_name); continue; @@ -512,12 +509,12 @@ main(int argc, char **argv) /* no sequence arguments; use unseen */ if ((unseen = context_find(usequence))) { if (!*unseen) { - adios(NULL, "profile entry %s set, but empty, and no sequences given", usequence); + adios(EX_CONFIG, NULL, "profile entry %s set, but empty, and no sequences given", usequence); } } else { unseen = seq_unseen; /* use default */ } - dp = getcpy(unseen); + dp = mh_xstrdup(unseen); for (ap = brkstring(dp, " ", "\n"); *ap; ap++) { sequences[i++] = *ap; } @@ -526,7 +523,7 @@ main(int argc, char **argv) folder = doit(context_find(curfolder), folders, sequences); if (folder == NULL) { - exit(0); + exit(EX_OK); return 1; }