51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
}
}
zName[j] = 0;
printf(" %s <%s>", zName, zUser);
free(zName);
return;
}
zContact = db_column_text(&q, 0);
for(i=0; zContact[i] && zContact[i]!='>' && zContact[i]!='<'; i++){}
if( zContact[i]==0 ){
printf(" %s <%s>", zContact[0] ? zContact : zUser, zUser);
db_reset(&q);
return;
}
if( zContact[i]=='<' ){
zEmail = mprintf("%s", &zContact[i]);
for(i=0; zEmail[i] && zEmail[i]!='>'; i++){}
if( zEmail[i]=='>' ) zEmail[i+1] = 0;
}else{
zEmail = mprintf("<%s>", zUser);
}
zName = mprintf("%.*s", i, zContact);
for(i=j=0; zName[i]; i++){
if( zName[i]!='"' ) zName[j++] = zName[i];
}
zName[j] = 0;
printf(" %s %s", zName, zEmail);
free(zName);
free(zEmail);
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
}
}
zName[j] = 0;
printf(" %s <%s>", zName, zUser);
free(zName);
return;
}
/*
** We have contact information.
** It may or may not contain an email address.
*/
zContact = db_column_text(&q, 0);
for(i=0; zContact[i] && zContact[i]!='>' && zContact[i]!='<'; i++){}
if( zContact[i]==0 ){
/* No email address found. Take as user info if not empty */
printf(" %s <%s>", zContact[0] ? zContact : zUser, zUser);
db_reset(&q);
return;
}
if( zContact[i]=='<' ){
/*
** Found beginning of email address. Look for the end and extract
** the part.
*/
zEmail = mprintf("%s", &zContact[i]);
for(i=0; zEmail[i] && zEmail[i]!='>'; i++){}
if( zEmail[i]=='>' ) zEmail[i+1] = 0;
}else{
/*
** Found an end marker for email, but nothing else.
*/
zEmail = mprintf("<%s>", zUser);
}
/*
** Here zContact[i] either '<' or '>'. Extract the string _before_
** either as user name.
*/
zName = mprintf("%.*s", i-1, zContact);
for(i=j=0; zName[i]; i++){
if( zName[i]!='"' ) zName[j++] = zName[i];
}
zName[j] = 0;
printf(" %s %s", zName, zEmail);
free(zName);
free(zEmail);
|