Fri Dec 29 14:39:09 PST 2000 Michael Jennings <mej@eterm.org>
Moved the HAVE_SAVED_UIDS define into a configure option so that the FreeBSD folks will have an easier time with it. Fixed "make distcheck" which broke at some point. That X stuff in clean_exit() should only happen if we're debugging. Nobody but me should have to deal with those random hangs. :-) Added a patch for multibyte cursor support from Michael C. Wu <keichii@iteration.net> and Sung-Hyun Nam <namsh@lgic.co.kr>, along with some other FreeBSD-related patches from Mr. Wu. SVN revision: 4065
This commit is contained in:
parent
f6c6837bf9
commit
683627b0e9
15
ChangeLog
15
ChangeLog
|
@ -4010,3 +4010,18 @@ Fri Nov 24 18:53:13 PST 2000 Michael Jennings <mej@eterm.org>
|
|||
fixes XIM-related seg faults during clean-up.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Fri Dec 29 14:39:09 PST 2000 Michael Jennings <mej@eterm.org>
|
||||
|
||||
Moved the HAVE_SAVED_UIDS define into a configure option so that the
|
||||
FreeBSD folks will have an easier time with it.
|
||||
|
||||
Fixed "make distcheck" which broke at some point.
|
||||
|
||||
That X stuff in clean_exit() should only happen if we're debugging.
|
||||
Nobody but me should have to deal with those random hangs. :-)
|
||||
|
||||
Added a patch for multibyte cursor support from Michael C. Wu
|
||||
<keichii@iteration.net> and Sung-Hyun Nam <namsh@lgic.co.kr>, along
|
||||
with some other FreeBSD-related patches from Mr. Wu.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
|
|
@ -360,6 +360,7 @@
|
|||
#undef TIMER_IDENT
|
||||
#undef UTMP_IDENT
|
||||
#undef WINDOWS_IDENT
|
||||
#undef HAVE_SAVED_UIDS
|
||||
|
||||
|
||||
/* Leave that blank line there!! Autoheader needs it.
|
||||
|
|
78
configure.in
78
configure.in
|
@ -13,28 +13,28 @@ AC_SUBST(AUTHORS)
|
|||
AC_DEFINE_UNQUOTED(AUTHORS, "$AUTHORS")
|
||||
|
||||
dnl# Find RCS Ident info from source files
|
||||
AC_DEFINE_UNQUOTED(ACTIONS_IDENT, "`grep '$''Id:' src/actions.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(BUTTONS_IDENT, "`grep '$''Id:' src/buttons.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(COMMAND_IDENT, "`grep '$''Id:' src/command.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(DRAW_IDENT, "`grep '$''Id:' src/draw.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(E_IDENT, "`grep '$''Id:' src/e.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(EVENTS_IDENT, "`grep '$''Id:' src/events.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(FONT_IDENT, "`grep '$''Id:' src/font.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(GRKELOT_IDENT, "`grep '$''Id:' src/grkelot.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(MAIN_IDENT, "`grep '$''Id:' src/main.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(MENUS_IDENT, "`grep '$''Id:' src/menus.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(MISC_IDENT, "`grep '$''Id:' src/misc.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(NETDISP_IDENT, "`grep '$''Id:' src/netdisp.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(OPTIONS_IDENT, "`grep '$''Id:' src/options.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(PIXMAP_IDENT, "`grep '$''Id:' src/pixmap.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(SCREEN_IDENT, "`grep '$''Id:' src/screen.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(SCROLLBAR_IDENT, "`grep '$''Id:' src/scrollbar.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(STARTUP_IDENT, "`grep '$''Id:' src/startup.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(SYSTEM_IDENT, "`grep '$''Id:' src/system.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(TERM_IDENT, "`grep '$''Id:' src/term.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(TIMER_IDENT, "`grep '$''Id:' src/timer.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(UTMP_IDENT, "`grep '$''Id:' src/utmp.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(WINDOWS_IDENT, "`grep '$''Id:' src/windows.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(ACTIONS_IDENT, "`grep '$''Id:' $srcdir/src/actions.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(BUTTONS_IDENT, "`grep '$''Id:' $srcdir/src/buttons.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(COMMAND_IDENT, "`grep '$''Id:' $srcdir/src/command.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(DRAW_IDENT, "`grep '$''Id:' $srcdir/src/draw.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(E_IDENT, "`grep '$''Id:' $srcdir/src/e.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(EVENTS_IDENT, "`grep '$''Id:' $srcdir/src/events.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(FONT_IDENT, "`grep '$''Id:' $srcdir/src/font.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(GRKELOT_IDENT, "`grep '$''Id:' $srcdir/src/grkelot.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(MAIN_IDENT, "`grep '$''Id:' $srcdir/src/main.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(MENUS_IDENT, "`grep '$''Id:' $srcdir/src/menus.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(MISC_IDENT, "`grep '$''Id:' $srcdir/src/misc.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(NETDISP_IDENT, "`grep '$''Id:' $srcdir/src/netdisp.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(OPTIONS_IDENT, "`grep '$''Id:' $srcdir/src/options.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(PIXMAP_IDENT, "`grep '$''Id:' $srcdir/src/pixmap.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(SCREEN_IDENT, "`grep '$''Id:' $srcdir/src/screen.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(SCROLLBAR_IDENT, "`grep '$''Id:' $srcdir/src/scrollbar.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(STARTUP_IDENT, "`grep '$''Id:' $srcdir/src/startup.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(SYSTEM_IDENT, "`grep '$''Id:' $srcdir/src/system.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(TERM_IDENT, "`grep '$''Id:' $srcdir/src/term.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(TIMER_IDENT, "`grep '$''Id:' $srcdir/src/timer.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(UTMP_IDENT, "`grep '$''Id:' $srcdir/src/utmp.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
AC_DEFINE_UNQUOTED(WINDOWS_IDENT, "`grep '$''Id:' $srcdir/src/windows.c | sed 's/^.*\$''Id: //;s/ \$.*$//;s/.v / /;s/ Exp//'`")
|
||||
|
||||
dnl# Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
|
||||
if test ! -z "${CFLAGS}" -o ! -z "${CCOPTS}"; then
|
||||
|
@ -264,6 +264,34 @@ AC_ARG_WITH(pty-group,
|
|||
AC_MSG_RESULT(none)
|
||||
fi
|
||||
)
|
||||
AC_MSG_CHECKING(for saved uids)
|
||||
AC_ARG_WITH(saved-uids, [ --with(out)-saved-uids specify that your OS has (does not have) saved uids, default is to guess],
|
||||
if test "$withval" = "yes"; then
|
||||
AC_MSG_RESULT(user specified yes)
|
||||
HAVE_SAVED_UIDS=1
|
||||
elif test "$withval" = "no"; then
|
||||
AC_MSG_RESULT(user specified no)
|
||||
HAVE_SAVED_UIDS=0
|
||||
fi
|
||||
)
|
||||
if test "x$HAVE_SAVED_UIDS" = "x"; then
|
||||
case `uname -s` in
|
||||
Linux | linux | GNU*Linux) HAVE_SAVED_UIDS=1 ;;
|
||||
HP*UX | hp*ux) HAVE_SAVED_UIDS=1 ;;
|
||||
AIX | aix) HAVE_SAVED_UIDS=1 ;;
|
||||
Solaris | SunOS | [Ss]un) HAVE_SAVED_UIDS=1 ;;
|
||||
*BSD) HAVE_SAVED_UIDS=0 ;;
|
||||
esac
|
||||
if test "x$HAVE_SAVED_UIDS" = "x"; then
|
||||
AC_MSG_RESULT(unknown...assuming no support)
|
||||
HAVE_SAVED_UIDS=0
|
||||
elif test $HAVE_SAVED_UIDS -eq 1; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_SAVED_UIDS)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl#
|
||||
dnl# X LIBRARIES
|
||||
|
@ -861,15 +889,15 @@ for i in utils/kEsetroot themes/Eterm/theme.cfg themes/auto/theme.cfg themes/cEt
|
|||
} else {
|
||||
print $0;
|
||||
}
|
||||
}' $i.in > $i
|
||||
}' $srcdir/$i.in > $srcdir/$i
|
||||
done
|
||||
&%
|
||||
changequote([, ])dnl
|
||||
|
||||
dnl If we're not building with Imlib support, don't build Esetroot
|
||||
if test -z "$GRLIBS"; then
|
||||
sed -e 's/^bin_PROGRAMS.*$//g' doc/Makefile > doc/Makefile.new
|
||||
mv doc/Makefile.new doc/Makefile
|
||||
sed -e 's/^bin_PROGRAMS.*$//g' $srcdir/doc/Makefile > $srcdir/doc/Makefile.new
|
||||
mv $srcdir/doc/Makefile.new $srcdir/doc/Makefile
|
||||
fi
|
||||
|
||||
echo "
|
||||
|
|
|
@ -1138,18 +1138,18 @@ clean_exit(void)
|
|||
}
|
||||
}
|
||||
conf_free_subsystem();
|
||||
# ifdef USE_XIM
|
||||
if (xim_input_context) {
|
||||
XUnsetICFocus(xim_input_context);
|
||||
XDestroyIC(xim_input_context);
|
||||
}
|
||||
if (xim_input_method) {
|
||||
XCloseIM(xim_input_method);
|
||||
}
|
||||
# endif
|
||||
XCloseDisplay(Xdisplay);
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_XIM
|
||||
if (xim_input_context) {
|
||||
XUnsetICFocus(xim_input_context);
|
||||
XDestroyIC(xim_input_context);
|
||||
}
|
||||
if (xim_input_method) {
|
||||
XCloseIM(xim_input_method);
|
||||
}
|
||||
#endif
|
||||
XCloseDisplay(Xdisplay);
|
||||
|
||||
privileges(INVOKE);
|
||||
|
||||
|
|
134
src/e.c
134
src/e.c
|
@ -269,137 +269,3 @@ enl_send_and_wait(char *msg)
|
|||
signal(SIGALRM, old_alrm);
|
||||
return (reply);
|
||||
}
|
||||
|
||||
void
|
||||
eterm_ipc_parse(char *str)
|
||||
{
|
||||
|
||||
char *params;
|
||||
|
||||
ASSERT(str != NULL);
|
||||
|
||||
params = strchr(str, ':');
|
||||
if (params) {
|
||||
*params++ = 0; /* Nuke the colon */
|
||||
}
|
||||
if (!strcasecmp(str, "echo") || !strcasecmp(str, "tty_write")) {
|
||||
if (params) {
|
||||
tt_write((unsigned char *) params, strlen(params));
|
||||
} else {
|
||||
print_error("IPC Error: Invalid syntax in command \"%s\"\n", str);
|
||||
}
|
||||
} else if (!strcasecmp(str, "parse")) {
|
||||
if (params) {
|
||||
cmd_write((unsigned char *) params, strlen(params));
|
||||
} else {
|
||||
print_error("IPC Error: Invalid syntax in command \"%s\"\n", str);
|
||||
}
|
||||
} else if (!strcasecmp(str, "enl_send")) {
|
||||
if (params) {
|
||||
enl_ipc_send(params);
|
||||
} else {
|
||||
print_error("IPC Error: Invalid syntax in command \"%s\"\n", str);
|
||||
}
|
||||
} else if (!strcasecmp(str, "enl_query")) {
|
||||
if (params) {
|
||||
char *reply, header[512];
|
||||
|
||||
reply = enl_send_and_wait(params);
|
||||
snprintf(header, sizeof(header), "Enlightenment IPC Reply to \"%s\":\n", params);
|
||||
tt_write((unsigned char *) header, strlen(header));
|
||||
tt_write((unsigned char *) reply, strlen(reply));
|
||||
tt_write((unsigned char *) "\n", 1);
|
||||
FREE(reply);
|
||||
} else {
|
||||
print_error("IPC Error: Invalid syntax in command \"%s\"\n", str);
|
||||
}
|
||||
} else if (!strcasecmp(str, "winop")) {
|
||||
if (params) {
|
||||
eterm_handle_winop(params);
|
||||
} else {
|
||||
print_error("IPC Error: Invalid syntax in command \"%s\"\n", str);
|
||||
}
|
||||
} else if (!strcasecmp(str, "exit")) {
|
||||
exit(0);
|
||||
} else {
|
||||
print_error("IPC Error: Unrecognized command \"%s\"\n", str);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
eterm_ipc_send(char *str)
|
||||
{
|
||||
|
||||
return;
|
||||
str = NULL;
|
||||
}
|
||||
|
||||
char *
|
||||
eterm_ipc_get(void)
|
||||
{
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
void
|
||||
eterm_handle_winop(char *action)
|
||||
{
|
||||
|
||||
char *winid;
|
||||
Window win = 0;
|
||||
|
||||
ASSERT(action != NULL);
|
||||
|
||||
winid = strchr(action, ' ');
|
||||
if (winid) {
|
||||
win = (Window) strtoul(winid + 1, (char **) NULL, 0);
|
||||
}
|
||||
if (win == 0) { /* If no window ID was given, or if the strtoul() call failed */
|
||||
win = TermWin.parent;
|
||||
}
|
||||
if (!BEG_STRCASECMP(action, "raise")) {
|
||||
XRaiseWindow(Xdisplay, win);
|
||||
} else if (!BEG_STRCASECMP(action, "lower")) {
|
||||
XLowerWindow(Xdisplay, win);
|
||||
} else if (!BEG_STRCASECMP(action, "map")) {
|
||||
XMapWindow(Xdisplay, win);
|
||||
} else if (!BEG_STRCASECMP(action, "unmap")) {
|
||||
XUnmapWindow(Xdisplay, win);
|
||||
} else if (!BEG_STRCASECMP(action, "move")) {
|
||||
int x, y, n;
|
||||
char *xx, *yy;
|
||||
|
||||
n = num_words(action);
|
||||
if (n == 3 || n == 4) {
|
||||
if (n == 3) {
|
||||
win = TermWin.parent;
|
||||
}
|
||||
xx = get_pword(n - 1, action);
|
||||
yy = get_pword(n, action);
|
||||
x = (int) strtol(xx, (char **) NULL, 0);
|
||||
y = (int) strtol(yy, (char **) NULL, 0);
|
||||
XMoveWindow(Xdisplay, win, x, y);
|
||||
}
|
||||
} else if (!BEG_STRCASECMP(action, "resize")) {
|
||||
int w, h, n;
|
||||
char *ww, *hh;
|
||||
|
||||
n = num_words(action);
|
||||
if (n == 3 || n == 4) {
|
||||
if (n == 3) {
|
||||
win = TermWin.parent;
|
||||
}
|
||||
ww = get_pword(n - 1, action);
|
||||
hh = get_pword(n, action);
|
||||
w = (int) strtol(ww, (char **) NULL, 0);
|
||||
h = (int) strtol(hh, (char **) NULL, 0);
|
||||
XResizeWindow(Xdisplay, win, w, h);
|
||||
}
|
||||
} else if (!BEG_STRCASECMP(action, "kill")) {
|
||||
XKillClient(Xdisplay, win);
|
||||
} else if (!BEG_STRCASECMP(action, "iconify")) {
|
||||
XIconifyWindow(Xdisplay, win, Xscreen);
|
||||
} else {
|
||||
print_error("IPC Error: Unrecognized window operation \"%s\"\n", action);
|
||||
}
|
||||
}
|
||||
|
|
4
src/e.h
4
src/e.h
|
@ -45,11 +45,7 @@ extern void enl_ipc_send(char *);
|
|||
extern char *enl_wait_for_reply(void);
|
||||
extern char *enl_ipc_get(const char *);
|
||||
extern void enl_query_for_image(unsigned char);
|
||||
extern void eterm_ipc_parse(char *);
|
||||
extern void eterm_ipc_send(char *);
|
||||
extern char *eterm_ipc_get(void);
|
||||
extern char *enl_send_and_wait(char *);
|
||||
extern void eterm_handle_winop(char *);
|
||||
|
||||
_XFUNCPROTOEND
|
||||
|
||||
|
|
|
@ -226,15 +226,6 @@
|
|||
/* Make it an option */
|
||||
#define MAPALERT_OPTION
|
||||
|
||||
/********************* utmp logging support *********************/
|
||||
|
||||
/* Added security for systems with saved uids and gids. If you don't define
|
||||
* this, and you're not on HP-UX with _HPUX_SOURCE defined, Eterm processes
|
||||
* may seem to be owned by root. But if you define this and don't have them,
|
||||
* the utmp and tty stuff could break. Do some testing. DO NOT get this one
|
||||
* wrong! */
|
||||
#define HAVE_SAVED_UIDS
|
||||
|
||||
/********************* Config file parser options *********************/
|
||||
|
||||
/* Allow evaluation of expressions like `echo hello` in config files. The
|
||||
|
|
|
@ -286,8 +286,7 @@ static const struct {
|
|||
OPT_LONG("mfont2", "multichar font 2", &rs_mfont[2]),
|
||||
OPT_LONG("mfont3", "multichar font 3", &rs_mfont[3]),
|
||||
OPT_LONG("mfont4", "multichar font 4", &rs_mfont[4]),
|
||||
OPT_LONG("mencoding", "multichar encoding mode (eucj, sjis, euckr, or big5)",
|
||||
&rs_multichar_encoding),
|
||||
OPT_LONG("mencoding", "multichar encoding mode (eucj/sjis/euckr/big5/gb)", &rs_multichar_encoding),
|
||||
#endif /* MULTI_CHARSET */
|
||||
#ifdef USE_XIM
|
||||
OPT_LONG("input-method", "XIM input method", &rs_input_method),
|
||||
|
@ -2252,6 +2251,13 @@ parse_toggles(char *buff, void *state)
|
|||
Options &= ~(Opt_report_as_keysyms);
|
||||
}
|
||||
|
||||
} else if (!BEG_STRCASECMP(buff, "mbyte_cursor ")) {
|
||||
if (bool_val) {
|
||||
Options |= Opt_mbyte_cursor;
|
||||
} else {
|
||||
Options &= ~(Opt_mbyte_cursor);
|
||||
}
|
||||
|
||||
} else if (!BEG_STRCASECMP(buff, "itrans ") || !BEG_STRCASECMP(buff, "immotile_trans ")) {
|
||||
if (bool_val) {
|
||||
image_toggles |= IMOPT_ITRANS;
|
||||
|
@ -3290,12 +3296,12 @@ parse_multichar(char *buff, void *state)
|
|||
if (BEG_STRCASECMP(rs_multichar_encoding, "eucj")
|
||||
&& BEG_STRCASECMP(rs_multichar_encoding, "sjis")
|
||||
&& BEG_STRCASECMP(rs_multichar_encoding, "euckr")
|
||||
&& BEG_STRCASECMP(rs_multichar_encoding, "big5")) {
|
||||
&& BEG_STRCASECMP(rs_multichar_encoding, "big5")
|
||||
&& BEG_STRCASECMP(rs_multichar_encoding, "gb")) {
|
||||
print_error("Parse error in file %s, line %lu: Invalid multichar encoding mode \"%s\"\n",
|
||||
file_peek_path(), file_peek_line(), rs_multichar_encoding);
|
||||
return NULL;
|
||||
}
|
||||
set_multichar_encoding(rs_multichar_encoding);
|
||||
} else {
|
||||
print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute encoding\n",
|
||||
file_peek_path(), file_peek_line());
|
||||
|
@ -3324,6 +3330,7 @@ parse_multichar(char *buff, void *state)
|
|||
file_peek_path(), file_peek_line(), NONULL(tmp));
|
||||
FREE(tmp);
|
||||
}
|
||||
|
||||
} else {
|
||||
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context multichar\n",
|
||||
file_peek_path(), file_peek_line(), buff);
|
||||
|
@ -3768,6 +3775,9 @@ post_parse(void)
|
|||
RESET_AND_ASSIGN(rs_mfont[i], NULL);
|
||||
}
|
||||
}
|
||||
if (rs_multichar_encoding != NULL) {
|
||||
set_multichar_encoding(rs_multichar_encoding);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (rs_font_effects) {
|
||||
|
@ -4105,12 +4115,6 @@ post_parse(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef MULTI_CHARSET
|
||||
if (rs_multichar_encoding != NULL) {
|
||||
set_multichar_encoding(rs_multichar_encoding);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (rs_pipe_name) {
|
||||
struct stat fst;
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@
|
|||
# define Opt_install (1LU << 21)
|
||||
# define Opt_scrollbar_floating (1LU << 22)
|
||||
# define Opt_double_buffer (1LU << 23)
|
||||
# define Opt_mbyte_cursor (1LU << 24)
|
||||
|
||||
# define IMOPT_TRANS (1U << 0)
|
||||
# define IMOPT_ITRANS (1U << 1)
|
||||
|
|
22
src/screen.c
22
src/screen.c
|
@ -1570,6 +1570,28 @@ scr_printscreen(int fullhist)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef MULTI_CHARSET
|
||||
int
|
||||
scr_multi1(void)
|
||||
{
|
||||
rend_t rend;
|
||||
|
||||
rend = screen.rend[screen.row + TermWin.saveLines][screen.col];
|
||||
return ((rend & RS_multiMask) == RS_multi1);
|
||||
}
|
||||
|
||||
int
|
||||
scr_multi2(void)
|
||||
{
|
||||
rend_t rend;
|
||||
|
||||
if (screen.col == 0)
|
||||
return 0;
|
||||
rend = screen.rend[screen.row + TermWin.saveLines][screen.col - 1];
|
||||
return ((rend & RS_multiMask) == RS_multi2);
|
||||
}
|
||||
#endif /* MULTI_CHARSET */
|
||||
|
||||
/*
|
||||
* Refresh the screen
|
||||
* drawn_text/drawn_rend contain the screen information before the update.
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#endif
|
||||
|
||||
/************ Macros and Definitions ************/
|
||||
#define WRAP_CHAR (MAX_COLS + 1)
|
||||
#define WRAP_CHAR (0xff)
|
||||
#define PROP_SIZE 4096
|
||||
#define TABSIZE 8 /* default tab size */
|
||||
|
||||
|
@ -307,6 +307,10 @@ extern void mouse_tracking(int, int, int, int, int);
|
|||
extern void debug_PasteIt(unsigned char *, int);
|
||||
extern int debug_selection(void);
|
||||
extern void debug_colors(void);
|
||||
#ifdef MULTI_CHARSET
|
||||
extern int scr_multi2(void);
|
||||
extern int scr_multi1(void);
|
||||
#endif /* MULTI_CHARSET */
|
||||
|
||||
_XFUNCPROTOEND
|
||||
|
||||
|
|
29
src/term.c
29
src/term.c
|
@ -447,6 +447,12 @@ lookup_key(XEvent * ev)
|
|||
#else
|
||||
kbuf[0] = (((PrivateModes & PrivMode_BackSpace) ? !(shft | ctrl) : (shft | ctrl)) ? '\b' : '\177');
|
||||
#endif
|
||||
#ifdef MULTI_CHARSET
|
||||
if ((Options & Opt_mbyte_cursor) && scr_multi2()) {
|
||||
memmove(kbuf + len, kbuf, len);
|
||||
len *= 2;
|
||||
}
|
||||
#endif /* MULTI_CHARSET */
|
||||
break;
|
||||
|
||||
/* Tab key is normal unless it's shift-tab. */
|
||||
|
@ -502,6 +508,14 @@ lookup_key(XEvent * ev)
|
|||
kbuf[1] = 'O';
|
||||
kbuf[2] = ("dacb"[keysym - XK_Left]);
|
||||
}
|
||||
#ifdef MULTI_CHARSET
|
||||
if ((Options & Opt_mbyte_cursor)
|
||||
&& ((keysym == XK_Left && scr_multi2())
|
||||
|| (keysym == XK_Right && scr_multi1()))) {
|
||||
memmove(kbuf + len, kbuf, len);
|
||||
len *= 2;
|
||||
}
|
||||
#endif /* MULTI_CHARSET */
|
||||
break;
|
||||
|
||||
/* Keypad and normal PgUp/PgDn */
|
||||
|
@ -588,6 +602,13 @@ lookup_key(XEvent * ev)
|
|||
case XK_Delete:
|
||||
#ifdef KS_DELETE
|
||||
len = strlen(strcpy(kbuf, KS_DELETE));
|
||||
#ifdef MULTI_CHARSET
|
||||
if ((Options & Opt_mbyte_cursor) && scr_multi1())
|
||||
{
|
||||
memmove(kbuf + len, kbuf, len);
|
||||
len *= 2;
|
||||
}
|
||||
#endif /* MULTI_CHARSET */
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
@ -1223,7 +1244,7 @@ process_xterm_seq(void)
|
|||
if (ch) {
|
||||
if (ch == '\t')
|
||||
ch = ' '; /* translate '\t' to space */
|
||||
else if ((ch < ' ') && !(isspace(ch) && arg == XTerm_EtermIPC))
|
||||
else if (ch < ' ')
|
||||
return; /* control character - exit */
|
||||
|
||||
if (n < sizeof(string) - 1)
|
||||
|
@ -2324,12 +2345,6 @@ xterm_seq(int op, const char *str)
|
|||
#endif /* PIXMAP_SUPPORT */
|
||||
break;
|
||||
|
||||
case XTerm_EtermIPC:
|
||||
for (; (nstr = (char *) strsep(&tnstr, ";"));) {
|
||||
eterm_ipc_parse(nstr);
|
||||
}
|
||||
break;
|
||||
|
||||
case XTerm_restoreFG:
|
||||
#ifdef XTERM_COLOR_CHANGE
|
||||
set_window_color(fgColor, str);
|
||||
|
|
|
@ -69,7 +69,6 @@
|
|||
/* rxvt/Eterm extensions of XTerm escape sequences: ESC ] Ps;Pt BEL */
|
||||
# define XTerm_Takeover 5 /* Steal keyboard focus and raise window */
|
||||
# define XTerm_EtermSeq 6 /* Eterm proprietary escape sequences */
|
||||
# define XTerm_EtermIPC 7 /* Eterm escape code/text IPC interface */
|
||||
# define XTerm_Pixmap 20 /* new bg pixmap */
|
||||
# define XTerm_DumpScreen 30 /* Dump contents of scrollback to a file */
|
||||
# define XTerm_restoreFG 39 /* change default fg color */
|
||||
|
|
|
@ -90,14 +90,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -23,6 +23,7 @@ install-data-hook:
|
|||
$(CHMOD) 755 $(DESTDIR)$(pkgdatadir)/themes/$$i ; \
|
||||
$(CHMOD) 644 $(DESTDIR)$(pkgdatadir)/themes/$$i/???* ; \
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/themes/$$i/theme.cfg.in ; \
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/themes/$$i/theme.cfg.in.orig ; \
|
||||
else \
|
||||
echo "ALERT! Not overwriting $$i theme in $(DESTDIR)$(pkgdatadir)/themes. You will need to update this theme manually." ; \
|
||||
fi ; \
|
||||
|
|
|
@ -90,14 +90,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -89,14 +89,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -90,14 +90,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -90,14 +90,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -92,14 +92,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -90,14 +90,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -90,14 +90,14 @@ begin main
|
|||
# The Multichar support options. Same goes for these fonts as for the normal
|
||||
# ones. The "encoding" attribute can be either "eucj" or "sjis" or "euckr"
|
||||
# or big5 or gb
|
||||
# begin multichar
|
||||
# font 0 @MFONT0@
|
||||
# font 1 @MFONT1@
|
||||
# font 2 @MFONT2@
|
||||
# font 3 @MFONT3@
|
||||
# font 4 @MFONT4@
|
||||
# encoding @MULTICHAR_ENCODING@
|
||||
# end multichar
|
||||
begin multichar
|
||||
font 0 @MFONT0@
|
||||
font 1 @MFONT1@
|
||||
font 2 @MFONT2@
|
||||
font 3 @MFONT3@
|
||||
font 4 @MFONT4@
|
||||
encoding @MULTICHAR_ENCODING@
|
||||
end multichar
|
||||
|
||||
# Define the imageclasses.
|
||||
begin imageclasses
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Eterm Window Operation Aid
|
||||
#
|
||||
# $Id$
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Syntax: Etwinop { raise | lower | map | unmap | move | resize | iconify | kill } [windowid]"
|
||||
echo
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Code to figure out if we need 'echo -n' or 'echo "\c"', stolen from configure
|
||||
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
|
||||
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
|
||||
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
|
||||
ac_n= ac_c='
|
||||
'
|
||||
else
|
||||
ac_n=-n ac_c=
|
||||
fi
|
||||
else
|
||||
ac_n= ac_c='\c'
|
||||
fi
|
||||
|
||||
winop="$*"
|
||||
|
||||
echo $ac_n "]7;winop:$winop$ac_c"
|
|
@ -1,7 +1,7 @@
|
|||
# $Id$
|
||||
|
||||
bin_PROGRAMS = Esetroot Etbg Ettable
|
||||
bin_SCRIPTS = Etcolors Etwinop Etsearch kEsetroot
|
||||
bin_SCRIPTS = Etcolors Etsearch kEsetroot
|
||||
|
||||
Esetroot_SOURCES = Esetroot.c
|
||||
Esetroot_LDFLAGS = -rpath $(libdir):$(pkglibdir)
|
||||
|
@ -9,6 +9,6 @@ Esetroot_LDFLAGS = -rpath $(libdir):$(pkglibdir)
|
|||
Etbg_SOURCES = Etbg.c
|
||||
Ettable_SOURCES = Ettable.c
|
||||
|
||||
EXTRA_DIST = Etbg.c Esetroot.c Ettable.c Makefile.am Makefile.in Etcolors Etwinop Etsearch \
|
||||
kEsetroot.in
|
||||
EXTRA_DIST = Etbg.c Esetroot.c Ettable.c Makefile.am \
|
||||
Makefile.in Etcolors Etsearch kEsetroot.in
|
||||
|
||||
|
|
Loading…
Reference in New Issue