| 1 | /* MS-DOS specific C utilities, interface. |
| 2 | Copyright (C) 1993, 2001-2014 Free Software Foundation, Inc. |
| 3 | |
| 4 | This file is part of GNU Emacs. |
| 5 | |
| 6 | GNU Emacs is free software: you can redistribute it and/or modify |
| 7 | it under the terms of the GNU General Public License as published by |
| 8 | the Free Software Foundation, either version 3 of the License, or |
| 9 | (at your option) any later version. |
| 10 | |
| 11 | GNU Emacs is distributed in the hope that it will be useful, |
| 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 14 | GNU General Public License for more details. |
| 15 | |
| 16 | You should have received a copy of the GNU General Public License |
| 17 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
| 18 | |
| 19 | #ifndef EMACS_MSDOS_H |
| 20 | #define EMACS_MSDOS_H |
| 21 | |
| 22 | #include <dpmi.h> |
| 23 | |
| 24 | int dos_ttraw (struct tty_display_info *); |
| 25 | int dos_ttcooked (void); |
| 26 | int dos_get_saved_screen (char **, int *, int *); |
| 27 | int dos_set_keyboard (int, int); |
| 28 | void dos_set_window_size (int *, int *); |
| 29 | |
| 30 | int getdefdir (int, char*); |
| 31 | void unixtodos_filename (char *); |
| 32 | void dostounix_filename (char *); |
| 33 | char *rootrelativepath (char *); |
| 34 | void init_environment (int, char **, int); |
| 35 | void internal_terminal_init (void); |
| 36 | void initialize_msdos_display (struct terminal *); |
| 37 | |
| 38 | extern int have_mouse; |
| 39 | void mouse_init (void); |
| 40 | void mouse_on (void); |
| 41 | void mouse_off (void); |
| 42 | void mouse_moveto (int, int); |
| 43 | |
| 44 | #include <sys/types.h> |
| 45 | #include <sys/stat.h> |
| 46 | |
| 47 | #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4 |
| 48 | int readlink (const char *, char *, size_t); |
| 49 | #endif |
| 50 | ssize_t readlinkat (int, const char *, char *, size_t); |
| 51 | int fstatat (int, char const *, struct stat *, int); |
| 52 | int unsetenv (const char *); |
| 53 | |
| 54 | /* Constants. */ |
| 55 | #define EINPROGRESS 112 |
| 56 | /* Gnulib sets O_CLOEXEC to O_NOINHERIT, which gets in the way when we |
| 57 | need to redirect standard handles for subprocesses using temporary |
| 58 | files created by mkostemp, see callproc.c. */ |
| 59 | #ifdef O_CLOEXEC |
| 60 | # undef O_CLOEXEC |
| 61 | #endif |
| 62 | #define O_CLOEXEC 0 |
| 63 | |
| 64 | \f |
| 65 | #ifndef HAVE_X_WINDOWS |
| 66 | /* Dummy types. */ |
| 67 | typedef int XFontStruct; |
| 68 | typedef int GC; |
| 69 | typedef int Pixmap; |
| 70 | typedef int Display; |
| 71 | typedef int Window; |
| 72 | typedef int XRectangle; |
| 73 | #define PIX_TYPE unsigned long |
| 74 | #define XDISPLAY |
| 75 | |
| 76 | typedef struct tty_display_info Display_Info; |
| 77 | |
| 78 | extern struct tty_display_info the_only_display_info; |
| 79 | |
| 80 | #define FRAME_X_DISPLAY(f) ((Display *) 0) |
| 81 | #define FRAME_FONT(f) ((f)->output_data.tty->font) |
| 82 | #define FRAME_DISPLAY_INFO(f) (&the_only_display_info) |
| 83 | |
| 84 | /* Prototypes. */ |
| 85 | |
| 86 | /* Forward declarations for prototypes. */ |
| 87 | struct frame; |
| 88 | struct window; |
| 89 | |
| 90 | /* Defined in xfns.c; emulated on msdos.c */ |
| 91 | |
| 92 | extern void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object); |
| 93 | |
| 94 | #define XFreeGC (void) |
| 95 | #define x_destroy_bitmap(p1,p2) |
| 96 | #define XGetGeometry(p1,p2,p3,p4,p5,p6,p7,p8,p9) |
| 97 | #define DisplayWidth(p1,p2) (SELECTED_FRAME()->text_cols) |
| 98 | #define DisplayHeight(p1,p2) (SELECTED_FRAME()->text_lines) |
| 99 | #define XMenuSetAEQ (void) |
| 100 | #define XMenuSetFreeze (void) |
| 101 | #define XMenuRecompute (void) |
| 102 | #define XM_FAILURE -1 |
| 103 | #define XM_SUCCESS 1 |
| 104 | #define XM_NO_SELECT 2 |
| 105 | #define XM_IA_SELECT 3 |
| 106 | #define ButtonReleaseMask 0 |
| 107 | |
| 108 | typedef struct x_menu_struct |
| 109 | { |
| 110 | int count; |
| 111 | char **text; |
| 112 | struct x_menu_struct **submenu; |
| 113 | int *panenumber; /* Also used as enable. */ |
| 114 | int allocated; |
| 115 | int panecount; |
| 116 | int width; |
| 117 | const char **help_text; |
| 118 | } XMenu; |
| 119 | |
| 120 | XMenu *XMenuCreate (Display *, Window, char *); |
| 121 | int XMenuAddPane (Display *, XMenu *, char const *, int); |
| 122 | int XMenuAddSelection (Display *, XMenu *, int, int, char *, int, char const *); |
| 123 | void XMenuLocate (Display *, XMenu *, int, int, int, int, |
| 124 | int *, int *, int *, int *); |
| 125 | int XMenuActivate (Display *, XMenu *, int *, int *, int, int, unsigned, |
| 126 | char **, void (*callback)(char const *, int, int)); |
| 127 | void XMenuDestroy (Display *, XMenu *); |
| 128 | |
| 129 | #endif /* not HAVE_X_WINDOWS */ |
| 130 | |
| 131 | #endif /* not EMACS_MSDOS_H */ |
| 132 | |