This is rfc822realname.c in view mode; [Download] [Up]
#include <string.h> int rfc822_realname(const char *from_header,int *from,int *to) { char *s,*e; int i,j,z; int a,b; *from=0; *to=-1; if((from_header!=(void *)0)&&(from_header[0]!='\0')){ if(strchr(from_header,(int)'@')==NULL){ // no regular rfc822 thing i=0; j=strlen(from_header)-1; if((from_header[i]=='(')&&(from_header[j]==')')){ i++; j--; } *from=i; *to=j; return 0; } s=strrchr(from_header,(int)'<'); e=strrchr(from_header,(int)'>'); if((s!=NULL)&&(e!=NULL)){ i=strlen(s); j=strlen(e); z=strlen(from_header); if(i>j){ if(i==z){ a=1; b=i-j-1; } else{ int ii; a=0; ii=z-i-1; if(from_header[ii]==' ') ii--; b=ii; } if((from_header[a]=='"')&&(from_header[b]=='"')){ a++; b--; } *from=a; *to=b; return 0; } } else{ s=strchr(from_header,(int)'('); e=strrchr(from_header,(int)')'); if(s==e-1){ int t=strlen(from_header)-strlen(s)-1; while(t>0 && (from_header[t]==' ')) t--; if(t>0) *to=t; else *to=strlen(from_header); *from=0; return 0; } if((s!=(void *)0)&&(e!=(void *)0)){ i=strlen(s); j=strlen(e); z=strlen(from_header); if(i>j+1){ a=z-i+1; b=z-j-1; if((from_header[a]=='"')&&(from_header[b]=='"')){ a++; b--; } *from=a; *to=b; return 0; } } else{ *from=0; *to=strlen(from_header)-1; return 0; } } } return 0; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.