This is FromHeaderController.m in view mode; [Download] [Up]
#import <appkit/appkit.h>
#import <pwd.h>
#import "../Alexandra.h"
#import "FromHeaderController.h"
#import "FromHeaderPanel.h"
#import "askresolverfordomain.h"
@implementation FromHeaderController
+ new
{
static FromHeaderController *me=nil;
if(!me)
me=[[FromHeaderController alloc] init];
return me;
}
- (char *)computeAddress;
{
char machine_name[256], *domain_name;
struct passwd *user;
char mail_address[512];
const char *user_name;
user_name=NXUserName();
user=getpwnam(user_name);
gethostname(machine_name,sizeof(machine_name));
domain_name=askresolverfordomain();
if(user_name) strcat(mail_address,user_name);
strcat(mail_address,"@");
if(machine_name){
strcat(mail_address,machine_name);
strcat(mail_address,".");
}
if(domain_name) strcat(mail_address,domain_name);
if(user){
strcat(mail_address," (");
strcat(mail_address,user->pw_gecos);
strcat(mail_address,")");
}
return NXCopyStringBufferFromZone(mail_address,[self zone]);
}
- (char *)validFromAddress;
{
KVPair *pair;
const char *d;
char defname[200], defvalue[200],*fromAddress=NULL;
int i,n=[NXApp defaultIntValue:DEFAULT_XHEADER_COUNT],ret;
BOOL stopSearching=NO;
for(i=0;i<n && !stopSearching;i++)
{
sprintf(defname,DEFAULT_XHEADERS,i+1);
d=[NXApp defaultValue:defname];
if(d)
{
pair=[[KVPair alloc] init:d delimiter:':'];
if([pair isNull])
stopSearching=YES;
else if(!strcmp([pair key],"From"))
{
fromAddress=NXCopyStringBufferFromZone([pair value],[self zone]);
stopSearching=YES;
}
pair=[pair free];
}
}
if(fromAddress)
return fromAddress;
if(!thePanel)
[NXApp loadNibSection:"FromHeader.nib" owner:self];
fromAddress=[self computeAddress];
ret=[thePanel runModalForAddress:fromAddress];
NXZoneFree([self zone],fromAddress);
if(!ret)
return NULL;
fromAddress=(char *)[thePanel fromAddress];
if(i==n)
[NXApp setDefault:DEFAULT_XHEADER_COUNT toInt:++i];
sprintf(defvalue, "From: %s",fromAddress);
sprintf(defname,DEFAULT_XHEADERS,i);
[NXApp setDefault:defname to:defvalue];
EM_ERROR(ENOTEPrefsChanged,self,NULL);
return NXCopyStringBufferFromZone(fromAddress,[self zone]);
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.