diff options
| author | Po Lu | 2021-11-20 21:30:08 +0800 |
|---|---|---|
| committer | Po Lu | 2021-11-20 21:46:07 +0800 |
| commit | 85a078e7853d708e599f97a3de06aed3a1c090ea (patch) | |
| tree | 082931cb8ad6b276d8eaafeda685c368e0510f05 /lib-src | |
| parent | bfcc59371ba74e53c5ce1ba93bcddf9a9aa64230 (diff) | |
| download | emacs-85a078e7853d708e599f97a3de06aed3a1c090ea.tar.gz emacs-85a078e7853d708e599f97a3de06aed3a1c090ea.zip | |
Add support for the Haiku operating system and its window system
* .gitignore: Add binaries specific to Haiku.
* Makefie.in (HAVE_BE_APP): New variable.
(install-arch-dep): Install Emacs and Emacs.pdmp when
using Haiku.
* configure.ac: Detect and configure for Haiku and
various related configurations.
(be-app, be-freetype, be-cairo): New options.
(HAVE_BE_APP, HAIKU_OBJ, HAIKU_CXX_OBJ)
(HAIKU_LIBS, HAIKU_CFLAGS): New variables.
(HAIKU, HAVE_TINY_SPEED_T): New define.
(emacs_config_features): Add BE_APP.
* doc/emacs/Makefile.in (EMACSSOURCES): Add Haiku
appendix.
* doc/emacs/emacs.texi: Add Haiku appendix to menus and
include it.
* doc/emacs/haiku.texi: New Haiku appendix.
* doc/lispref/display.texi (Defining Faces, Window Systems):
Explain meaning of `haiku' as a window system identifier.
(haiku-use-system-tooltips): Explain meaning of system
tooltips on
Haiku.
* doc/lispref/frames.texi (Multiple Terminals): Explain
meaning of haiku as a display type.
(Frame Layout): Clarify section for Haiku frames.
(Size Parameters): Explain limitations of fullwidth and
fullheight on Haiku.
(Management Parameters): Explain limitations of
inhibiting double buffering on builds with Cairo,
and the inability of frames with no-accept-focus to
receive keyboard input on Haiku.
(Font and Color Parameters): Explain the different font
backends available on Haiku.
(Raising and Lowering): Explain that lowering and
restacking frames doesn't work on Haiku.
(Child Frames): Explain oddities of child frame
visibility on Haiku.
* doc/lispref/os.texi (System Environment): Explain
meaning of haiku.
* etc/MACHINES: Add appropriate notices for Haiku.
* etc/NEWS: Document changes.
* etc/PROBLEMS: Document font spacing bug on Haiku.
* lib-src/Makefile.in: Build be-resources binary on
Haiku.
(CXX, CXXFLAGS, NON_CXX_FLAGS, ALL_CXXFLAGS)
(HAVE_BE_APP, HAIKU_LIBS, HAIKU_CFLAGS): New variables.
(DONT_INSTALL): Add be-resources binary if on Haiku.
(be-resources): New target.
* lib-src/be_resources: Add helper binary for setting
resources on the Emacs application.
* lib-src/emacsclient.c (decode_options): Set
alt_display to "be" on Haiku.
* lisp/cus-edit.el (custom-button, custom-button-mouse)
(custom-button-unraised, custom-button-pressed): Update
face definitions for Haiku.
* lisp/cus-start.el: Add haiku-debug-on-fatal-error and
haiku-use-system-tooltips.
* lisp/faces.el (face-valid-attribute-values): Clarify
attribute comment for Haiku.
(tool-bar): Add appropriate toolbar color for Haiku.
* lisp/frame.el (haiku-frame-geometry)
(haiku-mouse-absolute-pixel-position)
(haiku-set-mouse-absolute-pixel-position)
(haiku-frame-edges)
(haiku-frame-list-z-order): New function declarations.
(frame-geometry, frame-edges)
(mouse-absolute-pixel-position)
(set-mouse-absolute-pixel-position)
(frame-list-z-order): Call appropriate window system
functions on Haiku.
(display-mouse-p, display-graphic-p)
(display-images-p, display-pixel-height)
(display-pixel-width, display-mm-height)
(display-mm-width, display-backing-store)
(display-save-under, display-planes)
(display-color-cells, display-visual-class): Update type
tests for Haiku.
* lisp/international/mule-cmds.el
(set-coding-system-map): Also
prevent set-terminal-coding-system from appearing in the menu
bar on Haiku.
* lisp/loadup.el: Load Haiku-specific files when built
with Haiku, and don't rename newly built Emacs on Haiku as BFS
doesn't support hard links.
* lisp/menu-bar.el (menu-bar-open): Add for Haiku.
* lisp/mwheel.el (mouse-wheel-down-event): Expect
wheel-up on Haiku.
(mouse-wheel-up-event): Expect wheel-down on Haiku.
(mouse-wheel-left-event): Expect wheel-left on Haiku.
(mouse-wheel-right-event): Expect wheel-right on Haiku.
* lisp/net/browse-url.el
(browse-url--browser-defcustom-type):
Add option for WebPositive.
(browse-url-webpositive-program): New variable.
(browse-url-default-program): Search for WebPositive.
(browse-url-webpositive): New function.
* lisp/net/eww.el (eww-form-submit, eww-form-file)
(eww-form-checkbox, eww-form-select): Define faces
appropriately for Haiku.
* lisp/term/haiku-win.el: New file.
* lisp/tooltip.el (menu-or-popup-active-p): New function
declaration.
(tooltip-show-help): Don't use tooltips on Haiku when a
menu is active.
* lisp/version.el (haiku-get-version-string): New
function declaration.
(emacs-version): Add Haiku version string if
appropriate.
* src/Makefile.in: Also produce binary named "Emacs"
with Haiku resources set.
(CXX, HAIKU_OBJ, HAIKU_CXX_OBJ, HAIKU_LIBS)
(HAIKU_CFLAGS, HAVE_BE_APP, NON_CXX_FLAGS)
(ALL_CXX_FLAGS): New variables.
(.SUFFIXES): Add .cc.
(.cc.o): New target.
(base_obj): Add Haiku C objects.
(doc_obj, obj): Split objects that should scanned for
documentation into doc_obj.
(SOME_MACHINE_OBJECTS): Add appropriate Haiku C objects.
(all): Depend on Emacs and Emacs.pdmp on Haiku.
(LIBES): Add Haiku libraries.
(gl-stamp)
($(etc)/DOC): Scan doc_obj instead of obj
(temacs$(EXEEXT): Use C++ linker on Haiku.
(ctagsfiles3): New variable.
(TAGS): Scan C++ files.
* src/alloc.c (garbage_collect): Mark Haiku display.
* src/dispextern.h (HAVE_NATIVE_TRANSFORMS): Also enable
on Haiku.
(struct image): Add fields for Haiku transforms.
(RGB_PIXEL_COLOR): Define to unsigned long on Haiku as
well.
(sit_for): Also check USABLE_SIGPOLL.
(init_display_interactive): Set initial window system to
Haiku on Haiku builds.
* src/emacs.c (main): Define Haiku syms and init haiku
clipboard.
(shut_down_emacs): Quit BApplication on Haiku and
trigger debug
on aborts if haiku_debug_on_fatal_error.
(Vsystem_type): Update docstring.
* src/fileio.c (next-read-file-uses-dialog-p): Enable on
Haiku.
* src/filelock.c (WTMP_FILE): Only define if BOOT_TIME
is also defined.
* src/floatfns.c (double_integer_scale): Work around
Haiku libroot brain damage.
* src/font.c (syms_of_font): Define appropriate font
driver symbols for Haiku builds with various options.
* src/font.h: Also enable ftcrfont on Haiku builds with
Cairo.
(font_data_structures_may_be_ill_formed): Also enable on
Haiku builds that have Cairo.
* src/frame.c (Fframep): Update doc-string for Haiku
builds and return haiku if appropriate.
(syms_of_frame): New symbol `haiku'.
* src/frame.h (struct frame): Add output data for Haiku.
(FRAME_HAIKU_P): New macro.
(FRAME_WINDOW_P): Test for Haiku frames as well.
* src/ftcrfont.c (RED_FROM_ULONG, GREEN_FROM_ULONG)
(BLUE_FROM_ULONG): New macros.
(ftcrfont_draw): Add haiku specific code for Haiku
builds with Cairo.
* src/ftfont.c (ftfont_open): Set face.
(ftfont_has_char, ftfont_text_extents): Work around
crash.
(syms_of_ftfont): New symbol `mono'.
* src/ftfont.h (struct font_info): Enable Cairo-specific
fields for Cairo builds on Haiku.
* src/haiku_draw_support.cc:
* src/haiku_font_support.cc:
* src/haiku_io.c:
* src/haiku_select.cc:
* src/haiku_support.cc:
* src/haiku_support.h:
* src/haikufns.c:
* src/haikufont.c:
* src/haikugui.h:
* src/haikuimage.c:
* src/haikumenu.c:
* src/haikuselect.c:
* src/haikuselect.h:
* src/haikuterm.c:
* src/haikuterm.h: Add new files for Haiku windowing
support.
* src/haiku.c: Add new files for Haiku operating system
support.
* src/image.c: Implement image transforms and native XPM
support
on Haiku.
(GET_PIXEL, PUT_PIXEL, NO_PIXMAP)
(PIX_MASK_RETAIN, PIX_MASK_DRAW)
(RGB_TO_ULONG, RED_FROM_ULONG, GREEN_FROM_ULONG)
(BLUE_FROM_ULONG, RED16_FROM_ULONG, GREEN16_FROM_ULONG)
(BLUE16_FROM_ULONG): Define to appropriate values on
Haiku.
(image_create_bitmap_from_data): Add Haiku support.
(image_create_bitmap_from_file): Add TODO on Haiku.
(free_bitmap_record): Free bitmap on Haiku.
(image_size_in_bytes): Implement for Haiku bitmaps.
(image_set_transform): Implement on Haiku.
(image_create_x_image_and_pixmap_1): Implement on Haiku,
24-bit or 1-bit only.
(image_destroy_x_image, image_get_x_image): Use correct
img and pixmap values on Haiku.
(lookup_rgb_color): Use correct macro on Haiku.
(image_to_emacs_colors): Implement on Haiku.
(image_disable_image): Disable on Haiku.
(image_can_use_native_api): Test for translator presence
on Haiku.
(native_image_load): Use translator on Haiku.
(imagemagick_load_image): Add Haiku-specific quirks.
(Fimage_transforms_p): Allow rotate90 on Haiku.
(image_types): Enable native XPM support on Haiku.
(syms_of_image): Enable XPM images on Haiku.
* src/keyboard.c (kbd_buffer_get_event)
(handle_async_input, handle_input_available_signal)
(handle_user_signal, Fset_input_interrupt_mode)
(init_keyboard): Check for USABLE_SIGPOLL along with
USABLE_SIGIO.
* src/lisp.h (pD): Work around broken Haiku headers.
(HAVE_EXT_MENU_BAR): Define on Haiku.
(handle_input_available_signal): Enable if we just have
SIGPOLL as well.
* src/menu.c (have_boxes): Return true on Haiku.
(single_menu_item): Enable toolkit menus on Haiku.
(find_and_call_menu_selection): Also enable on Haiku.
* src/process.c (keyboard_bit_set): Enable with only
usable SIGPOLL.
(wait_reading_process_output): Test for SIGPOLL as well
as SIGIO availability.
* src/sound.c (sound_perror, vox_open)
(vox_configure, vox_close): Enable for usable SIGPOLL as
well.
* src/sysdep.c (sys_subshell): Enable for usable SIGPOLL.
(reset_sigio): Make conditional on F_SETOWN.
(request_sigio, unrequest_sigio)
(emacs_sigaction_init): Also handle SIGPOLLs.
(init_sys_modes): Disable TCXONC usage on Haiku, as it
doesn't have any ttys other than pseudo ttys, which don't
support C-s/C-q flow control, and causes compiler warnings.
(speeds): Disable high speeds if HAVE_TINY_SPEED_T.
* src/termhooks.h (enum output_method): Add output_haiku.
(struct terminal): Add Haiku display info.
(TERMINAL_FONT_CACHE): Enable for Haiku.
* src/terminal.c (Fterminal_live_p): Return `haiku' if
appropriate.
* src/verbose.mk.in (AM_V_CXX, AM_V_CXXLD): New logging
variables.
* src/xdisp.c (redisplay_internal)
(note_mouse_highlight): Return on Haiku if a popup is activated.
(display_menu_bar): Return on Haiku if frame is a Haiku
frame.
* src/xfaces.c (GCGraphicsExposures): Enable correctly on Haiku.
(x_create_gc): Enable dummy GC code on Haiku.
* src/xfns.c (x-server-version, x-file-dialog): Add
Haiku specifics to doc strings.
* src/xterm.c (syms_of_xterm): Add Haiku information to
doc string.
Diffstat (limited to 'lib-src')
| -rw-r--r-- | lib-src/Makefile.in | 21 | ||||
| -rw-r--r-- | lib-src/be_resources.cc | 144 | ||||
| -rw-r--r-- | lib-src/emacsclient.c | 2 |
3 files changed, 167 insertions, 0 deletions
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index e6cda733679..d062e78366f 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in | |||
| @@ -27,7 +27,9 @@ EMACSOPT = -batch --no-site-file --no-site-lisp | |||
| 27 | # ==================== Things 'configure' will edit ==================== | 27 | # ==================== Things 'configure' will edit ==================== |
| 28 | 28 | ||
| 29 | CC=@CC@ | 29 | CC=@CC@ |
| 30 | CXX=@CXX@ | ||
| 30 | CFLAGS=@CFLAGS@ | 31 | CFLAGS=@CFLAGS@ |
| 32 | CXXFLAGS=@CXXFLAGS@ | ||
| 31 | CPPFLAGS = @CPPFLAGS@ | 33 | CPPFLAGS = @CPPFLAGS@ |
| 32 | LDFLAGS = @LDFLAGS@ | 34 | LDFLAGS = @LDFLAGS@ |
| 33 | 35 | ||
| @@ -130,6 +132,11 @@ MKDIR_P = @MKDIR_P@ | |||
| 130 | 132 | ||
| 131 | # ========================== Lists of Files =========================== | 133 | # ========================== Lists of Files =========================== |
| 132 | 134 | ||
| 135 | ## Haiku build-time support | ||
| 136 | HAVE_BE_APP=@HAVE_BE_APP@ | ||
| 137 | HAIKU_LIBS=@HAIKU_LIBS@ | ||
| 138 | HAIKU_CFLAGS=@HAIKU_CFLAGS@ | ||
| 139 | |||
| 133 | # emacsclientw.exe for MinGW, empty otherwise | 140 | # emacsclientw.exe for MinGW, empty otherwise |
| 134 | CLIENTW = @CLIENTW@ | 141 | CLIENTW = @CLIENTW@ |
| 135 | 142 | ||
| @@ -143,7 +150,11 @@ UTILITIES = hexl${EXEEXT} \ | |||
| 143 | $(if $(with_mailutils), , movemail${EXEEXT}) \ | 150 | $(if $(with_mailutils), , movemail${EXEEXT}) \ |
| 144 | $(and $(use_gamedir), update-game-score${EXEEXT}) | 151 | $(and $(use_gamedir), update-game-score${EXEEXT}) |
| 145 | 152 | ||
| 153 | ifeq ($(HAVE_BE_APP),yes) | ||
| 154 | DONT_INSTALL= make-docfile${EXEEXT} make-fingerprint${EXEEXT} be-resources | ||
| 155 | else | ||
| 146 | DONT_INSTALL= make-docfile${EXEEXT} make-fingerprint${EXEEXT} | 156 | DONT_INSTALL= make-docfile${EXEEXT} make-fingerprint${EXEEXT} |
| 157 | endif | ||
| 147 | 158 | ||
| 148 | # Like UTILITIES, but they're not system-dependent, and should not be | 159 | # Like UTILITIES, but they're not system-dependent, and should not be |
| 149 | # deleted by the distclean target. | 160 | # deleted by the distclean target. |
| @@ -230,6 +241,10 @@ WINDRES = @WINDRES@ | |||
| 230 | ## Some systems define this to request special libraries. | 241 | ## Some systems define this to request special libraries. |
| 231 | LIBS_SYSTEM = @LIBS_SYSTEM@ | 242 | LIBS_SYSTEM = @LIBS_SYSTEM@ |
| 232 | 243 | ||
| 244 | # Flags that could be in WARN_CFLAGS, but are invalid for C++. | ||
| 245 | NON_CXX_CFLAGS = -Wmissing-prototypes -Wnested-externs -Wold-style-definition \ | ||
| 246 | -Wstrict-prototypes -Wno-override-init | ||
| 247 | |||
| 233 | BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \ | 248 | BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \ |
| 234 | $(WARN_CFLAGS) $(WERROR_CFLAGS) \ | 249 | $(WARN_CFLAGS) $(WERROR_CFLAGS) \ |
| 235 | -I. -I../src -I../lib \ | 250 | -I. -I../src -I../lib \ |
| @@ -238,6 +253,9 @@ BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \ | |||
| 238 | ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS} | 253 | ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS} |
| 239 | CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS} | 254 | CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS} |
| 240 | 255 | ||
| 256 | ALL_CXXFLAGS = $(filter-out ${NON_CXX_CFLAGS},${BASE_CFLAGS}) \ | ||
| 257 | ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} ${HAIKU_CFLAGS} | ||
| 258 | |||
| 241 | # Configuration files for .o files to depend on. | 259 | # Configuration files for .o files to depend on. |
| 242 | config_h = ../src/config.h $(srcdir)/../src/conf_post.h | 260 | config_h = ../src/config.h $(srcdir)/../src/conf_post.h |
| 243 | 261 | ||
| @@ -407,6 +425,9 @@ emacsclientw${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(CLIENTRES) $(config_h) | |||
| 407 | $(LOADLIBES) \ | 425 | $(LOADLIBES) \ |
| 408 | $(LIB_WSOCK32) $(LIB_EACCESS) $(LIBS_ECLIENT) -o $@ | 426 | $(LIB_WSOCK32) $(LIB_EACCESS) $(LIBS_ECLIENT) -o $@ |
| 409 | 427 | ||
| 428 | be-resources: ${srcdir}/be_resources.cc ${config_h} | ||
| 429 | $(AM_V_CXXLD)$(CXX) ${ALL_CXXFLAGS} ${HAIKU_LIBS} $< -o $@ | ||
| 430 | |||
| 410 | NTINC = ${srcdir}/../nt/inc | 431 | NTINC = ${srcdir}/../nt/inc |
| 411 | NTDEPS = $(NTINC)/ms-w32.h $(NTINC)/sys/stat.h $(NTINC)/inttypes.h \ | 432 | NTDEPS = $(NTINC)/ms-w32.h $(NTINC)/sys/stat.h $(NTINC)/inttypes.h \ |
| 412 | $(NTINC)/stdint.h $(NTINC)/pwd.h $(NTINC)/sys/time.h $(NTINC)/stdbool.h \ | 433 | $(NTINC)/stdint.h $(NTINC)/pwd.h $(NTINC)/sys/time.h $(NTINC)/stdbool.h \ |
diff --git a/lib-src/be_resources.cc b/lib-src/be_resources.cc new file mode 100644 index 00000000000..e6a14f037b6 --- /dev/null +++ b/lib-src/be_resources.cc | |||
| @@ -0,0 +1,144 @@ | |||
| 1 | /* Haiku window system support | ||
| 2 | Copyright (C) 2021 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 (at | ||
| 9 | 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 <https://www.gnu.org/licenses/>. */ | ||
| 18 | |||
| 19 | #include <config.h> | ||
| 20 | |||
| 21 | #include <cstdio> | ||
| 22 | #include <cstring> | ||
| 23 | #include <cstdlib> | ||
| 24 | |||
| 25 | #include <SupportDefs.h> | ||
| 26 | #include <Path.h> | ||
| 27 | #include <AppFileInfo.h> | ||
| 28 | #include <TranslationUtils.h> | ||
| 29 | #include <Application.h> | ||
| 30 | #include <Catalog.h> | ||
| 31 | #include <Roster.h> | ||
| 32 | |||
| 33 | using namespace std; | ||
| 34 | |||
| 35 | static void | ||
| 36 | be_perror (status_t code, char *arg) | ||
| 37 | { | ||
| 38 | if (code != B_OK) | ||
| 39 | { | ||
| 40 | switch (code) | ||
| 41 | { | ||
| 42 | case B_BAD_VALUE: | ||
| 43 | fprintf (stderr, "%s: Bad value\n", arg); | ||
| 44 | break; | ||
| 45 | case B_ENTRY_NOT_FOUND: | ||
| 46 | fprintf (stderr, "%s: Not found\n", arg); | ||
| 47 | break; | ||
| 48 | case B_PERMISSION_DENIED: | ||
| 49 | fprintf (stderr, "%s: Permission denied\n", arg); | ||
| 50 | break; | ||
| 51 | case B_NO_MEMORY: | ||
| 52 | fprintf (stderr, "%s: No memory\n", arg); | ||
| 53 | break; | ||
| 54 | case B_LINK_LIMIT: | ||
| 55 | fprintf (stderr, "%s: Link limit reached\n", arg); | ||
| 56 | break; | ||
| 57 | case B_BUSY: | ||
| 58 | fprintf (stderr, "%s: Busy\n", arg); | ||
| 59 | break; | ||
| 60 | case B_NO_MORE_FDS: | ||
| 61 | fprintf (stderr, "%s: No more file descriptors\n", arg); | ||
| 62 | break; | ||
| 63 | case B_FILE_ERROR: | ||
| 64 | fprintf (stderr, "%s: File error\n", arg); | ||
| 65 | break; | ||
| 66 | default: | ||
| 67 | fprintf (stderr, "%s: Unknown error\n", arg); | ||
| 68 | } | ||
| 69 | } | ||
| 70 | else | ||
| 71 | { | ||
| 72 | abort (); | ||
| 73 | } | ||
| 74 | } | ||
| 75 | |||
| 76 | int | ||
| 77 | main (int argc, char **argv) | ||
| 78 | { | ||
| 79 | BApplication app ("application/x-vnd.GNU-emacs-resource-helper"); | ||
| 80 | BFile file; | ||
| 81 | BBitmap *icon; | ||
| 82 | BAppFileInfo info; | ||
| 83 | status_t code; | ||
| 84 | struct version_info vinfo; | ||
| 85 | char *v = strdup (PACKAGE_VERSION); | ||
| 86 | |||
| 87 | if (argc != 3) | ||
| 88 | { | ||
| 89 | printf ("be-resources ICON FILE: make FILE appropriate for Emacs.\n"); | ||
| 90 | return EXIT_FAILURE; | ||
| 91 | } | ||
| 92 | |||
| 93 | code = file.SetTo (argv[2], B_READ_WRITE); | ||
| 94 | if (code != B_OK) | ||
| 95 | { | ||
| 96 | be_perror (code, argv[2]); | ||
| 97 | return EXIT_FAILURE; | ||
| 98 | } | ||
| 99 | code = info.SetTo (&file); | ||
| 100 | if (code != B_OK) | ||
| 101 | { | ||
| 102 | be_perror (code, argv[2]); | ||
| 103 | return EXIT_FAILURE; | ||
| 104 | } | ||
| 105 | code = info.SetAppFlags (B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY); | ||
| 106 | if (code != B_OK) | ||
| 107 | { | ||
| 108 | be_perror (code, argv[2]); | ||
| 109 | return EXIT_FAILURE; | ||
| 110 | } | ||
| 111 | |||
| 112 | icon = BTranslationUtils::GetBitmapFile (argv[1], NULL); | ||
| 113 | |||
| 114 | if (!icon) | ||
| 115 | { | ||
| 116 | be_perror (B_ERROR, argv[1]); | ||
| 117 | return EXIT_FAILURE; | ||
| 118 | } | ||
| 119 | |||
| 120 | info.SetIcon (icon, B_MINI_ICON); | ||
| 121 | info.SetIcon (icon, B_LARGE_ICON); | ||
| 122 | info.SetSignature ("application/x-vnd.GNU-emacs"); | ||
| 123 | |||
| 124 | v = strtok (v, "."); | ||
| 125 | vinfo.major = atoi (v); | ||
| 126 | |||
| 127 | v = strtok (NULL, "."); | ||
| 128 | vinfo.middle = atoi (v); | ||
| 129 | |||
| 130 | v = strtok (NULL, "."); | ||
| 131 | vinfo.minor = v ? atoi (v) : 0; | ||
| 132 | |||
| 133 | vinfo.variety = 0; | ||
| 134 | vinfo.internal = 0; | ||
| 135 | |||
| 136 | strncpy ((char *) &vinfo.short_info, PACKAGE_VERSION, | ||
| 137 | sizeof vinfo.short_info - 1); | ||
| 138 | strncpy ((char *) &vinfo.long_info, PACKAGE_STRING, | ||
| 139 | sizeof vinfo.long_info - 1); | ||
| 140 | |||
| 141 | info.SetVersionInfo (&vinfo, B_APP_VERSION_KIND); | ||
| 142 | |||
| 143 | return EXIT_SUCCESS; | ||
| 144 | } | ||
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 0e800dd7e89..c55b29830df 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c | |||
| @@ -603,6 +603,8 @@ decode_options (int argc, char **argv) | |||
| 603 | alt_display = "ns"; | 603 | alt_display = "ns"; |
| 604 | #elif defined (HAVE_NTGUI) | 604 | #elif defined (HAVE_NTGUI) |
| 605 | alt_display = "w32"; | 605 | alt_display = "w32"; |
| 606 | #elif defined (HAVE_HAIKU) | ||
| 607 | alt_display = "be"; | ||
| 606 | #endif | 608 | #endif |
| 607 | 609 | ||
| 608 | display = egetenv ("DISPLAY"); | 610 | display = egetenv ("DISPLAY"); |