void make_note (const char* board_name, const char *sender, const char *to, const char *subject, const int expire_days, const char *text) { int board_index = board_lookup (board_name); BOARD_DATA *board; NOTE_DATA *note; char *strtime; if (board_index == BOARD_NOTFOUND) { bug ("make_note: board not found",0); return; } if (strlen2(text) > MAX_NOTE_TEXT) { bug ("make_note: text too long (%d bytes)", strlen2(text)); return; } board = &boards [board_index]; note = new_note(); /* allocate new note */ note->sender = str_dup (sender); note->to_list = str_dup(to); note->subject = str_dup (subject); note->expire = current_time + expire_days * 60 * 60 * 24; note->text = str_dup (text); /* convert to ascii. ctime returns a string which last character is \n, so remove that */ strtime = ctime (¤t_time); strtime[strlen(strtime)-1] = '\0'; note->date = str_dup (strtime); finish_note (board, note); }
void copyover_recover(void) { DESC_DATA *d; FILE *fp; char name[100]; char host[STRING]; char board[100]; char user[100]; int desc; bool fOld; log_string("Copyover: Copyover recovery initiated."); if (!(fp = fopen(COPYOVER_FILE, "r"))) { bbs_bug("Copyover_recover: Could not open to read %s", COPYOVER_FILE); exit(1); } unlink(COPYOVER_FILE); for (;;) { fscanf(fp, "%d %s %s %s %s\n", &desc, board, name, user, host); if (desc == -1) break; if (!write_to_desc(desc, "", 0)) { close(desc); continue; } d = new_desc(); d->descr = desc; if (d->host) free_string(d->host); d->host = str_dup(host); if (d->ident) free_string(d->ident); d->ident = str_dup(user); d->next = desc_list; desc_list = d; d->login = CON_REBOOT_RECOVER; fOld = load_user(d, name); if (!fOld) { write_to_desc( desc, "\n\rSomehow, your user was lost in the reboot, sorry.\n\r", 0); close_socket(d); } else { if (!d->user->pBoard) d->user->pBoard = board_lookup("lobby", FALSE); d->user->next = user_list; user_list = d->user; d->login = CON_LOGIN; USR(d)->logon = current_time; USR(d)->pBoard = board_lookup(board, FALSE); save_user(USR(d)); } } system_info("Reboot recover complete"); log_string("Copyover: Done."); fclose(fp); return; }