This is nextmail.m in view mode; [Download] [Up]
/* -*-C-*-
*******************************************************************************
*
* File: nextmail.m
* RCS: /usr/local/sources/CVS/mailapp-utilities/nextmail.m,v 1.3 1997/04/19 17:37:26 tom Exp
* Description: A 'mail' compatible program to open a Mail.app Compose window
* Author: Carl Edman
* Created: Thu Mar 4 13:42:52 1993
* Modified: Sat Nov 30 23:29:19 1996 Tom Hageman <tom@basil.icce.rug.nl>
* Language: Objective C
* Package: mailapp-utilities
* Status: First release
*
* (C) Copyright 1993, but otherwise this file is perfect freeware.
*
*******************************************************************************
*/
#import <appkit/appkit.h>
#import <stdlib.h>
#import <stdio.h>
#import "MailSpeaker.h"
#import "mailutil.h"
#import "mailtoc.h"
#import "optutil.h"
#define USAGE "\
Usage: %s [-e] [-s subject] [-c user]... [-NXHost host] [-V|-H] [user...]\n"
#define HELP "\
-e edit message in Compose window (default is to deliver immediately)\n\
-s subject set Subject: to `subject'\n\
-c user cc: to `user' (allowed multiple times)\n\
-NXHost host connect to Mail.app on given host\n\
-V show version\n\
-H this help\n\
"
void main(int ac,char *av[])
{
id speaker;
port_t mailPort;
int window;
char *to=0,*subject=0,*cc=0,*content=0;
int tolen=0,subjectlen=0,cclen=0,contentlen=0;
int tomaxlen=0,subjectmaxlen=0,ccmaxlen=0,contentmaxlen=0;
int editflg=0,c,i;
char *host=NULL;
int status=EXIT_SUCCESS;
set_progname(av[0]);
while((c=getopt(ac,av,"s:c:eN:VH"))!=EOF) switch(c)
{
case 's':
if (subject) appstring(&subject,&subjectlen,&subjectmaxlen," ",1);
appstring(&subject,&subjectlen,&subjectmaxlen,optarg,strlen(optarg));
break;
case 'c':
if (cc) appstring(&cc,&cclen,&ccmaxlen,",",1);
appstring(&cc,&cclen,&ccmaxlen,optarg,strlen(optarg));
case 'e':
editflg++;
break;
case 'N':
if ((strcmp(optarg,"XHost")==0||strcmp(optarg,"SHost")==0)&&(optind<ac))
{
host=av[optind++];
break;
}
status=EXIT_USAGE;
break;
case 'V':
status=EXIT_VERSION;
break;
case 'H':
status=EXIT_HELP;
break;
case '?':
default:
status=EXIT_USAGE;
break;
}
handle_usage_help_version(status, USAGE, HELP);
for(;optind<ac;optind++)
{
if (to) appstring(&to,&tolen,&tomaxlen,",",1);
appstring(&to,&tolen,&tomaxlen,av[optind],strlen(av[optind]));
}
while((i=fread(growstring(&content,&contentlen,&contentmaxlen,LINELEN*16),
1,16*LINELEN,stdin))>0)
contentlen+=i;
speaker = [[MailSpeaker alloc] init];
mailPort = NXPortFromName("Mail", host);
mailPort = NXPortFromName("MailSendDemo", host);
if (mailPort == PORT_NULL)
{
fprintf(stderr,"%s: unable to connect to Mail.app on %s\n", progname(), host ? host : "localhost");
exit(EXIT_FAILURE);
}
[speaker setSendPort: mailPort];
[speaker openSend:&window];
if (to)
{
appstring(&to,&tolen,&tomaxlen,"\0",1);
[speaker setTo:to inWindow:window];
}
if (subject)
{
appstring(&subject,&subjectlen,&subjectmaxlen,"\0",1);
[speaker setSubject:subject inWindow:window];
}
if (cc)
{
appstring(&cc,&cclen,&ccmaxlen,"\0",1);
[speaker setCc:cc inWindow:window];
}
if (content)
{
appstring(&content,&contentlen,&contentmaxlen,"\0",1);
[speaker setBody:content inWindow:window];
}
if ((!editflg) && to) [speaker deliver:window];
[speaker free];
exit(EXIT_SUCCESS);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.