list->params = params + 1; list->count = num_params;
list->params = params; list->count = num_params; #if OPT_WIDE_CHARS list->utf8_failed = utf8_failed; #endif
static void _GetSelection(	Widget w,	Time ev_time,	String *params,			/* selections in precedence order */	Cardinal num_params){    Atom selection;    int cutbuffer;    XmuInternStrings(XtDisplay(w), params, (Cardinal)1, &selection);    switch (selection) {      case XA_CUT_BUFFER0: cutbuffer = 0; break;      case XA_CUT_BUFFER1: cutbuffer = 1; break;      case XA_CUT_BUFFER2: cutbuffer = 2; break;      case XA_CUT_BUFFER3: cutbuffer = 3; break;      case XA_CUT_BUFFER4: cutbuffer = 4; break;      case XA_CUT_BUFFER5: cutbuffer = 5; break;      case XA_CUT_BUFFER6: cutbuffer = 6; break;      case XA_CUT_BUFFER7: cutbuffer = 7; break;      default:	       cutbuffer = -1;    }    if (cutbuffer >= 0) {	int inbytes;	unsigned long nbytes;	int fmt8 = 8;	Atom type = XA_STRING;	char *line = XFetchBuffer(XtDisplay(w), &inbytes, cutbuffer);	nbytes = (unsigned long) inbytes;	if (nbytes > 0)	    SelectionReceived(w, NULL, &selection, &type, (XtPointer)line,			      &nbytes, &fmt8);	else if (num_params > 1)	    _GetSelection(w, ev_time, params+1, num_params-1);    } else {	struct _SelectionList* list;	if (--num_params) {	    list = XtNew(struct _SelectionList);	    list->params = params + 1;	    list->count = num_params; /* decremented above */	    list->time = ev_time;	} else list = NULL;	XtGetSelectionValue(w, selection, XA_STRING, SelectionReceived,			    (XtPointer)list, ev_time);    }}