#include <sys/types.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <stdio.h> #include <time.h> #include <dirent.h> #include <unistd.h> /* include main header file */ #include "mud.h" NOTE_DATA *note_first; void startup_notes() { log_string("Loading: Notes"); load_notes(); } /* * load_notes() * * Loads up the notes */ void load_notes() { FILE *fp; NOTE_DATA *n; char *from; note_first = NULL; fp = fopen (NOTE_FILE, "r"); /* No Notes, dont load! */ if (!fp) return; from = strdup(fread_word(fp)); /* until end_marker is reached */ while (!compares(from, END_MARKER)) { { /* add new area */ n = malloc(sizeof(NOTE_DATA)); n->from = strdup(from); n->number = fread_number(fp); n->datestamp= fread_number(fp); n->to = fread_string(fp); n->subject = fread_string(fp); n->text = fread_string(fp); n->next = note_first; note_first = n; log_string("DEBUG: Note added From: %s To: %s Subject: %s", n->from, n->to, n->subject); } from = strdup(fread_word(fp)); } fclose (fp); } /* * save_notes() * * Runs through the list and saves * all valid notes to NOTE_FILE */ void save_notes() { FILE *fp; NOTE_DATA *n; if (!note_first) { unlink (NOTE_FILE); return; } fp = fopen (NOTE_FILE, "w"); if (!fp) { bug ("Could not open " NOTE_FILE " for writing",0); return; } for (n = note_first; n ; n = n->next) fprintf (fp, "%s\n%d %ld\n%s\n%s\n%s\n", n->from, n->number, n->datestamp, n->to, n->subject, n->text); fprintf (fp, "%s\n",END_MARKER); fclose (fp); } /* * clear_note() * * Completely nulls out ch->in_progress */ /* NOT WORKING */ void clear_note (D_MOBILE * ch) { ch->in_progress->from = "Myself"; ch->in_progress->to = "no one"; ch->in_progress->subject= "no subject"; ch->in_progress->text = "no body"; ch->in_progress->number = -1; ch->in_progress->datestamp = -1; } void cmd_note (D_MOBILE * ch, char *arg) { char buf[MAX_BUFFER]; char arg1[MAX_BUFFER]; arg = one_arg(arg, arg1); return; if (arg1[0] == '\0') { stc("Syntax is:\n\r", ch); stc(" note read - Reads next unread note\n\r", ch); stc(" note read <number> - Read specified note number\n\r", ch); stc(" note to <who> - Sets who note is for (person/all/imm)\n\r", ch); stc(" note subject <subject> - Sets subject\n\r", ch); stc(" note + <one line> - adds one line\n\r", ch); stc(" note clear - Destroys all text in body of note\n\r", ch); stc(" note list - Shows list of all notes\n\r", ch); stc(" note show - Shows current note in progress\n\r", ch); return; } if (compares(arg1, "clear")) { clear_note(ch); stc("Note cleared.\n\r", ch); return; } if (compares(arg1, "show")) { sprintf(buf, "From: %s\n\r", ch->name); stc(buf, ch); sprintf(buf, "To: %s\n\r", ch->in_progress->to); stc(buf, ch); sprintf(buf, "Subject: %s\n\r", ch->in_progress->subject); stc(buf, ch); sprintf(buf, "Text:\n%s\n\r", ch->in_progress->text); stc(buf, ch); return; } /* Handle arg 'to' */ if (compares(arg1, "to")) { ch->in_progress->to = strdup(arg); sprintf(buf, "Note to %s\n", ch->in_progress->to); stc(buf, ch); return; } /* Handle arg 'subject' */ if (compares(arg1, "subject")) { ch->in_progress->subject = strdup(arg); sprintf(buf, "Subject %s\n", ch->in_progress->subject); stc(buf, ch); return; } /* Handle arg 'text' */ if (compares(arg1, "text")) { ch->in_progress->text = strdup(arg); sprintf(buf, "text %s\n", ch->in_progress->text); stc(buf, ch); return; } }