2002-09-22 Marcus Brinkmann * pager.c, pager.h: New file. * Makefile (SRCS): Add pager.c. (LCLHDRS): Add pager.h. * display.c: Do not include , , , and . Include and "pager.h". (struct display): Replace member PAGER and MEMOBJ with USER_PAGER. (display_get_filemap): Implement with user_pager_get_filemap. (user_destroy): Implement with user_pager_destroy. (user_create): Implement partially with user_create. (display_init): Call user_pager_init. (struct user_pager_info, pager_bucket, pager_clear_user_data, pager_read_page, pager_write_page, pager_unlock_page, pager_report_extent, pager_dropweak, service_paging_requests): Move to ... * pager.c: ... here. * console.c: Include . (netfs_S_dir_notice_changes): New variable PREQ. Clean out the dead wood, eh, dead name notifications from the CONS->dirmod_req list. * display.c (struct user_pager_info): Drop members DISPLAY and P. (struct display): Remove member UPI and add member PAGER. (pager_report_extent): Remove local variable DISPLAY, use UPI directly. (user_create): New variable UPI to hold the user pager info. Modify the code to match new struct organization. (user_destroy): Unmap the user data. (display_notice_changes): Request dead-name notifications. (free_modreqs): Cancel dead-name notification request before deallocation send right. (display_notice_filechange): Likewise. (do_mach_notify_msg_accepted): Likewise. (display_destroy): Take DISPLAY->lock while operating. Reset the filemod_reqs and filemod_reqs_pending members of DISPLAY to NULL. (do_mach_notify_port_deleted): Add comment. (do_mach_notify_dead_name): Implement. (do_mach_notify_no_senders): Implement by delegating to libports. (do_mach_notify_send_once): Don't fail. 2002-09-18 Marcus Brinkmann * hurd.ti: Enable and , fix the comments. * display.c (handle_esc_bracket_question_hl): Handle escape bracket 1000 h/l for XTerm-like mouse tracking enable/disable. * display.c (handle_esc_bracket): Use scrolling region for , , , , , , and
. Also fix off-by-one error in , . * hurd.ti: Change and to escape bracket right-angle sequences. Add , , and , disable . * display.c (handle_esc_bracket_m): Map \E[21m to normal intensity (as a way to switch off bright intensity). (handle_esc_bracket): Fix calculation of fill area for . (struct scrolling_region): New type. (struct display): New members INSERT_MODE and CSR. (display_output_one): For , also reset DISPLAY->insert_mode and DISPLAY->csr. (display_create): Initialize DISPLAY->csr.bottom. (display_output_one): If in insert mode, shift to the right before printing the character. (linefeed): Take scrolling region into account. (handle_esc_bracket): Switch the meaning of 'h' and 'l'. (handle_esc_bracket_question): Likewise. (handle_esc_bracket_question_hl): Switch the interpretation of FLAG. (handle_esc_bracket_hl): Likewise. Add support for insert mode and . (struct parse): New state STATE_ESC_BRACKET_RIGHT_ANGLE. (display_output_one): Handle STATE_ESC_BRACKET_RIGHT_ANGLE. (display_output_one): Move the bold attribute handling from here (, ) ... (handle_esc_bracket_right_angle_hl): ... to here. New function handling and . (handle_esc_bracket_right_angle): New function. (handle_esc_bracket): Implement . 2002-09-17 Marcus Brinkmann * input.c (input_enqueue): Initialize ERR. * bdf.c, bdf.h, display-drv.h, dynafont.c, dynafont.h, focus.c, focus.h, input-drv.h, main.c, ourfs_notify.defs, vcons.c, vcons.h, vga.c, vga-display.c, vga.h, vga-hw.h: Obsolete files removed. * display.c (handle_esc_bracket_m): Really disable italics on . 2002-09-16 Marcus Brinkmann * hurd.ti: Add capabilities , , , . * display.c (handle_esc_bracket_m): Add support for italic. (display_output_one): Add new capabilities PU1 and PU2 to toggle bold mode. Reset PARSE->state on most escape sequences. * console.c (parse_attributes): Rename old bold attribute to bright. Add support for italic and bold. 2002-09-10 Marcus Brinkmann * display.c (DISPLAY_CHANGE_FLAGS): New macro. (struct changes): New member FLAGS. (display_flush_filechange): Handle change of flags. (display_output_some): Initialize DISPLAY->changes.flags. (display_start_output): Clear CONS_FLAGS_SCROLL_LOCK in DISPLAY. (display_stop_output): Set CONS_FLAGS_SCROLL_LOCK in DISPLAY. * display.c (display_output_some): If iconv fails with EILSEQ, skip the next byte in the buffer and print a replacement character. 2002-08-30 Marcus Brinkmann * display.c (display_create): Likewise. Set DISPLAY->attr.attr_def instead the color versions. (struct attr): Remove fgcol_def, bgcol_def, and add attr_def. (handle_esc_bracket_m): Set all attributes to their defaults for case 0. Set default color using default attribute for case 49 and case 39. (display_output_one): Likewise. * console.c (options): Add --attribute option. (parse_opt): Parse --attribute option. Bail out with argp_error on error. (netfs_append_args): ... (struct cons): Replace foreground and background with new attribute member. (vcons_lookup): Pass CONS->attribute to display_create instead CONS->foreground and CONS->background. (main): Set default colors and attributes. (parse_attributes): New function. * console.c (parse_opt): If STATE->input is zero, use netfs_root_node's hook to cons. 2002-08-28 Marcus Brinkmann * display.c (screen_fill): Take CUR_LINES modulo LINES. (screen_shift_left): Likewise. (screen_shift_right): Likewise. (linefeed): Don't take CUR_LINES modulo LINES here. 2002-08-28 Marcus Brinkmann * display.c (display_output_one): Also set USER->cursor.status to normal for ECMA-48 (hard reset). 2002-08-23 Marcus Brinkmann * Makefile (DIST_FILES): New variable. * hurd.ti: New file describing the terminal capabilities of the Hurd console server. 2002-08-22 Marcus Brinkmann * console.h: Move file to ../hurd/. * Makefile (LCLHDRS): Remove console.h. * display.c: Include instead "console.h". * console.c: Likewise. * display.h: Add prototype for display_get_size. * display.c (display_get_size): New function. (nowait_file_changed): Update for new interfaces. * console.c (new_node): Use display_get_size to retrieve size of display node. (netfs_get_dirents): Initialize FIRST_VCONS to silence gcc warning. 2002-07-15 Marcus Brinkmann * display.c: Restore copyright notice until the papers by Kalle are actually received. 2002-06-27 Marcus Brinkmann * Makefile (MIGSTUBS): Add fs_notifyUser.o. (MIGSFLAGS): New variable. * console.c: Include "fs_notify_U.h". (struct modreq): New structure. (struct cons): New members DIRMOD_REQS and DIRMOD_TICK. (cons_notice_dirchange): New function. (vcons_lookup): Call cons_notice_dirchange. (netfs_S_dir_notice_changes): New function. (main): Initialize new members in CONS. * display.c (nowait_file_changed): Update to new interface (new argument TICKNO). (do_mach_notify_msg_accepted): Call nowait_file_changed with new argument. (display_notice_changes): Likewise. (display_notice_filechange): Likewise. 2002-06-25 Marcus Brinkmann * Makefile (HURDLIBS): Add pager, reported by Alfred M. Szmidt. * display.c (screen_shift_left): Don't increase DST twice in one iteration. * display.c (screen_shift_right): Likewise. 2002-06-25 Marcus Brinkmann * Makefile (LCLHDRS): Add priv.h and mutations.h. (MIGSTUBS): Add tioctlServer.o * console.c: Include . (new_node): Bump up st_size for display node. (S_tioctl_tiocflush, S_tioctl_tiocgwinsz, S_tioctl_tiocstart, S_tioctl_tiocstop, S_tioctl_tiocoutq, S_tioctl_tiocspgrp, S_tioctl_tiocgpgrp): New functions. (S_tioctl_tiocmodg, S_tioctl_tiocmods, S_tioctl_tiocexcl, S_tioctl_tiocnxcl, S_tioctl_tiocgeta, S_tioctl_tiocseta, S_tioctl_tiocsetaw, S_tioctl_tiocsetaf, S_tioctl_tiocgetd, S_tioctl_tiocsetd, S_tioctl_tiocdrain, S_tioctl_tiocmget, S_tioctl_tiocmset, S_tioctl_tiocsig, S_tioctl_tiocext, S_tioctl_tiocswinsz, S_tioctl_tiocremote, S_tioctl_tiocmbic, S_tioctl_tiocmbis, S_tioctl_tiocpkt, S_tioctl_tiocsti, S_tioctl_tioccdtr, S_tioctl_tiocsdtr, S_tioctl_tioccbrk, S_tioctl_tiocsbrk): New stubs. (console_demuxer): New function. (main): Don't call netfs_server_loop, but call ports_manage_port_operations_multithread, so we can use our own demuxer. * mutations.h: Use intran and outtran for netfs. * priv.h: Likewise. * console.h (cons_change_t): Add bits for bell_audible and bell_visible. (struct cons_display): Add member BELL. * display.c (struct changes): Add new members bell_audible and bell_visible. Add bit flag macro names for those. (display_flush_filechange): Start with first index in buffer. Signal bell events. (display_record_filechange): Set DISPLAY_CHANGE_MATRIX bit in the disjoint case after flushing the update. (display_output_one): Recognize '\a' as audible bell and '\Eg' as visible bell. (display_output_some): Handle bell updates. 2002-06-24 Marcus Brinkmann * console.h (cons_color_t): New enum type replacing color macros. (CONS_COLOR_MAX): New macro. (cons_change_t): New type. (struct cons_display): New member CHANGES. * console.c: Include "console.h". (DEFAULT_FOREGROUND, DEFAULT_FOREGROUND_NAME, DEFAULT_BACKGROUND, DEFAULT_BACKGROUND_NAME): New macros. (struct cons): New members foreground and background. (vcons_lookup): Pass colors to display_create invocation. (new_node): Fix st_size for display node. (color_names): New array. (options): Add options to set default foreground and background color. (parse_color): New function. (parse_opt): Implement new options. (netfs_append_args): Add new options to output. (main): Set default colors. * Makefile (DIST_FILES): Remove target. (MIGSTUBS): Remove ourfs_notifyUser.o and add notifyServer.o. * display.c: Do not include "ourfs_notify_U.h". (struct modreq): New member PENDING. (struct notify): New structure. (struct display): New members FILEMOD_REQS_PENDING and NOTIFY_PORT. (pager_read_page): Hand out previously returned pages. (pager_unlock_page): Assert that this is not called. (notify_class, notify_bucket): New port class and bucket global variables. (nowait_file_changed): New function, modified from mig output. (do_mach_notify_port_deleted): New stub function. (do_mach_notify_port_destroyed): New stub function. (do_mach_notify_no_senders): New stub function. (do_mach_notify_dead_name): New stub function. (do_mach_notify_send_once): New stub function. (do_mach_notify_msg_accepted): New function. (service_notifications): New function. (display_notice_changes): Call nowait_file_changed with new argument. Initialize REQ->pending. (display_notice_filechange): Remove arguments except DISPLAY. Set PENDING flags in pending filemod requests. Call nowait_file_changed with new notify argument. If notification will be sent, move modreq structure to pending list. (display_flush_filechange): Rewritten to use ring buffer to store changes. (user_create): Initialize new members of struct cons_display. (display_init): Initialize notify_class and notify_bucket. (display_create): Accept new arguments for default colors. Initialize new members of struct display. (display_destroy): Remove pending filemod requests and destroy the notification port. Do not free the display structure memory. (display_destroy_complete): New function. * display.h: Add new arguments to prototype of display_create. 2002-06-18 Marcus Brinkmann * console.h: Update all CONS_KEY_* macros to match other terminfo definitions (like "linux", "screen", "gnome"). Add CONS_CHAR_* macros for terminal graphic characters. * display.c (struct attr): New member ALTCHAR to flag usage of alternate character set. (display_notice_filechange): Make static. (handle_escape_bracket_m): Set ALTCHAR to 0 when resetting. Support new modes 10 and 11 to disable and enable ALTCHAR. (limit_cursor): New function, moved to global scope from ... (handle_escape_bracket): ... here. (linefeed): New function, moved to global scope from ... (display_output_one): ... here. (horizontal_tab): New function. (handle_escape_bracket): Add alias \E[' to \E[G for VT100 compatibility. Add capability \E[a (horizontal cursor position relative) for ECMA-48 compatibility. Add capabilities \E[I (horizontal tab) and \E[Z (backward tabulation) for ECMA-48 compatibility. Move capabilities \E[s and \E[u to ... (display_output_one): ... here as \E7 and \E8 for VT100 compatibility. (altchar_to_ucs4): New function. (display_output_one): Use altchar_to_ucs4 when in altchar mode. Add \EM (reset) capability. 2002-06-17 Marcus Brinkmann * console.c (new_node): Adjust size of display node. * console.h: Add macros for color names. Add macros for intensity names. Add new types conchar_t and conchar_attr_t, which represent a console matrix cell and the attribute of one such cell, resp. Add macros for keycodes. (struct cons_display): Change type of _matrix member to conchar_t. * display.c (struct attr): Rewrite, using cons_attr_t to hold the attributes. (handle_escape_bracket_m): Use new members of ATTR. (display_flush_filechange): Send notification for changed matrix before the notification for new cur_line. Fix types in length calculation. (conchar_memset): New function. (user_create): Accept CHR and ATTR arguments. Fix calculation of NPAGES. Use conchar_memset instead of wmemset. (screen_fill): Fix type of ATTR argument. Use conchar_memset instead of wmemset. (screen_shift_left): Fix type of ATTR argument. Set attribute of empty cells. Fix length calculation. (screen_shift_right): Likewise. (handle_escape_bracket): Set default parameter for HUP. Be more ECMA-48 conform. (display_output_one): Fix arguments in screen_fill invocation. Set attribute for character output. Add from ECMA-48. (display_create): Use 50 lines for now. Set default colors, and add new arguments to user_create invocation. 2002-06-15 Marcus Brinkmann * display.c (struct changes): Change type of WHICH from int to unsigned int. (display_flush_filechanges): Likewise for argument TYPE. Fix a zillion bugs. (display_record_filechange): Fix half a zillion bugs. (screen_shift_left): Fix order of arguments. Just flag a normal write change for the whole region, instead trying to be clever. (screen_shift_right): Likewise. 2002-06-14 Marcus Brinkmann * display.c (struct changes): New structure to temporarily hold changes to the display. (struct display): New member CHANGES. (display_flush_filechange): New function. (display_record_filechange): Likewise. (screen_fill): Use display_record_filechange instead display_notice_filechange. (display_output_one): Likewise. (screen_shift_left): Flush pending filechanges before scrolling. (screen_shift_right): Likewise. (display_output_one): Don't notice changes here ... (display_output_some): ... but here. * display.c (struct user_pager_info): Add members MEMOBJ_NPAGES and MEMOBJ_PAGES to hold the allocated and returned pages. (struct display): Remove member MEMOBJ_SIZE. (pager_clear_user_data): Deallocate returned pages for this pager object. (pager_read_page): Add an assertion to check that we don't create new pages for already allocated and returned pages. (pager_write_page): Implement by just holding to the page and storing its address in the pager object for later deallocation. (pager_report_extent): Implement using new member MEMOBJ_NPAGES rather than MEMOBJ_SIZE. (user_create): Allocate extra storage for the returned pages in UPI. 2002-06-13 Marcus Brinkmann * Makefile (DIST_FILES): New target. (MIGSTUBS): Likewise. (OBJS): Add $(MIGSTUBS). * ourfs_notify.defs: New file. * console.c: Diddle order of typedefs. (netfs_attempt_read): Clip AMT to bytes left to read before calling display_read. (netfs_S_file_notice_changes): New function. * console.h: Include , not . Change all types from u_int32_t to uint32_t. * display.c: Include and "outfs_notify_U.h". Change all u_int_32 types to uint32_t. (struct modreq): New structure. (struct display): New member filemod_reqs. (free_modreqs): New function. (display_notice_changes): Likewise. (display_notice_filechange): Likewise. (display_destroy): Free filemod_reqs member of DISPLAY. (MATRIX_POS): Macro removed. (screen_fill): Rewritten. (screen_shift_left): New function. (screen_shift_right): Likewise. (screen_scroll_up): Function removed. (screen_scroll_down): Likewise. (screen_scroll_left): Likewise. (screen_scroll_right): Likewise. (handle_esc_bracket): Use new screen_* functions. (display_output_one): Store old cursor and screen attributes, and if they have been changed, send file change notifications. * display.h: New prototype for display_notice_changes. 2002-06-12 Marcus Brinkmann * console.c: Include . Do not include "console.h", but inline it. New macro DEFAULT_ENCODING. (struct cons): De-const-ify member ENCODING. (mycons, cons): Remove global variables. (vcons_lookup): Use default encoding if CONS->encoding is not set. (new_node): Access CONS through VCONS. Adjust size of display node. (netfs_attempt_read): Truncate length to read before reading. (netfs_S_io_map): New function. (options): New global variable. (parse_opt): New function. (netfs_append_args): New function. (main): New variable CONS to hold console structure. Rediddle initialization to allocate memory for it, parse arguments, and create the root node in correct order. Also call display_init. * console.h: Rewritten with new meaning. It now describes the public interface of the console. * display.c: Include , , , and "console.h". (struct screen): Removed. (struct cursor): Remove members X, Y and status. (struct user_pager_info): New struct. (struct display): Remove member SCREEN, add new members USER, UPI, MEMOBJ and MEMOBJ_SIZE. (pager_bucket): New global variable. (display_get_filemap): New function. (pager_clear_user_data): Likewise. (pager_read_page): Likewise. (pager_write_page): Likewise. (pager_unlock_page): Likewise. (pager_report_extent): Likewise. (pager_dropweak): Likewise. (service_paging_requests): Likewise. (screen_init): Renamed to ... (user_create): ... this new function and changed to allocate memory object and map it for USER data in display structure. (screen_deinit): Renamed to ... (user_destroy): ... this new function and rewrote it. (MATRIX_POS): New macro. (screen_fill): Take DISPLAY argument instead SCREEN. Use MATRIX_POS. (screen_scroll_up): Likewise. (screen_scroll_down): Likewise. (screen_scroll_left): Likewise. (screen_scroll_right): Likewise. (handle_esc_bracket_hl): Take DISPLAY argument instead CURSOR. (handle_esc_bracket): Access screen and cursor fields correctly. (display_output_one): Likewise. (display_getsize): Likewise. (display_init): New function. (display_create): New variables width, height, lines. Call user_create, not screen_init. Call user_destroy, not screen_deinit. (display_destroy): Call user_destroy, not screen_deinit. (display_read): Reimplement using memory mapping. * display.h: New prototypes for display_init and display_get_filemap. 2002-06-09 Marcus Brinkmann * display.c (struct cursor): Change type of all members from int to u_int32_t. (screen_init): Initialize SCREEN->lines with 25 instead 200 for now. (screen_fill): Bring SCREEN->current_line into the calculation of MATRIXP. (screen_scroll_up): Likewise. (screen_scroll_down): Likewise. (screen_scroll_left): Likewise. (screen_scroll_right): Likewise. (display_output_one): Beautify code a bit. (display_read): Add metadata to beginning of file. * console.c (new_node): Increase size of display node to include metadata. 2002-06-05 Marcus Brinkmann * input.h: New file. * input.c: Likewise. * console.h: Likewise. * console.c: Likewise. * display.h: New development version. * display.c: Likewise. * Makefile (SRCS): Replace with files for new console server. (LCLHDRS): Likewise. (HURDLIBS): Likewise. (OBJS): Likewise. 2002-06-05 Marcus Brinkmann * input.h: Renamed to ... * input-drv.h: ... this. * focus.c: Include "input-drv.h" instead "input.h". * console.c: Likewise. * Makefile (LCLHDRS): Rename input.h to input-drv.h. * main.c: Include "vcons.h" instead "console.h". * focus.c: Likewise. * Makefile (LCLHDRS): Rename console.h to vcons.h. (SRCS): Rename console.c to vcons.c. 2002-06-04 Marcus Brinkmann * display.h: New file. * display.c: Likewise. 2002-06-04 Marcus Brinkmann * display.h: Renamed to ... * display-drv.h: ... this. * Makefile (LCLHDRS): Rename display.h to display-drv.h. * console.c: Include "display-drv.h" instead "display.h". * vga-display.c: Likewise. 2002-06-03 Marcus Brinkmann * console.c (vcons_release): Fix last change. 2002-06-02 Marcus Brinkmann * console.c (vcons_lookup): Correct nesting. (vcons_release): Negate if condition. Delete VCONS_LIST in CONS with last virtual console. 2002-03-23 James A. Morrison * main.c (main): Use error, not fprintf and exit. 2002-03-17 Roland McGrath * mutations.h (TIOCTL_IMPORTS): New macro. * priv.h: Protect from multiple inclusion. * vga.c (vga_init): io_perm -> ioperm. (vga_deinit): Likewise. * dynafont.c: Include . * focus.c: Likewise. * vga.c: Likewise. * vga-display.c: Likewise. * main.c: Include . (main): Use `error' instead of perror + exit. (console_mode, console_owner, console_group): Use *_t, not int. 2002-03-17 Marcus Brinkmann * bdf.c, bdf.h, console.c, console.h, display.h, dynafont.c, dynafont.h, focus.c, focus.h, input.h, main.c, Makefile, mutations.h, priv.h, vga.c, vga-display.c, vga.h, vga-hw.h: New files.