⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 criterr.c

📁 一个开源著名的TDE编辑器源代码
💻 C
字号:
/* * Use signals for Win32. There's probably a more appropriate way. * * * New editor name:  TDE, the Thomson-Davis Editor. * Author:           Frank Davis * Date:             June 5, 1991, version 1.0 * Date:             July 29, 1991, version 1.1 * Date:             October 5, 1991, version 1.2 * Date:             January 20, 1992, version 1.3 * Date:             February 17, 1992, version 1.4 * Date:             April 1, 1992, version 1.5 * Date:             June 5, 1992, version 2.0 * Date:             October 31, 1992, version 2.1 * Date:             April 1, 1993, version 2.2 * Date:             June 5, 1993, version 3.0 * Date:             August 29, 1993, version 3.1 * Date:             November 13, 1993, version 3.2 * Date:             June 5, 1994, version 4.0 * Date:             December 5, 1998, version 5.0 (jmh) * * This code is released into the public domain, Frank Davis. *    You may distribute it freely. */#include "tdestr.h"#include "common.h"#include "tdefunc.h"#include "criterr.h"#include <signal.h>#include <setjmp.h>extern jmp_buf editor_jmp;/* * Save the area of the screen that will display the Critical * Error info.  CEH_WIDTH and CEH_HEIGHT are the dimensions of critical * error screen in criterr.h. */#define CEH_ROW          5#define CEH_COL          6#define CEH_WIDTH       67#define CEH_HEIGHT      11#define CEH_INFO_ROW     9#define CEH_INFO_COL    18/* * buffer for ceh info screen. */static Char ceh_buffer[CEH_HEIGHT+1][CEH_WIDTH+4];/* * Name:    ctrl_break_handler * Purpose: Recognize Ctrl-Break * Author:  Jason Hood * Date:    August 10, 2002 * 050705:  recognise the other types, close if nothing's modified. */BOOL ctrl_break_handler( DWORD type ){register TDE_WIN *wp;int  rc;   if (type == CTRL_BREAK_EVENT) {      g_status.control_break = TRUE;      return( TRUE );   }   rc = FALSE;   for (wp=g_status.window_list; wp != NULL; wp=wp->next) {      if (wp->file_info->modified && !wp->file_info->scratch) {         rc = TRUE;         break;      }   }   return( rc );}/* * Name:    crit_err_handler * Purpose: Show user something is wrong and get a response * Date:    July 21, 1997 */void crit_err_handler( int sig ){int  c;const char * const *pp;static int aborted = FALSE;     /* returning generates another signal */   if (aborted)      ExitProcess( 1 );   g_display.output_space = g_display.frame_space;   save_area( (Char *)ceh_buffer, CEH_WIDTH, CEH_HEIGHT, CEH_ROW, CEH_COL );   show_strings( criterr_screen, CEH_HEIGHT, CEH_ROW, CEH_COL );   shadow_area( CEH_WIDTH, CEH_HEIGHT, CEH_ROW, CEH_COL );   switch (sig) {      case SIGABRT:         pp = sigabrt;         break;      case SIGFPE:         pp = sigfpe;         break;      case SIGILL:         pp = sigill;         break;      case SIGSEGV:      default:         pp = sigsegv;         break;   }   show_strings( pp, 3, CEH_INFO_ROW, CEH_INFO_COL );   xygoto( -1, -1 );   c = get_response( NULL, 0, 0, 3, L_CONTINUE, 0,                                    L_EXIT,     1,                                    L_ABORT,    2 );   if (c) {      console_exit( );      if (c == 1)         ExitProcess( 1 );      else {         aborted = TRUE;         return;                /* let the system handle it */      }   }   restore_area( (Char *)ceh_buffer, CEH_WIDTH, CEH_HEIGHT, CEH_ROW, CEH_COL );   g_display.output_space = FALSE;   signal( sig, crit_err_handler );   longjmp( editor_jmp, 1 );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -