/* Do not remove the headers from this file! see /USAGE for more info. */ /* ** standard.c ** ** The standard "mail" command. This is a standard modal mailer, compared ** to the Mh-style mailer. ** ** Created 31-OCT-94, Deathblade. */ #include <playerflags.h> #include <mudlib.h> #include <daemons.h> inherit MAILER; private nomask string query_prompt() { return sprintf("[%d of %d] mail: ", mailbox_ob->query_message_index() + 1, mailbox_ob->query_message_count()); } private void stdmail_cmd_replyall(mixed cmd_args) { if ( cmd_args && !(cmd_args = to_int(cmd_args)) ) { write("Usage: R #\n"); return; } cmd_reply(cmd_args, 1); } private void stdmail_cmd_reply(mixed cmd_args) { if ( cmd_args && !(cmd_args = to_int(cmd_args)) ) { write("Usage: r #\n"); return; } cmd_reply(cmd_args, 0); } private void stdmail_cmd_help() { string output; output = "? This help screen\n" "\n" "m <name1> [name2] [name3]... Send mail.\n" "h [# or range (1-4,6 for example)] Show the headers for the specified\n" " range of messages, or all messages\n" " if no range is specified.\n" "# Read a message.\n" "r # Reply to message\n" "R # Reply to message, all\n" " originial recipients receive the mail\n" "f # Forward message\n" "d # or range Delete message(s)\n" "$ Show the number of messages in your box.\n" "= [#] Set current message if # is provided\n" " else shows the current message #\n" "+ increment the current message number\n" " but do not read.\n" "- decrement the current message number\n" " but do not read.\n" "n read the next message.\n" ; if( wizardp(this_user()) ) output += "s [#] <filename> Save message w/ header intact to file.\n" "w [#] <filename> Save message but no header to file.\n"; output += "\n" "All numbers default to the currently referenced message, which is shown by =\n" "\n" "Groups may also be mailed to, see help for groups on how to set them\n" "up.... you can mail to them by enclosing " "The group in (). Eg, Mm (admin) rust will mail all the admins and rust.\n"; more(output); } private void stdmail_cmd_forward(string cmd_args) { mixed newto; int num; if(!cmd_args || (sscanf(cmd_args,"%d %s",num,newto)!=2&& (sscanf(cmd_args,"%s",newto)!=1))) { write("Usage: f # <name1> [name2] ...\n"); return; } cmd_forward(num, newto); } private void stdmail_cmd_save(string cmd_args) { int num; string fname; if(!cmd_args || (sscanf(cmd_args,"%d %s",num,fname)!=2&& sscanf(cmd_args,"%s",fname)!=1)) { write("Usage: s # <filename>\n"); return; } cmd_read(num, fname, 0); } private void stdmail_cmd_write(string cmd_args) { int num; string fname; if(!cmd_args || (sscanf(cmd_args,"%d %s",num,fname)!=2&& sscanf(cmd_args,"%s",fname)!=1)) { write("Usage: w # <filename>\n"); return; } cmd_read(num, fname, 1); } private nomask void mail_prompt(string input) { string cmd_args; input = trim_spaces(input); if ( sizeof(input) >= 3 && input[1] == ' ' ) cmd_args = input[2..]; if(!sizeof(input)) { int idx; idx = mailbox_ob->first_unread_message() + 1; if( !idx ) { modal_pop(); destruct( this_object()); return; } else cmd_read( idx, 0, 0); return; } switch ( input[0] ) { case 'q': modal_pop(); destruct(this_object()); break; case 'h': cmd_headers(cmd_args); break; case 'm': cmd_mail(cmd_args); break; case 'R': stdmail_cmd_replyall(cmd_args); break; case 'r': stdmail_cmd_reply(cmd_args); break; case '?': stdmail_cmd_help(); break; case 'd': cmd_delete(cmd_args); break; case 'f': stdmail_cmd_forward(cmd_args); break; case 's': stdmail_cmd_save(cmd_args); break; case '=': cmd_setcurrent(cmd_args); break; case 'w': stdmail_cmd_write(cmd_args); break; case 'n': { int idx; idx = mailbox_ob->first_unread_message() + 1; if ( !idx ) printf("No more messages.\n"); else cmd_read(idx, 0, 0); break; } case '+': cmd_setcurrent(mailbox_ob->query_message_index()+2 ); break; case '-': cmd_setcurrent(mailbox_ob->query_message_index() ); break; case '$': printf("You have %d messages.\n", mailbox_ob->query_message_count()); break; default: if ( to_int(input) > 0 ) cmd_read(to_int(input), 0, 0); else write("Type ? for help\n"); break; } } nomask void begin_mail(string arg) { int idx; if ( arg && trim_spaces(arg) != "" ) { cmd_mail(arg); return; } modal_push((: mail_prompt :), (: query_prompt :)); idx = mailbox_ob->first_unread_message() + 1; if (!idx) { write( "No Unread Messages.\n" ); write( "(h for old headers)\n" ); } else { write(sprintf("\n--- %s Mailer ---\nCurrent headers:\n", mud_name())); cmd_headers( idx + "-" + mailbox_ob->query_message_count()); } }