// File : /cmds/adm/_setnews.c // Creator : Watcher@TMI (02/03/93) // // This command is used by admins to create NEWS items // to be read on login by specific users groups. #include <config.h> #include <mudlib.h> #include <daemons.h> inherit DAEMON ; #define SYNTAX "Usage: setnews [source file]\n" string title, file, Class; int busy, count; int cmd_setnews(string str) { notify_fail( SYNTAX ); if(!str || str == "") return 0; // Command permissions check if(!adminp(geteuid(this_player()))) { notify_fail("Setnews: permission denied.\n"); return 0; } // Get full path name for requested file file = resolv_path(this_player()->query("cwd"), str); // Check to see if the requested file exists if(!file_exists(file)) { notify_fail("Setnews: Invalid filename.\n"); return 0; } busy = 1; // Set command busy command write("\nTitle of news item: "); input_to("item_title"); return 1; } static int item_title(string str) { if(!str || str == "") str = "General news item."; title = str; write("Is the news item for wizards, players, or all? [w/p/a] "); input_to("news_level"); return 1; } static int news_level(string str) { if(!str || member_array(str, ({ "w", "p", "a" })) == -1) { write("Setnews: Invalid response.\n"); busy = 0; return 1; } Class = str; write("How many repeats ? [0 = always] "); input_to("set_repeat"); return 1; } static int set_repeat(string str) { // Convert string input to its corresponding numerical value count = atoi(str); if(!intp(count) || count < 0) { write("Setnews: Invalid response.\n"); busy = 0; return 1; } // Attempt to write new news item to news directory if(!write_file( (NEWS_DIR + time() + ":" + Class + ":" + count), title + "\n\n" + read_file( file ) + "\n")) write("\nSetnews: Failed to save news item.\n"); else { write("\nNew news item added.\n"); rm( file ); MSG_D->load_news_list(); } busy = 0; // Reset command activity flag return 1; } int query_busy() { return busy; } string help() { return( SYNTAX + "\n" + "This command will add the specified file to the news, and remove\n" + "your source file. The command will also request display settings\n" + "like the number of repeats and the display audience for the new\n" + "item. The command works in conjunction with the news daemon and\n" + "the user mud login sequence.\n"); }