Mercurial > hg > mlmmj
view src/find_email_adr.c @ 0:21ce01de8109
Initial revision
author | mmj |
---|---|
date | Thu, 22 Apr 2004 04:02:09 +1000 |
parents | |
children | 8e1ebc68ee62 |
line wrap: on
line source
/* Copyright (C) 2002, 2003 Mads Martin Joergensen <mmj at mmj.dk> * * $Id$ * * This file is redistributable under version 2 of the GNU General * Public License as described at http://www.gnu.org/licenses/gpl.txt */ #include "find_email_adr.h" #include <string.h> #include <strings.h> #include <stdio.h> #include <stdlib.h> struct email_container *find_email_adr(const char *str, struct email_container *retstruct) { size_t len; char *index_atsign; char *tempstr; char *c, *first_char = 0, *last_char = 0; tempstr = malloc(strlen(str) + 1); snprintf(tempstr, strlen(str) + 1, "%s", str); retstruct->emailcount = 0; retstruct->emaillist = NULL; while((index_atsign = index(tempstr, '@'))) { c = index_atsign; retstruct->emailcount++; while(*c != '<' && *c != ' ' && *c != ',' && *c != ';' && *c != '(' && *c != '[' && *c >= 32 && *c != '{' && c != tempstr) { c--; } first_char = ++c; c = index_atsign; while(*c != '>' && *c != ' ' && *c != ',' && *c != ';' && *c != ')' && *c != ']' && *c >= 32 && *c != '}' && *c != 0) { c++; } *c = 0; last_char = --c; len = last_char - first_char + 2; retstruct->emaillist = realloc(retstruct->emaillist, sizeof(char **) * retstruct->emailcount); retstruct->emaillist[retstruct->emailcount-1] = malloc(len); snprintf(retstruct->emaillist[retstruct->emailcount-1], len, "%s", first_char); #if 0 printf("find_email_adr, [%s]\n", retstruct->emaillist[retstruct->emailcount-1]); #endif *index_atsign = 'A'; /* Clear it so we don't find it again */ } free(tempstr); return retstruct; }