--- lbbs/src/article_del.c 2025/06/15 04:47:59 1.2 +++ lbbs/src/article_del.c 2025/11/04 13:49:50 1.8 @@ -1,23 +1,15 @@ -/*************************************************************************** - article_del.c - description - ------------------- - copyright : (C) 2004-2025 by Leaflet - email : leaflet@leafok.com - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 3 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * article_del + * - user interactive feature to delete article + * + * Copyright (C) 2004-2025 by Leaflet + */ #include "article_del.h" #include "database.h" -#include "log.h" #include "io.h" +#include "log.h" #include "screen.h" #include "user_priv.h" #include @@ -40,20 +32,32 @@ int article_del(const SECTION_LIST *p_se log_error("NULL pointer error\n"); } + if (p_article->excerption) // Delete is not allowed + { + clearscr(); + moveto(1, 1); + prints("该文章无法被删除,请联系版主。"); + press_any_key(); + + return 0; + } + clearscr(); moveto(1, 1); - prints("Ҫɾ£(Y), (N) [N]: "); + prints("真的要删除文章?(Y)是, (N)否 [N]: "); iflush(); for (ch = 0; !SYS_server_exit; ch = igetch_t(MAX_DELAY_TIME)) { switch (toupper(ch)) { + case KEY_NULL: + case KEY_TIMEOUT: + goto cleanup; case CR: - igetch_reset(); case KEY_ESC: case 'N': - goto cleanup; + return 0; case 'Y': break; default: // Invalid selection @@ -63,6 +67,11 @@ int article_del(const SECTION_LIST *p_se break; } + if (SYS_server_exit) // Do not save data on shutdown + { + goto cleanup; + } + db = db_open(); if (db == NULL) { @@ -118,7 +127,7 @@ int article_del(const SECTION_LIST *p_se clearscr(); moveto(1, 1); - prints("ѱɾԺˢб"); + prints("该文章已被删除,请稍后刷新列表。"); press_any_key(); goto cleanup; @@ -128,7 +137,7 @@ int article_del(const SECTION_LIST *p_se { clearscr(); moveto(1, 1); - prints("޷ɾϵ"); + prints("该文章无法被删除,请联系版主。"); press_any_key(); goto cleanup; @@ -212,7 +221,7 @@ int article_del(const SECTION_LIST *p_se clearscr(); moveto(1, 1); - prints("ɾɹ%dˢб", BBS_section_list_load_interval); + prints("删除成功,请在%d秒后刷新列表。", BBS_section_list_load_interval); press_any_key(); ret = 1; // Success