Update to xterm 311. ok shadchin@

This commit is contained in:
matthieu 2014-10-05 16:39:19 +00:00
parent 0376b8f865
commit 73c839d2ed
27 changed files with 456 additions and 241 deletions

View File

@ -1,4 +1,4 @@
XCOMM $XTermId: Imakefile,v 1.110 2014/04/11 19:36:41 Ross.Combs Exp $
XCOMM $XTermId: Imakefile,v 1.111 2014/07/22 22:29:17 tom Exp $
XCOMM
XCOMM Attention xterm porters
XCOMM
@ -140,7 +140,7 @@ TERMCAPDEFINES=-DUSE_TERMINFO -DHAVE_TIGETSTR
# endif
#endif
#if !defined(OS2Architecture) && !defined(__GNU__)
#if !defined(OS2Architecture) && !defined(__GNU__) && !defined(Minix3Architecture)
#if defined(UseUtempter)
UTMPDEF = -DUSE_UTEMPTER
#else

View File

@ -1,4 +1,4 @@
MANIFEST for xterm-309, version xterm-309
MANIFEST for xterm-311, version xterm-311
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode

View File

@ -1,4 +1,4 @@
/* $XTermId: button.c,v 1.473 2014/05/26 17:12:51 tom Exp $ */
/* $XTermId: button.c,v 1.481 2014/09/18 00:17:35 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -2177,16 +2177,39 @@ SelectionReceived(Widget w,
#endif
for (i = 0; i < text_list_count; i++) {
size_t len = removeControls(xw, text_list[i]);
if (screen->selectToBuffer) {
size_t have = (screen->internal_select
? strlen(screen->internal_select)
InternalSelect *mydata = &(screen->internal_select);
size_t have = (mydata->buffer
? strlen(mydata->buffer)
: 0);
size_t need = have + len + 1;
char *buffer = realloc(screen->internal_select, need);
char *buffer = realloc(mydata->buffer, need);
screen->selectToBuffer = False;
#if OPT_PASTE64
screen->base64_paste = mydata->base64_paste;
#endif
#if OPT_READLINE
screen->paste_brackets = mydata->paste_brackets;
#endif
if (buffer != 0) {
strcpy(buffer + have, text_list[i]);
screen->internal_select = buffer;
mydata->buffer = buffer;
}
TRACE(("FormatSelect %d.%d .. %d.%d %s\n",
screen->startSel.row,
screen->startSel.col,
screen->endSel.row,
screen->endSel.col,
mydata->buffer));
mydata->format_select(w, mydata->format, mydata->buffer,
&(screen->startSel),
&(screen->endSel));
free(mydata->format);
free(mydata->buffer);
memset(mydata, 0, sizeof(*mydata));
} else {
_WriteSelectionData(xw, (Char *) text_list[i], len);
}
@ -3204,7 +3227,7 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
char *search;
int *indexed;
TRACE(("Select_REGEX:%s\n", NonNull(expr)));
TRACE(("Select_REGEX[%d]:%s\n", inx, NonNull(expr)));
if (okPosition(screen, &ld, startc) && expr != 0) {
if (regcomp(&preg, expr, REG_EXTENDED) == 0) {
int firstRow = firstRowOfLine(screen, startc->row, True);
@ -3234,7 +3257,7 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
int start_col = indexToCol(indexed, len, start_inx);
int finis_col = indexToCol(indexed, len, finis_inx);
if (start_col <= actual &&
if (start_col >= actual &&
actual < finis_col) {
int test = finis_col - start_col;
if (best_len < test) {
@ -4559,53 +4582,33 @@ getEventTime(XEvent *event)
}
/* obtain the selection string, passing the endpoints to caller's parameters */
static char *
getSelectionString(XtermWidget xw,
Widget w,
XEvent *event,
String *params,
Cardinal *num_params,
CELL *start, CELL *finish)
static void
doSelectionFormat(XtermWidget xw,
Widget w,
XEvent *event,
String *params,
Cardinal *num_params,
FormatSelect format_select)
{
TScreen *screen = TScreenOf(xw);
#if OPT_PASTE64
int base64_paste = (int) screen->base64_paste;
#endif
#if OPT_READLINE
int paste_brackets = (int) SCREEN_FLAG(screen, paste_brackets);
#endif
InternalSelect *mydata = &(screen->internal_select);
memset(mydata, 0, sizeof(*mydata));
mydata->format = x_strdup(params[0]);
mydata->format_select = format_select;
/* override flags so that SelectionReceived only updates a buffer */
#if OPT_PASTE64
mydata->base64_paste = screen->base64_paste;
screen->base64_paste = 0;
#endif
#if OPT_READLINE
mydata->paste_brackets = screen->paste_brackets;
SCREEN_FLAG_unset(screen, paste_brackets);
#endif
screen->selectToBuffer = True;
screen->internal_select = 0;
xtermGetSelection(w, getEventTime(event), params + 1, *num_params - 1, NULL);
screen->selectToBuffer = False;
if (screen->internal_select != 0) {
TRACE(("getSelectionString %d:%s\n",
(int) strlen(screen->internal_select),
screen->internal_select));
*start = screen->startSel;
*finish = screen->endSel;
} else {
memset(start, 0, sizeof(*start));
memset(finish, 0, sizeof(*finish));
}
#if OPT_PASTE64
screen->base64_paste = (Cardinal) base64_paste;
#endif
#if OPT_READLINE
if (paste_brackets)
SCREEN_FLAG_set(screen, paste_brackets);
#endif
return screen->internal_select;
}
/* obtain data from the screen, passing the endpoints to caller's parameters */
@ -4625,10 +4628,13 @@ getDataFromScreen(XtermWidget xw, String method, CELL *start, CELL *finish)
int save_firstValidRow = screen->firstValidRow;
int save_lastValidRow = screen->lastValidRow;
const Cardinal noClick = 0;
int save_numberOfClicks = screen->numberOfClicks;
SelectUnit saveUnits = screen->selectUnit;
SelectUnit saveMap = screen->selectMap[0];
SelectUnit saveMap = screen->selectMap[noClick];
#if OPT_SELECT_REGEX
char *saveExpr = screen->selectExpr[0];
char *saveExpr = screen->selectExpr[noClick];
#endif
Char *save_selection_data = screen->selection_data;
@ -4643,13 +4649,15 @@ getDataFromScreen(XtermWidget xw, String method, CELL *start, CELL *finish)
screen->selection_size = 0;
screen->selection_length = 0;
lookupSelectUnit(xw, 0, method);
screen->selectUnit = screen->selectMap[0];
screen->numberOfClicks = 1;
lookupSelectUnit(xw, noClick, method);
screen->selectUnit = screen->selectMap[noClick];
memset(start, 0, sizeof(*start));
start->row = screen->cur_row;
start->col = screen->cur_col;
*finish = *start;
finish->row = screen->cur_row;
finish->col = screen->max_col;
ComputeSelect(xw, start, finish, False);
SaltTextAway(xw, &(screen->startSel), &(screen->endSel));
@ -4676,10 +4684,11 @@ getDataFromScreen(XtermWidget xw, String method, CELL *start, CELL *finish)
screen->firstValidRow = save_firstValidRow;
screen->lastValidRow = save_lastValidRow;
screen->numberOfClicks = save_numberOfClicks;
screen->selectUnit = saveUnits;
screen->selectMap[0] = saveMap;
screen->selectMap[noClick] = saveMap;
#if OPT_SELECT_REGEX
screen->selectExpr[0] = saveExpr;
screen->selectExpr[noClick] = saveExpr;
#endif
screen->selection_data = save_selection_data;
@ -4974,35 +4983,39 @@ freeArgv(char *blob, char **argv)
}
}
static void
reallyExecFormatted(Widget w, char *format, char *data, CELL *start, CELL *finish)
{
XtermWidget xw;
if ((xw = getXtermWidget(w)) != 0) {
char **argv;
char *blob;
int argc;
if ((argv = tokenizeFormat(format)) != 0) {
blob = argv[0];
for (argc = 0; argv[argc] != 0; ++argc) {
argv[argc] = expandFormat(xw, argv[argc], data, start, finish);
}
executeCommand(argv);
freeArgv(blob, argv);
}
}
}
void
HandleExecFormatted(Widget w,
XEvent *event GCC_UNUSED,
XEvent *event,
String *params, /* selections */
Cardinal *num_params)
{
XtermWidget xw;
if ((xw = getXtermWidget(w)) != 0) {
TRACE(("HandleExecFormatted(%d)\n", *num_params));
if (*num_params > 1) {
CELL start, finish;
char *data;
char **argv;
char *blob;
int argc;
data = getSelectionString(xw, w, event, params, num_params,
&start, &finish);
if ((argv = tokenizeFormat(params[0])) != 0) {
blob = argv[0];
for (argc = 0; argv[argc] != 0; ++argc) {
argv[argc] = expandFormat(xw, argv[argc], data, &start, &finish);
}
executeCommand(argv);
freeArgv(blob, argv);
}
}
TRACE(("HandleExecFormatted(%d)\n", *num_params));
if ((xw = getXtermWidget(w)) != 0 &&
(*num_params > 1)) {
doSelectionFormat(xw, w, event, params, num_params, reallyExecFormatted);
}
}
@ -5041,32 +5054,34 @@ HandleExecSelectable(Widget w,
}
}
static void
reallyInsertFormatted(Widget w, char *format, char *data, CELL *start, CELL *finish)
{
XtermWidget xw;
if ((xw = getXtermWidget(w)) != 0) {
char *exps;
if ((exps = expandFormat(xw, format, data, start, finish)) != 0) {
unparseputs(xw, exps);
unparse_end(xw);
free(exps);
}
}
}
void
HandleInsertFormatted(Widget w,
XEvent *event GCC_UNUSED,
XEvent *event,
String *params, /* selections */
Cardinal *num_params)
{
XtermWidget xw;
if ((xw = getXtermWidget(w)) != 0) {
TRACE(("HandleInsertFormatted(%d)\n", *num_params));
if (*num_params > 1) {
CELL start, finish;
char *data;
char *temp = x_strdup(params[0]);
char *exps;
data = getSelectionString(xw, w, event, params, num_params,
&start, &finish);
if ((exps = expandFormat(xw, temp, data, &start, &finish)) != 0) {
unparseputs(xw, exps);
free(exps);
}
free(data);
free(temp);
}
TRACE(("HandleInsertFormatted(%d)\n", *num_params));
if ((xw = getXtermWidget(w)) != 0 &&
(*num_params > 1)) {
doSelectionFormat(xw, w, event, params, num_params, reallyInsertFormatted);
}
}
@ -5092,6 +5107,7 @@ HandleInsertSelectable(Widget w,
exps = expandFormat(xw, temp, data, &start, &finish);
if (exps != 0) {
unparseputs(xw, exps);
unparse_end(xw);
free(exps);
}
free(data);

View File

@ -1,4 +1,4 @@
/* $XTermId: charproc.c,v 1.1367 2014/07/12 22:49:54 Steve.Wall Exp $ */
/* $XTermId: charproc.c,v 1.1370 2014/09/15 23:39:44 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -7972,8 +7972,8 @@ VTInitialize(Widget wrequest,
DefaultFontNames[fWide] = x_strdup(wnew->misc.default_font.f_w);
DefaultFontNames[fWBold] = x_strdup(wnew->misc.default_font.f_wb);
#endif
TScreenOf(wnew)->MenuFontName(fontMenu_fontescape) = NULL;
TScreenOf(wnew)->MenuFontName(fontMenu_fontsel) = NULL;
TScreenOf(wnew)->EscapeFontName() = NULL;
TScreenOf(wnew)->SelectFontName() = NULL;
TScreenOf(wnew)->menu_font_number = fontMenu_default;
init_Sres(screen.initial_font);
@ -9830,7 +9830,9 @@ ShowCursor(void)
}
}
}
if (T_COLOR(screen, TEXT_CURSOR) == xw->dft_foreground) {
if (T_COLOR(screen, TEXT_CURSOR) == (reversed
? xw->dft_background
: xw->dft_foreground)) {
setCgsBack(xw, currentWin, currentCgs, fg_pix);
}
setCgsFore(xw, currentWin, currentCgs, bg_pix);
@ -9906,7 +9908,9 @@ ShowCursor(void)
* Set up a new request.
*/
if (filled) {
if (T_COLOR(screen, TEXT_CURSOR) == xw->dft_foreground) {
if (T_COLOR(screen, TEXT_CURSOR) == (reversed
? xw->dft_background
: xw->dft_foreground)) {
setCgsBack(xw, currentWin, currentCgs, fg_pix);
}
setCgsFore(xw, currentWin, currentCgs, bg_pix);
@ -10764,7 +10768,7 @@ DoSetSelectedFont(Widget w,
} else {
Boolean failed = False;
int oldFont = TScreenOf(xw)->menu_font_number;
String save = TScreenOf(xw)->MenuFontName(fontMenu_fontsel);
String save = TScreenOf(xw)->SelectFontName();
char *val;
char *test = 0;
char *used = 0;
@ -10794,14 +10798,14 @@ DoSetSelectedFont(Widget w,
&& used != 0
&& !strchr(used, '\n')
&& (test = x_strdup(used)) != 0) {
TScreenOf(xw)->MenuFontName(fontMenu_fontsel) = test;
TScreenOf(xw)->SelectFontName() = test;
if (!xtermLoadFont(term,
xtermFontName(used),
True,
fontMenu_fontsel)) {
failed = True;
free(test);
TScreenOf(xw)->MenuFontName(fontMenu_fontsel) = save;
TScreenOf(xw)->SelectFontName() = save;
}
} else {
failed = True;
@ -10830,7 +10834,7 @@ FindFontSelection(XtermWidget xw, const char *atom_name, Bool justprobe)
Atom target;
if (!atom_name)
atom_name = (screen->mappedSelect
atom_name = ((screen->mappedSelect && atomCount)
? screen->mappedSelect[0]
: "PRIMARY");
TRACE(("FindFontSelection(%s)\n", atom_name));
@ -10850,10 +10854,10 @@ FindFontSelection(XtermWidget xw, const char *atom_name, Bool justprobe)
target = XmuInternAtom(XtDisplay(xw), *pAtom);
if (justprobe) {
screen->MenuFontName(fontMenu_fontsel) =
screen->SelectFontName() =
XGetSelectionOwner(XtDisplay(xw), target) ? _Font_Selected_ : 0;
TRACE(("...selected fontname '%s'\n",
NonNull(screen->MenuFontName(fontMenu_fontsel))));
NonNull(screen->SelectFontName())));
} else {
XtGetSelectionValue((Widget) xw, target, XA_STRING,
DoSetSelectedFont, NULL,

View File

@ -1,4 +1,4 @@
/* $XTermId: fontutils.c,v 1.440 2014/07/13 00:34:40 Ross.Combs Exp $ */
/* $XTermId: fontutils.c,v 1.443 2014/09/03 23:58:53 tom Exp $ */
/*
* Copyright 1998-2013,2014 by Thomas E. Dickey
@ -51,12 +51,6 @@
#include <stdio.h>
#include <ctype.h>
#define ALLOC_STRING(name) \
if (name != 0) \
name = x_strdup(name)
#define FREE_STRING(name) \
free_string(name)
#define SetFontWidth(screen,dst,src) (dst)->f_width = (src)
#define SetFontHeight(screen,dst,src) (dst)->f_height = dimRound((screen)->scale_height * (float) (src))
@ -126,12 +120,6 @@ typedef struct {
char *end;
} FontNameProperties;
static void
free_string(String value)
{
free((void *) value);
}
#if OPT_RENDERFONT
static void fillInFaceSize(XtermWidget, int);
#endif
@ -1145,7 +1133,9 @@ xtermLoadFont(XtermWidget xw,
&fnts[fNorm],
warn[fNorm],
(fontnum == fontMenu_default))) {
SetItemSensitivity(fontMenuEntries[fontnum].widget, False);
if (fontnum != fontMenu_fontsel) {
SetItemSensitivity(fontMenuEntries[fontnum].widget, False);
}
goto bad;
}
@ -1437,8 +1427,7 @@ xtermLoadFont(XtermWidget xw,
FREE_STRING(screen->MenuFontName(fontnum));
screen->MenuFontName(fontnum) = tmpname;
if (fontnum == fontMenu_fontescape) {
SetItemSensitivity(fontMenuEntries[fontMenu_fontescape].widget,
True);
update_font_escape();
}
#if OPT_SHIFT_FONTS
screen->menu_font_sizes[fontnum] = FontSize(fnts[fNorm].fs);
@ -1477,7 +1466,7 @@ xtermLoadFont(XtermWidget xw,
free(tmpname);
#if OPT_RENDERFONT
if (fontnum == fontMenu_fontsel) {
if ((fontnum == fontMenu_fontsel) && (fontnum != screen->menu_font_number)) {
int old_fontnum = screen->menu_font_number;
#if OPT_TOOLBAR
SetItemSensitivity(fontMenuEntries[fontnum].widget, True);
@ -1492,8 +1481,10 @@ xtermLoadFont(XtermWidget xw,
TRACE(("...recovering for TrueType fonts\n"));
code = xtermLoadFont(xw, &myfonts, doresize, fontnum);
if (code) {
SetItemSensitivity(fontMenuEntries[fontnum].widget,
UsingRenderFont(xw));
if (fontnum != fontMenu_fontsel) {
SetItemSensitivity(fontMenuEntries[fontnum].widget,
UsingRenderFont(xw));
}
TRACE(("...recovered size %dx%d\n",
FontHeight(screen),
FontWidth(screen)));

View File

@ -1,4 +1,4 @@
/* $XTermId: graphics_regis.c,v 1.42 2014/07/13 09:10:24 tom Exp $ */
/* $XTermId: graphics_regis.c,v 1.44 2014/09/17 08:35:49 tom Exp $ */
/*
* Copyright 2014 by Ross Combs
@ -188,7 +188,7 @@ typedef struct RegisParseState {
unsigned load_alphabet;
unsigned load_w, load_h;
unsigned load_index;
char load_glyph;
unsigned load_glyph;
unsigned load_row;
/* text options */
int string_rot_set; /* flag to distinguish string vs. character rotation */
@ -3729,7 +3729,7 @@ parse_regis_command(RegisParseState *state)
state->load_w = 8U;
state->load_h = 10U;
state->load_alphabet = 1U;
state->load_glyph = '\0';
state->load_glyph = (unsigned) (unsigned char) '\0';
state->load_row = 0U;
break;
case 'P':
@ -4777,10 +4777,14 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
(RegisterNum) register_num,
r, g, b);
continue;
}
} {
char skip;
TRACE(("DATA_ERROR: ignoring unexpected character in ReGIS screen color register mapping value \"%c\"\n",
pop_fragment(&optionarg)));
skip = pop_fragment(&optionarg);
(void) skip; /* variable needed only if tracing */
TRACE(("DATA_ERROR: ignoring unexpected character in ReGIS screen color register mapping value \"%c\"\n",
skip));
}
return 1;
}
}
@ -5050,8 +5054,12 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
}
TRACE(("size multiplier: %s\n",
fragment_to_tempstr(&sizemultiplierarg)));
load_regis_extent(fragment_to_tempstr(&sizemultiplierarg),
0, 0, &ww, &hh);
if (!load_regis_extent(fragment_to_tempstr(&sizemultiplierarg),
0, 0, &ww, &hh)) {
TRACE(("DATA_ERROR: unable to parse extent in '%c' command: \"%s\"\n",
state->option, fragment_to_tempstr(&sizemultiplierarg)));
break;
}
if (!regis_num_to_int(&sizemultiplierarg, &sizemultiplier)) {
TRACE(("DATA_ERROR: unable to parse extent in size multiplier option: \"%s\"\n",
fragment_to_tempstr(&sizemultiplierarg)));
@ -5195,8 +5203,12 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
}
TRACE(("unitsize cell size: %s\n",
fragment_to_tempstr(&unitsizearg)));
load_regis_extent(fragment_to_tempstr(&unitsizearg), 0, 0,
&unit_w, &unit_h);
if (!load_regis_extent(fragment_to_tempstr(&unitsizearg), 0, 0,
&unit_w, &unit_h)) {
TRACE(("DATA_ERROR: unable to parse extent in '%c' command: \"%s\"\n",
state->option, fragment_to_tempstr(&unitsizearg)));
break;
}
if (!regis_num_to_int(&unitsizearg, &unitsize)) {
TRACE(("DATA_ERROR: unable to parse extent in text unit cell size option: \"%s\"\n",
fragment_to_tempstr(&unitsizearg)));
@ -5690,8 +5702,9 @@ parse_regis_items(RegisParseState *state, RegisGraphicsContext *context)
if (extract_regis_string(input, state->temp, state->templen)) {
switch (state->command) {
case 'l':
/* FIXME: confirm that extra characters are ignored */
TRACE(("found character to load: \"%s\"\n", state->temp));
state->load_glyph = state->temp[0]; /* FIXME: proper conversion */
state->load_glyph = (unsigned) (unsigned char) state->temp[0];
state->load_row = 0U;
break;
case 't':
@ -5744,11 +5757,11 @@ parse_regis_items(RegisParseState *state, RegisGraphicsContext *context)
unsigned glyph_size;
val = strtoul(state->temp, NULL, 16);
TRACE(("found row %u for glyph \"%c\": \"%s\" value %02lx (%lu)\n",
TRACE(("found row %u for glyph %u: \"%s\" value %02lx (%lu)\n",
state->load_row, state->load_glyph, state->temp, val, val));
if (state->load_row >= state->load_h) {
TRACE(("DATA_ERROR: ignoring extra glyph row for \"%c\"\n",
TRACE(("DATA_ERROR: ignoring extra row for glyph %u\n",
state->load_glyph));
return 0;
}
@ -5777,7 +5790,7 @@ parse_regis_items(RegisParseState *state, RegisGraphicsContext *context)
unsigned unused_bits;
glyph = &context->alphabets[state->load_index]
.bytes[(unsigned) state->load_glyph * glyph_size];
.bytes[state->load_glyph * glyph_size];
bytew = GLYPH_WIDTH_BYTES(context->alphabets[state->load_index]
.pixw);
unused_bits = 8U - (context->alphabets[state->load_index].pixw
@ -5798,9 +5811,9 @@ parse_regis_items(RegisParseState *state, RegisGraphicsContext *context)
state->load_row++;
context->alphabets[state->load_index]
.loaded[(unsigned) state->load_glyph] = 1;
.loaded[state->load_glyph] = 1;
#ifdef DEBUG_LOAD
TRACE(("marking alphabet %u at index %u glyph '%c' as loaded\n",
TRACE(("marking alphabet %u at index %u glyph %u as loaded\n",
state->load_alphabet, state->load_index,
state->load_glyph));
#endif
@ -5893,8 +5906,14 @@ parse_regis_toplevel(RegisParseState *state, RegisGraphicsContext *context)
continue;
if (state->input.pos >= state->input.len)
break;
TRACE(("DATA_ERROR: skipping unknown token in optionset: \"%c\"\n",
pop_fragment(&state->input)));
{
char skip;
skip = pop_fragment(&state->input);
(void) skip; /* variable needed only if tracing */
TRACE(("DATA_ERROR: skipping unexpected character in optionset: \"%c\"\n",
skip));
}
/* FIXME: suboptions */
}
state->option = '_';
@ -5929,8 +5948,14 @@ parse_regis_toplevel(RegisParseState *state, RegisGraphicsContext *context)
}
if (state->input.pos >= state->input.len)
return 0;
TRACE(("DATA_ERROR: skipping unknown token at top level: \"%c\"\n",
pop_fragment(&state->input)));
{
char skip;
skip = pop_fragment(&state->input);
(void) skip; /* variable needed only if tracing */
TRACE(("DATA_ERROR: skipping unexpected character at top level: \"%c\"\n", ch));
}
return 0;
}

View File

@ -1,4 +1,4 @@
/* $XTermId: graphics_sixel.c,v 1.8 2014/05/02 22:53:20 tom Exp $ */
/* $XTermId: graphics_sixel.c,v 1.9 2014/07/15 21:07:44 tom Exp $ */
/*
* Copyright 2014 by Ross Combs
@ -214,7 +214,6 @@ update_sixel_aspect(SixelContext const *context, Graphic *graphic)
* Interpret sixel graphics sequences.
*
* Resources:
* http://en.wikipedia.org/wiki/Sixel
* http://vt100.net/docs/vt3xx-gp/chapter14.html
* ftp://ftp.cs.utk.edu/pub/shuford/terminal/sixel_graphics_news.txt
* ftp://ftp.cs.utk.edu/pub/shuford/terminal/all_about_sixels.txt

View File

@ -1,4 +1,4 @@
/* $XTermId: main.c,v 1.760 2014/07/12 22:50:07 Steve.Wall Exp $ */
/* $XTermId: main.c,v 1.762 2014/07/24 22:47:09 tom Exp $ */
/*
* Copyright 2002-2013,2014 by Thomas E. Dickey
@ -2509,7 +2509,7 @@ main(int argc, char *argv[]ENVP_ARG)
}
#endif
#endif
#if defined(USE_ANY_SYSV_TERMIO) || defined(__MVS__)
#if defined(USE_ANY_SYSV_TERMIO) || defined(__MVS__) || defined(__minix)
if (0 > (mode = fcntl(screen->respond, F_GETFL, 0)))
SysError(ERROR_F_GETFL);
#ifdef O_NDELAY
@ -5372,3 +5372,17 @@ qsetlogin(char *login, char *ttyname)
return (rps.status);
}
#endif
#ifdef __minix
int
setpgrp(void)
{
return 0;
}
void
_longjmp(jmp_buf _env, int _val)
{
longjmp(_env, _val);
}
#endif

View File

@ -1,4 +1,4 @@
/* $XTermId: menu.c,v 1.326 2014/07/12 22:50:28 Steve.Wall Exp $ */
/* $XTermId: menu.c,v 1.327 2014/09/03 23:35:52 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -822,10 +822,7 @@ domenu(Widget w,
if (IsEmpty(screen->menu_font_names[n][fNorm]))
SetItemSensitivity(fontMenuEntries[n].widget, False);
}
SetItemSensitivity(
fontMenuEntries[fontMenu_fontescape].widget,
(screen->menu_font_names[fontMenu_fontescape][fNorm]
? True : False));
update_font_escape();
update_menu_allowBoldFonts();
#if OPT_BOX_CHARS
update_font_boxchars();
@ -872,10 +869,10 @@ domenu(Widget w,
SetItemSensitivity(fontMenuEntries[fontMenu_fontsel].widget, True);
#else
FindFontSelection(xw, NULL, True);
SetItemSensitivity(
fontMenuEntries[fontMenu_fontsel].widget,
(screen->menu_font_names[fontMenu_fontsel][fNorm]
? True : False));
SetItemSensitivity(fontMenuEntries[fontMenu_fontsel].widget,
(screen->SelectFontName()
? True
: False));
#endif
break;
@ -2633,6 +2630,19 @@ HandleAllowBoldFonts(Widget w,
HANDLE_VT_TOGGLE(allowBoldFonts);
}
#if OPT_LOAD_VTFONTS
void
update_font_escape(void)
{
TScreen *screen = TScreenOf(term);
SetItemSensitivity(fontMenuEntries[fontMenu_fontescape].widget,
((screen->allowFontOps &&
screen->EscapeFontName())
? True : False));
}
#endif
#if OPT_DEC_CHRSET
void
HandleFontDoublesize(Widget w,

View File

@ -1,4 +1,4 @@
/* $XTermId: menu.h,v 1.133 2014/04/12 00:03:12 Ross.Combs Exp $ */
/* $XTermId: menu.h,v 1.135 2014/09/04 00:17:55 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -452,6 +452,12 @@ extern void update_poponbell(void);
#define update_marginbell() /* nothing */
#if OPT_LOAD_VTFONTS
extern void update_font_escape(void);
#else
#define update_font_escape() /* nothing */
#endif
#if OPT_ALLOW_XXX_OPS
extern void update_menu_allowColorOps(void);
extern void update_menu_allowFontOps(void);

View File

@ -1,4 +1,4 @@
/* $XTermId: misc.c,v 1.712 2014/05/26 14:45:58 tom Exp $ */
/* $XTermId: misc.c,v 1.714 2014/09/03 23:59:25 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -3412,6 +3412,10 @@ ChangeFontRequest(XtermWidget xw, String buf)
num = screen->menu_font_number;
}
name = x_strtrim(buf);
if (screen->EscapeFontName()) {
FREE_STRING(screen->EscapeFontName());
screen->EscapeFontName() = 0;
}
if (success && !IsEmpty(name)) {
#if OPT_RENDERFONT
if (UsingRenderFont(xw)) {
@ -3423,10 +3427,15 @@ ChangeFontRequest(XtermWidget xw, String buf)
memset(&fonts, 0, sizeof(fonts));
fonts.f_n = name;
SetVTFont(xw, num, True, &fonts);
if (num == screen->menu_font_number &&
num != fontMenu_fontescape) {
screen->EscapeFontName() = x_strdup(name);
}
}
} else {
Bell(xw, XkbBI_MinorError, 0);
}
update_font_escape();
free(name);
}
}
@ -3528,6 +3537,7 @@ do_osc(XtermWidget xw, Char *oscbuf, size_t len, int final)
* a special case.
*/
switch (mode) {
case 50:
#if OPT_ISO_COLORS
case OSC_Reset(4):
case OSC_Reset(5):
@ -6044,3 +6054,9 @@ xtermEmbedWindow(Window winToEmbedInto)
screen->embed_wide = (Dimension) attrs.width;
}
}
void
free_string(String value)
{
free((void *) value);
}

View File

@ -1,3 +1,15 @@
xterm-dev (311) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 28 Jul 2014 17:36:30 -0400
xterm-dev (310) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 14 Jul 2014 19:36:58 -0400
xterm-dev (309) unstable; urgency=low
* maintenance updates

View File

@ -5,94 +5,96 @@
# and "make makesum".
PORTNAME= xterm
PORTVERSION= 309
PORTVERSION= 311
CATEGORIES= x11
MASTER_SITES= ftp://invisible-island.net/xterm/ \
CRITICAL
PKGNAMESUFFIX= -dev
EXTRACT_SUFX= .tgz
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:src1 \
bsd-xterm-icons-${ICONVERSION}${EXTRACT_SUFX}:src2
MAINTAINER= dickey@invisible-island.net
COMMENT= Terminal emulator for the X Window System (development)
MAINTAINER= ehaupt@FreeBSD.org
COMMENT= Terminal emulator for the X Window System
CONFLICTS= x11iraf-[0-9]*
USE_XORG= xaw xft
WANT_GNOME= desktopfileutils
USE_XORG= xft
GNU_CONFIGURE= yes
CONFIGURE_ENV+= LIBS="-L${LOCALBASE}/lib"
CONFIGURE_ARGS+= --with-utempter --enable-narrowproto --enable-256-color
CONFIGURE_ARGS+= --with-utempter --enable-narrowproto
CPPFLAGS+= -I${LOCALBASE}/include
LIBS+= -L${LOCALBASE}/lib
OPTIONS_DEFINE= WCHAR LUIT DECTERM PCRE GNOME DABBREV TOOLBAR
ICONVERSION= 1
OPTIONS_DEFINE= WCHAR LUIT DECTERM PCRE DABBREV 256COLOR SIXEL GNOME LOGGING TOOLBAR
OPTIONS_RADIO= 3D
OPTIONS_RADIO_3D= XAW3D XAW3DXFT NEXTAW
TOOLBAR_DESC= Enable support menu/toolbar
DABBREV_DESC= Enable support for dabbrev-expand
DECTERM_DESC= Enable DECterm Locator support
LUIT_DESC= Use LUIT for locale convertion from/to UTF-8
SIXEL_DESC= Enable Sixel graphics support
WCHAR_DESC= Enable wide-character support
256COLOR_DESC= Enable 256-color support
LOGGING_DESC= Enable logging terminal I/O to a file
XAW3D_DESC= Link with Xaw 3d library
XAW3DXFT_DESC= Link with Xaw 3d xft (extended fonts) library
NEXTAW_DESC= Link with neXT Athena library
OPTIONS_DEFAULT=WCHAR LUIT 256COLOR
256COLOR_CONFIGURE_ENABLE= 256-color
LUIT_BUILD_DEPENDS= luit:${PORTSDIR}/x11/luit
LUIT_CONFIGURE_ENABLE= luit
WCHAR_CONFIGURE_ENABLE= wide-chars
DECTERM_CONFIGURE_ENABLE= dec-locator
PCRE_CONFIGURE_WITH= pcre
PCRE_LIB_DEPENDS= libpcre.so:${PORTSDIR}/devel/pcre
DABBREV_CONFIGURE_ENABLE= dabbrev
SIXEL_CONFIGURE_ENABLE= sixel-graphics
GNOME_USES= desktop-file-utils
LOGGING_CONFIGURE_ENABLE= logging
TOOLBAR_CONFIGURE_ENABLE= toolbar
XAW3D_CONFIGURE_WITH= Xaw3d
XAW3D_LIB_DEPENDS= libXaw3d.so:${PORTSDIR}/x11-toolkits/Xaw3d
XAW3DXFT_CONFIGURE_WITH= Xaw3dxft
XAW3DXFT_LIB_DEPENDS= libXaw3dxft.so:${PORTSDIR}/x11-toolkits/libxaw3dxft
NEXTAW_CONFIGURE_WITH= neXtaw
NEXTAW_LIB_DEPENDS= libneXtaw.so:${PORTSDIR}/x11-toolkits/neXtaw
PKG_CLASS= XTermDev
.include <bsd.port.options.mk>
CONFIGURE_ARGS+= --program-suffix=${PKGNAMESUFFIX} --with-app-class=${PKG_CLASS} --without-xterm-symlink
.if ${PORT_OPTIONS:MLUIT}
CONFIGURE_ARGS+= --enable-luit
BUILD_DEPENDS= luit:${PORTSDIR}/x11/luit
.endif
.if ${PORT_OPTIONS:MWCHAR}
CONFIGURE_ARGS+= --enable-wide-chars
.endif
.if ${PORT_OPTIONS:MDECTERM}
CONFIGURE_ARGS+= --enable-dec-locator
.endif
.if ${PORT_OPTIONS:MPCRE}
CONFIGURE_ARGS+= --with-pcre
LIB_DEPENDS= pcre:${PORTSDIR}/devel/pcre
.endif
.if ${PORT_OPTIONS:MDABBREV}
CONFIGURE_ARGS+= --enable-dabbrev
.endif
.if ${PORT_OPTIONS:MTOOLBAR}
CONFIGURE_ARGS+= --enable-toolbar
.endif
.if ${PORT_OPTIONS:MGNOME}
USE_GNOME= desktopfileutils
PLIST_SUB+= GNOME=""
.else
PLIST_SUB+= GNOME="@comment "
.endif
MAN1= resize${PKGNAMESUFFIX}.1 koi8rxterm${PKGNAMESUFFIX}.1 uxterm${PKGNAMESUFFIX}.1 xterm${PKGNAMESUFFIX}.1
.include <bsd.port.pre.mk>
.if ! ${PORT_OPTIONS:MXAW3D} && ! ${PORT_OPTIONS:MXAW3DXFT} && ! ${PORT_OPTIONS:MNEXTAW}
USE_XORG+= xaw
.endif
.if ${OSVERSION} < 900004
LIB_DEPENDS+= utempter:${PORTSDIR}/sysutils/libutempter
LIB_DEPENDS+= libutempter.so:${PORTSDIR}/sysutils/libutempter
.endif
post-extract:
@${CP} ${WRKDIR}/bsd-xterm-icons-1/*.png \
${WRKDIR}/bsd-xterm-icons-1/*.xpm \
${WRKSRC}/icons/
post-install:
.for f in koi8rxterm resize uxterm xterm
@${CHMOD} ${BINMODE} ${PREFIX}/bin/${f}
.for f in koi8rxterm${PKGNAMESUFFIX} resize${PKGNAMESUFFIX} uxterm${PKGNAMESUFFIX} xterm${PKGNAMESUFFIX}
@${CHMOD} ${BINMODE} ${STAGEDIR}${PREFIX}/bin/${f}
.endfor
.if ${PORT_OPTIONS:MGNOME}
@${MKDIR} ${PREFIX}/share/applications/
@${INSTALL_DATA} ${WRKSRC}/xterm.desktop ${PREFIX}/share/applications/
@-update-desktop-database
.endif
@${INSTALL_DATA} ${WRKSRC}/xterm.desktop \
${STAGEDIR}${PREFIX}/share/applications/xterm${PKGNAMESUFFIX}.desktop
.if ${PORT_OPTIONS:MWCHAR}
@${CAT} ${PKGMESSAGE}
.endif
.include <bsd.port.post.mk>
.include <bsd.port.mk>

View File

@ -8,6 +8,10 @@ lib/X11/app-defaults/UXTermDev
lib/X11/app-defaults/UXTermDev-color
lib/X11/app-defaults/XTermDev
lib/X11/app-defaults/XTermDev-color
man/man1/resize-dev.1.gz
man/man1/koi8rxterm-dev.1.gz
man/man1/uxterm-dev.1.gz
man/man1/xterm-dev.1.gz
share/applications/xterm-dev.desktop
share/pixmaps/filled-xterm-dev_32x32.xpm
share/pixmaps/filled-xterm-dev_48x48.xpm
@ -17,6 +21,3 @@ share/pixmaps/xterm-dev-color_32x32.xpm
share/pixmaps/xterm-dev-color_48x48.xpm
share/pixmaps/xterm-dev_32x32.xpm
share/pixmaps/xterm-dev_48x48.xpm
@dirrmtry share/applications
%%GNOME%%@exec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true
%%GNOME%%@unexec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true

View File

@ -1,11 +1,11 @@
# $XTermId: xterm.spec,v 1.74 2014/07/13 15:29:11 tom Exp $
# $XTermId: xterm.spec,v 1.76 2014/07/28 21:36:30 tom Exp $
Summary: X terminal emulator (development version)
%global my_middle xterm
%global my_suffix -dev
%global fullname %{my_middle}%{my_suffix}
%global my_class XTermDev
Name: %{fullname}
Version: 309
Version: 311
Release: 1
License: X11
Group: User Interface/X

View File

@ -4,8 +4,7 @@
* DO NOT EDIT BY HAND! This is generated by the script
* unicode/make-precompose.sh
*/
/* $XTermId: precompose.c,v 1.9 2013/02/03 17:06:01 tom Exp $ */
/* $XFree86$ */
/* $XTermId: precompose.c,v 1.10 2014/07/15 21:18:45 tom Exp $ */
#include <precompose.h>
@ -1019,6 +1018,13 @@ static struct {
{ 0x110AB, 0x110A5, 0x110BA},
{ 0x1112E, 0x11131, 0x11127},
{ 0x1112F, 0x11132, 0x11127},
{ 0x1134B, 0x11347, 0x1133E},
{ 0x1134C, 0x11347, 0x11357},
{ 0x114BC, 0x114B9, 0x114B0},
{ 0x114BB, 0x114B9, 0x114BA},
{ 0x114BE, 0x114B9, 0x114BD},
{ 0x115BA, 0x115B8, 0x115AF},
{ 0x115BB, 0x115B9, 0x115AF},
{ 0x1D15E, 0x1D157, 0x1D165},
{ 0x1D15F, 0x1D158, 0x1D165},
{ 0x1D160, 0x1D15F, 0x1D16E},

View File

@ -1,4 +1,4 @@
/* $XTermId: ptyx.h,v 1.809 2014/06/13 00:53:35 tom Exp $ */
/* $XTermId: ptyx.h,v 1.813 2014/09/17 08:24:34 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -909,6 +909,23 @@ typedef enum {
, NCOLORS /* total number of colors */
} TermColors;
/*
* Definitions for exec-formatted and insert-formatted actions.
*/
typedef void (*FormatSelect) (Widget, char *, char *, CELL *, CELL *);
typedef struct {
char *format;
char *buffer;
FormatSelect format_select;
#if OPT_PASTE64
Cardinal base64_paste;
#endif
#if OPT_READLINE
unsigned paste_brackets;
#endif
} InternalSelect;
/*
* Constants for titleModes resource
*/
@ -2294,7 +2311,7 @@ typedef struct {
int lastValidRow; /* " " */
Boolean selectToBuffer; /* copy selection to buffer */
char * internal_select;
InternalSelect internal_select;
String default_string;
String eightbit_select_types;
@ -2328,6 +2345,8 @@ typedef struct {
String initial_font;
String menu_font_names[NMENUFONTS][fMAX];
#define MenuFontName(n) menu_font_names[n][fNorm]
#define EscapeFontName() MenuFontName(fontMenu_fontescape)
#define SelectFontName() MenuFontName(fontMenu_fontsel)
long menu_font_sizes[NMENUFONTS];
int menu_font_number;
#if OPT_LOAD_VTFONTS || OPT_WIDE_CHARS

View File

@ -1,4 +1,4 @@
/* $XTermId: resize.c,v 1.130 2014/04/25 23:39:42 tom Exp $ */
/* $XTermId: resize.c,v 1.132 2014/07/24 22:47:09 tom Exp $ */
/*
* Copyright 2003-2013,2014 by Thomas E. Dickey
@ -264,13 +264,13 @@ static void
readstring(FILE *fp, char *buf, const char *str)
{
int last, c;
#if !defined(USG)
#if !defined(USG) && !defined(__minix)
/* What is the advantage of setitimer() over alarm()? */
struct itimerval it;
#endif
signal(SIGALRM, resize_timeout);
#if defined(USG)
#if defined(USG) || defined(__minix)
alarm(TIMEOUT);
#else
memset((char *) &it, 0, sizeof(struct itimerval));
@ -292,7 +292,7 @@ readstring(FILE *fp, char *buf, const char *str)
while ((*buf++ = (char) getc(fp)) != last) {
;
}
#if defined(USG)
#if defined(USG) || defined(__minix)
alarm(0);
#else
memset((char *) &it, 0, sizeof(struct itimerval));

View File

@ -1,4 +1,4 @@
/* $XTermId: screen.c,v 1.500 2014/06/19 21:09:11 tom Exp $ */
/* $XTermId: screen.c,v 1.501 2014/07/30 08:06:23 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -1254,8 +1254,8 @@ ScrnInsertChar(XtermWidget xw, unsigned n)
if (col < first || col > last) {
TRACE(("ScrnInsertChar - col %d outside [%d..%d]\n", col, first, last));
return;
} else if (last <= (col + (int) n)) {
n = (unsigned) (last - col);
} else if (last < (col + (int) n)) {
n = (unsigned) (last + 1 - col);
}
assert(screen->cur_col >= 0);

View File

@ -5,7 +5,6 @@
* unicode/make-precompose.sh
*/
/* @XTermId@ */
/* @XFree86@ */
#include <precompose.h>

View File

@ -1,4 +1,4 @@
/* $XTermId: version.h,v 1.393 2014/07/13 21:54:02 tom Exp $ */
/* $XTermId: version.h,v 1.397 2014/09/18 21:12:19 tom Exp $ */
/*
* Copyright 1998-2013,2014 by Thomas E. Dickey
@ -38,8 +38,8 @@
* version of X to which this version of xterm has been built. The resulting
* number in parentheses is my patch number (Thomas E. Dickey).
*/
#define XTERM_PATCH 309
#define XTERM_DATE 2014-07-13
#define XTERM_PATCH 311
#define XTERM_DATE 2014-09-18
#ifndef __vendorversion__
#define __vendorversion__ "XTerm/OpenBSD"

View File

@ -1,4 +1,4 @@
/* $XTermId: xterm.h,v 1.743 2014/06/28 20:53:20 tom Exp $ */
/* $XTermId: xterm.h,v 1.746 2014/09/03 23:58:49 tom Exp $ */
/*
* Copyright 1999-2013,2014 by Thomas E. Dickey
@ -99,7 +99,7 @@
#define HAVE_PUTENV 1
#endif
#if defined(CSRG_BASED) || defined(__GNU__)
#if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix)
#define USE_POSIX_TERMIOS 1
#endif
@ -134,7 +134,7 @@
#define HAVE_TCGETATTR 1
#endif
#if defined(__SCO__) || defined(__UNIXWARE__)
#if defined(__SCO__) || defined(__UNIXWARE__) || defined(__minix)
#define USE_TERMCAP 1
#endif
@ -369,6 +369,12 @@ extern char **environ;
#define Maybe 2
#define ALLOC_STRING(name) \
if (name != 0) \
name = x_strdup(name)
#define FREE_STRING(name) \
free_string(name)
/***====================================================================***/
#define XtNallowBoldFonts "allowBoldFonts"
@ -1068,6 +1074,7 @@ extern void do_rpm (XtermWidget /* xw */, int /* nparam */, int * /* params */)
extern void do_xevents (void);
extern void end_tek_mode (void);
extern void end_vt_mode (void);
extern void free_string(String value);
extern void hide_tek_window (void);
extern void hide_vt_window (void);
extern void ice_error (IceConn /* iceConn */);

View File

@ -30,7 +30,7 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
*****************************************************************************
$XTermId: xterm.log.html,v 1.1504 2014/07/13 21:58:07 tom Exp $
$XTermId: xterm.log.html,v 1.1522 2014/09/18 21:11:45 tom Exp $
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
@ -72,6 +72,10 @@
CHANGELOG</a>).</p>
<ul>
<li><a href="#xterm_311">Patch #311 - 2014/09/18</a></li>
<li><a href="#xterm_310">Patch #310 - 2014/07/25</a></li>
<li><a href="#xterm_309">Patch #309 - 2014/07/13</a></li>
<li><a href="#xterm_308">Patch #308 - 2014/06/19</a></li>
@ -903,6 +907,65 @@
<li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li>
</ul>
<h1><a name="xterm_311" id="xterm_311">Patch #311 -
2014/09/18</a></h1>
<ul>
<li>mention <code>xclip</code> in manpage as an alternative
workaround for copying clipboard data, noting that
<code>selectToClipboard</code> (from <a href="#xterm_209">patch
#209</a>) is the recommended approach (Debian #639094).</li>
<li>correct comparison in do_select_regex() of working position
against starting column.</li>
<li>correct initialization for regular-expression feature of
<code>exec-selectable</code> and <code>insert-selectable</code>
actions (Debian #758633).</li>
<li>modify logic for <code>exec-formatted</code> and
<code>insert-formatted</code> actions to ensure that the
formatting occurs just after the selection is received (Debian
#758633).</li>
<li>account for state of reverse-video in special case of
cursor coloring (Debian #759734).</li>
<li>fix a sign-extension problem in ReGIS support, as well as
correcting a case where ignored-characters were not really
ignored (patch by Ross Combs).</li>
<li>Enable the "Escape Sequence" menu entry when an OSC&nbsp;50
is received. Also disable it if the escape sequence specifies
no font (Debian #760208).</li>
<li>improve fix for the <code>fontsel</code> menu entry from
<a href="#xterm_304">patch #304</a>: because the recovery used
the "current font", it would fail if one first selected a valid
font, then an invalid font (Debian #760207).</li>
<li>correct an off-by-one in limit-check for
<code>ScrnLimitChar</code> function (report by Egmont
Koblinger).</li>
</ul>
<h1><a name="xterm_310" id="xterm_310">Patch #310 -
2014/07/25</a></h1>
<ul>
<li>update package/freebsd files based on xterm #309 port.</li>
<li>adapt changes from Minux3.2 which ported <a href=
"#xterm_197">xterm #197</a>, to allow building on that platform
both using <code>imake</code> as well as using the configure
script.</li>
<li>update precompose.c based on Unicode 7.0</li>
<li>build-fix for <code>--with-Xaw3dxft</code> option (report
by Emanuel Haupt).</li>
</ul>
<h1><a name="xterm_309" id="xterm_309">Patch #309 -
2014/07/13</a></h1>

View File

@ -1,5 +1,5 @@
'\" t
.\" $XTermId: xterm.man,v 1.581 2014/04/14 18:42:54 Ross.Combs Exp $
.\" $XTermId: xterm.man,v 1.582 2014/09/18 08:35:37 tom Exp $
.\"
.\" Copyright 1996-2013,2014 by Thomas E. Dickey
.\"
@ -4623,6 +4623,24 @@ When configured to use the clipboard (see resource \fBselectToClipboard\fP),
the problem with persistence of ownership is bypassed.
Otherwise, there is no difference regarding the data which can be
passed via selection.
.PP
The PRIMARY token is a standard X feature, documented in the ICCCM
(\fIInter-Client Communication Conventions Manual\fR),
which states
.RS
.PP
The selection named by the atom PRIMARY is used for all commands that take only a single argument and is the principal means of communication between clients that use the selection mechanism.
.RE
.PP
However, many applications use CLIPBOARD in imitation of other windowing
systems.
The \fBselectToClipboard\fP resource (and corresponding menu entry
\fISelect to Clipboard\fP) introduce the SELECT token (known only
to \fI\*n\fP) which chooses between the PRIMARY and CLIPBOARD tokens.
.PP
Without using this feature, one can use workarounds such as the
\fIxclip\fP program to show the contents of the X clipboard within an
\fI\*n\fP window.
.
.SS SELECTION TARGETS
The different types of data which are passed depend on what the receiving

View File

@ -1,7 +1,7 @@
/* $XTermId: xterm_io.h,v 1.56 2013/01/06 15:20:45 tom Exp $ */
/* $XTermId: xterm_io.h,v 1.58 2014/07/25 08:26:56 tom Exp $ */
/*
* Copyright 2000-2012,2013 by Thomas E. Dickey
* Copyright 2000-2013,2014 by Thomas E. Dickey
*
* All Rights Reserved
*
@ -41,6 +41,11 @@
* FIXME: some, such as those defining USE_TERMIOS should be moved to xterm.h
* as they are integrated with the configure script.
*/
#if defined(__minix)
#define USE_POSIX_TERMIOS 1
#undef HAVE_POSIX_OPENPT /* present, does not work */
#endif
#ifdef CSRG_BASED
#define USE_TERMIOS
#endif
@ -162,9 +167,9 @@
*/
#ifdef SYSV
#ifdef USE_USG_PTYS
#include <sys/stream.h> /* get typedef used in ptem.h */
#include <sys/stream.h> /* get typedef used in ptem.h */
#ifdef HAVE_SYS_PTEM_H
#include <sys/ptem.h> /* get struct winsize */
#include <sys/ptem.h> /* get struct winsize */
#endif
#endif /* USE_USG_PTYS */
#endif /* SYSV */
@ -203,7 +208,7 @@
#endif
#if defined(__sgi) && (OSMAJORVERSION >= 5)
#undef TIOCLSET /* defined, but not useable */
#undef TIOCLSET /* defined, but not useable */
#endif
#if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
@ -212,7 +217,7 @@
#endif
#if defined (__sgi) || (defined(__linux__) && defined(__sparc__)) || defined(__UNIXWARE__)
#undef TIOCLSET /* XXX why is this undef-ed again? */
#undef TIOCLSET /* XXX why is this undef-ed again? */
#endif
#if defined(sun) || defined(__UNIXWARE__)

View File

@ -62,6 +62,7 @@
/* #undef HAVE_LIB_PCRE */ /* CF_WITH_PCRE */
#define HAVE_LIB_XAW 1 /* CF_X_ATHENA */
/* #undef HAVE_LIB_XAW3D */ /* CF_X_ATHENA(--with-Xaw3d) */
/* #undef HAVE_LIB_XAW3DXFT */ /* CF_X_ATHENA(--with-Xaw3dxft) */
/* #undef HAVE_LIB_XAWPLUS */ /* CF_X_ATHENA(--with-XawPlus) */
#define HAVE_LIB_XCURSOR 1 /* AC_CHECK_LIB(Xcursor) */
#define HAVE_MKDTEMP 1 /* AC_CHECK_FUNCS(mkdtemp) */

View File

@ -1,4 +1,4 @@
/* $XTermId: xtermcfg.hin,v 1.205 2014/05/08 08:05:07 tom Exp $ */
/* $XTermId: xtermcfg.hin,v 1.206 2014/07/14 23:42:59 tom Exp $ */
/*
* Copyright 1997-2013,2014 by Thomas E. Dickey
@ -62,6 +62,7 @@
#undef HAVE_LIB_PCRE /* CF_WITH_PCRE */
#undef HAVE_LIB_XAW /* CF_X_ATHENA */
#undef HAVE_LIB_XAW3D /* CF_X_ATHENA(--with-Xaw3d) */
#undef HAVE_LIB_XAW3DXFT /* CF_X_ATHENA(--with-Xaw3dxft) */
#undef HAVE_LIB_XAWPLUS /* CF_X_ATHENA(--with-XawPlus) */
#undef HAVE_LIB_XCURSOR /* AC_CHECK_LIB(Xcursor) */
#undef HAVE_MKDTEMP /* AC_CHECK_FUNCS(mkdtemp) */