Mercurial > emacs
view admin/unidata/biditype.awk @ 110592:c06958da83b5
Add fd handling with callbacks to select, dbus needs it for async operation.
* src/dbusbind.c: Include process.h.
(dbus_fd_cb, xd_find_watch_fd, xd_toggle_watch)
(xd_read_message_1): New functions.
(xd_add_watch, xd_remove_watch): Call xd_find_watch_fd. Handle
watch for both read and write.
(Fdbus_init_bus): Also register xd_toggle_watch.
(Fdbus_call_method_asynchronously, Fdbus_method_return_internal)
(Fdbus_method_error_internal, Fdbus_send_signal): Remove call
to dbus_connection_flush.
(xd_read_message): Move most of the code to xd_read_message_1.
Call xd_read_message_1 until status is COMPLETE.
* src/keyboard.c (readable_events, gobble_input): Remove DBUS code.
* src/process.c (gpm_wait_mask, max_gpm_desc): Remove.
(write_mask): New variable.
(max_input_desc): Renamed from max_keyboard_desc.
(fd_callback_info): New variable.
(add_read_fd, delete_read_fd, add_write_fd, delete_write_fd): New
functions.
(Fmake_network_process): FD_SET write_mask.
(deactivate_process): FD_CLR write_mask.
(wait_reading_process_output): Connecting renamed to Writeok.
check_connect removed. check_write is new. Remove references to
gpm. Use Writeok/check_write unconditionally (i.e. no #ifdef
NON_BLOCKING_CONNECT) instead of Connecting.
Loop over file descriptors and call callbacks in fd_callback_info
if file descriptor is ready for I/O.
(add_gpm_wait_descriptor): Just call add_keyboard_wait_descriptor.
(delete_gpm_wait_descriptor): Just call delete_keyboard_wait_descriptor.
(keyboard_bit_set): Use max_input_desc.
(add_keyboard_wait_descriptor, delete_keyboard_wait_descriptor): Remove
#ifdef subprocesses. Use max_input_desc.
(init_process): Initialize write_mask and fd_callback_info.
* src/process.h (add_read_fd, delete_read_fd, add_write_fd)
(delete_write_fd): Declare.
author | Jan D <jan.h.d@swipnet.se> |
---|---|
date | Sun, 26 Sep 2010 18:20:01 +0200 |
parents | 7e588bac2220 |
children | 6378d1b57038 |
line wrap: on
line source
# Generate data for filling bidi_type_table, see src/bidi.c:bidi_initialize. # Copyright (C) 2010, Free Software Foundation, Inc. # This file is part of GNU Emacs. # GNU Emacs 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. # GNU Emacs is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. # Written by Eli Zaretskii <eliz@gnu.org> function trtype(type) { # Types are listed in the order of decresing use in UnicodeData.txt: if (type == "ON") return "NEUTRAL_ON"; else if (type == "NSM") return "WEAK_NSM"; else if (type == "AL") return "STRONG_AL"; else if (type == "R") return "STRONG_R"; else if (type == "BN") return "WEAK_BN"; else if (type == "EN") return "WEAK_EN"; else if (type == "ET") return "WEAK_ET"; else if (type == "AN") return "WEAK_AN"; else if (type == "WS") return "NEUTRAL_WS"; else if (type == "CS") return "WEAK_CS"; else if (type == "ES") return "WEAK_ES"; else if (type == "B") return "NEUTRAL_B"; else if (type == "S") return "NEUTRAL_S"; else if (type == "LRE" || type == "RLE" || type == "LRO" || type == "RLO" || type == "PDF") return type; else if (type == "L") return "STRONG_L"; else { printf "Unknown type: %s\n", type > "/dev/stderr"; exit 1; } } BEGIN { otype = ""; startcode = ""; endcode = ""; printf " struct {\n int from, to;\n bidi_type_t type;\n } bidi_type[] = {\n"; first = 1; } { code = $1; ntype = $5; if (ntype != otype) { # Don't output data for L, as that's the default value, see bidi.c. if (otype != "L" && startcode != "") { if (!first) printf ",\n"; else first = 0; printf "\t{ 0x%s, 0x%s, %s }", startcode, endcode, trtype(otype); } otype = ntype; startcode = code; endcode = code; } else endcode = code; } END { printf " };\n"; }