static int split_mbox(const char *file, const char *dir, int allow_bare, int nr_prec, int skip) { char name[PATH_MAX]; int ret = -1; int peek; FILE *f = !strcmp(file, "-") ? stdin : fopen(file, "r"); int file_done = 0; if (!f) { error("cannot open mbox %s", file); goto out; } do { peek = fgetc(f); } while (isspace(peek)); ungetc(peek, f); if (strbuf_getwholeline(&buf, f, '\n')) { /* empty stdin is OK */ if (f != stdin) { error("cannot read mbox %s", file); goto out; } file_done = 1; } while (!file_done) { sprintf(name, "%s/%0*d", dir, nr_prec, ++skip); file_done = split_one(f, name, allow_bare); } if (f != stdin) fclose(f); ret = skip; out: return ret; }
static int split_maildir(const char *maildir, const char *dir, int nr_prec, int skip) { char file[PATH_MAX]; char name[PATH_MAX]; int ret = -1; int i; struct string_list list = {NULL, 0, 0, 1}; if (populate_maildir_list(&list, maildir) < 0) goto out; for (i = 0; i < list.nr; i++) { FILE *f; snprintf(file, sizeof(file), "%s/%s", maildir, list.items[i].string); f = fopen(file, "r"); if (!f) { error("cannot open mail %s (%s)", file, strerror(errno)); goto out; } if (strbuf_getwholeline(&buf, f, '\n')) { error("cannot read mail %s (%s)", file, strerror(errno)); goto out; } sprintf(name, "%s/%0*d", dir, nr_prec, ++skip); split_one(f, name, 1); fclose(f); } ret = skip; out: string_list_clear(&list, 1); return ret; }
std::list<std::string> Device::split(const std::string &s, char delim ) { std::list<std::string> elems; split_one(s, delim, elems); return elems; }