⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mail.c

📁 具有IDE功能的编辑器
💻 C
字号:
/* mail.c - runs subject/to dialog, then pipes buffer through mail shell command   Copyright (C) 1996-2000 Paul Sheer   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307, USA. */#include "coolwidget.h"#include "mad.h"CWidget * mail_editor;void do_mail (CWidget * edit);void pipe_mail (char *reply_to, char *from, char *to, char *subject, char *cc, char *bcc){    FILE *p;    p = (FILE *) popen ("sendmail -t", "w");    if (!p)	p = (FILE *) popen ("/usr/sbin/sendmail -t", "w");    if (!p)	p = (FILE *) popen ("/usr/lib/sendmail -t", "w");    if (!p) {	return;#if 0	CErrorDialog (mail_editor->mainid, 20, 20, _ (" Mail "), _ (" popen() failed for 'mail' command. \n Check that 'mail' is in your path, and accepts \n    mail -s <subject> -c <copies_to_address> <to_address> "));#endif    } else {	errno = 0;	if (to)	    if (*to)		fprintf (p, "To: %s\n", to);	if (from)	    if (*from)		fprintf (p, "From: %s\n", from);	if (subject)	    if (*subject)		fprintf (p, "Subject: %s\n", subject);	if (cc)	    if (*cc)		fprintf (p, "CC: %s\n", cc);	if (bcc)	    if (*bcc)		fprintf (p, "Bcc: %s\n", bcc);	if (reply_to)	    if (*reply_to)		fprintf (p, "Reply-To: %s\n", reply_to);	fprintf (p, "\n");	edit_write_stream (mail_editor->editor, p);	pclose (p);    }}#if 0void pipe_mail (char *to, char *subject, char *cc){    long i;    int mail_pipe, error_pipe, len;    FILE *a, *b;    char *s;    char *argv[10] =    {"mail", "-W", 0, "-c", 0, 0, 0, 0};    argv[2] = subject;    argv[4] = cc;    argv[5] = to;    triple_pipe_open (&mail_pipe, &error_pipe, 0, 1, argv[0], argv);    switch (fork ()) {    case -1:	close (mail_pipe);	close (error_pipe);	CErrorDialog (mail_editor->mainid, 20, 20, _(" Mail "), _(" Error forking mail "));	return;    case 0:	a = fdopen (mail_pipe, "w");	edit_write_stream (mail_editor->editor, a);	fclose (a);	exit (1);    default:	break;    }    len = 0;    s = read_pipe (error_pipe, &len);    if (len)	CErrorDialog (mail_editor->mainid, 20, 20, _(" Mail "), "%s", s);    close (error_pipe);}#endifvoid mail_subject_to_cc_dialog (Window in, int x, int y){    Window win;    CEvent cwevent;    CState s;    int y2, w;    if (!mail_editor->editor->last_byte) {	CErrorDialog (mail_editor->mainid, 20, 20, _ (" Mail "), _ (" Type out a message first "));	return;    }    CBackupState (&s);    CDisable ("*");    win = CDrawHeadedDialog ("mail", in, x, y, _ (" Send Mail "));    CGetHintPos (&x, &y);    (CDrawText ("mail.tcmd", win, x, y, _ ("Will run `sendmail -t' with a composed header")))->position = POSITION_FILL;/* Toolhint */    CSetToolHint ("mail.tcmd", _ ("Your system sendmail command may not accept the option -t.\nIf so, create a wrapper script or install GNU sendmail"));    CGetHintPos (0, &y);    y2 = y;    (CDrawText ("mail.treply", win, x, y, "Reply-To: "))->hotkey = 'R';    CGetHintPos (&w, 0);    w -= WIDGET_SPACING;    (CDrawTextInput ("mail.reply", win, w, y, (FONT_MEAN_WIDTH) * 50, AUTO_HEIGHT, 1024, CLastInput ("mail.reply")))->hotkey = 'R';/* Toolhint */    CSetToolHint ("mail.reply", "Your email address");    CSetToolHint ("mail.treply", "Your email address");    CGetHintPos (0, &y);    (CDrawText ("mail.tfrom", win, x, y, "From: "))->hotkey = 'F';    CSetWidgetSize ("mail.tfrom", w - x, FONT_PIX_PER_LINE + TEXT_RELIEF * 2 + 2);    (CDrawTextInput ("mail.from", win, w, y, (FONT_MEAN_WIDTH) * 50, AUTO_HEIGHT, 1024, CLastInput ("mail.from")))->hotkey = 'F';/* Toolhint */    CSetToolHint ("mail.from", "Your email address");    CSetToolHint ("mail.tfrom", "Your email address");    CGetHintPos (0, &y);    (CDrawText ("mail.tto", win, x, y, "To: "))->hotkey = 'T';    CSetWidgetSize ("mail.tto", w - x, FONT_PIX_PER_LINE + TEXT_RELIEF * 2 + 2);    (CDrawTextInput ("mail.to", win, w, y, (FONT_MEAN_WIDTH) * 50, AUTO_HEIGHT, 1024, CLastInput ("mail.to")))->hotkey = 'T';/* Toolhint */    CSetToolHint ("mail.to", _ ("Email the author with comments/bugs/suggestions:\n  psheer@icon.co.za"));    CSetToolHint ("mail.tto", _ ("Email the author with comments/bugs/suggestions:\n  psheer@icon.co.za"));    CGetHintPos (0, &y);    (CDrawText ("mail.tsubject", win, x, y, "Subject: "))->hotkey = 'S';    CSetWidgetSize ("mail.tsubject", w - x, FONT_PIX_PER_LINE + TEXT_RELIEF * 2 + 2);    (CDrawTextInput ("mail.subject", win, w, y, (FONT_MEAN_WIDTH) * 50, AUTO_HEIGHT, 1024, CLastInput ("mail.subject")))->hotkey = 'S';    CGetHintPos (0, &y);    (CDrawText ("mail.tcc", win, x, y, "CC: "))->hotkey = 'C';    CSetWidgetSize ("mail.tcc", w - x, FONT_PIX_PER_LINE + TEXT_RELIEF * 2 + 2);    (CDrawTextInput ("mail.cc", win, w, y, (FONT_MEAN_WIDTH) * 50, AUTO_HEIGHT, 1024, CLastInput ("mail.cc")))->hotkey = 'C';    CGetHintPos (0, &y);    (CDrawText ("mail.tbcc", win, x, y, "Bcc: "))->hotkey = 'B';    CSetWidgetSize ("mail.tbcc", w - x, FONT_PIX_PER_LINE + TEXT_RELIEF * 2 + 2);    (CDrawTextInput ("mail.bcc", win, w, y, (FONT_MEAN_WIDTH) * 50, AUTO_HEIGHT, 1024, CLastInput ("mail.bcc")))->hotkey = 'B';    CGetHintPos (0, &y);    get_hint_limits (&x, 0);    CDrawPixmapButton ("mail.send", win, x, y2, PIXMAP_BUTTON_TICK);    CGetHintPos (0, &y2);    CDrawPixmapButton ("mail.cancel", win, x, y2, PIXMAP_BUTTON_CROSS);    CIdent ("mail")->position = WINDOW_ALWAYS_RAISED;    CSetSizeHintPos ("mail");    CMapDialog ("mail");    CFocus (CIdent ("mail.to"));    for (;;) {	CNextEvent (NULL, &cwevent);	if (!CIdent ("mail"))	    break;	if (!strcmp (cwevent.ident, "mail.cancel") || cwevent.command == CK_Cancel)	    break;	if (!strcmp (cwevent.ident, "mail.send") || cwevent.command == CK_Enter) {	    if (!*((CIdent ("mail.to"))->text)) {		CErrorDialog (mail_editor->mainid, 20, 20, _ (" Mail "), _ (" You must specify a `To:' address "));	    } else {		CHourGlass (win);		pipe_mail ((CIdent ("mail.reply"))->text, (CIdent ("mail.from"))->text,			   (CIdent ("mail.to"))->text, (CIdent ("mail.subject"))->text,		(CIdent ("mail.cc"))->text, (CIdent ("mail.bcc"))->text);		CUnHourGlass (win);		break;	    }	}    }    CDestroyWidget ("mail");    CRestoreState (&s);}void do_mail (CWidget * edit){    mail_editor = edit;    mail_subject_to_cc_dialog (edit->mainid, 20, 20);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -