-DEFUN ("modify-terminal-parameters", Fmodify_terminal_parameters,
- Smodify_terminal_parameters, 2, 2, 0,
- doc: /* Modify the parameters of terminal TERMINAL according to ALIST.
-ALIST is an alist of parameters to change and their new values.
-Each element of ALIST has the form (PARM . VALUE), where PARM is a symbol.
-
-TERMINAL can be a terminal id, a frame or nil (meaning the selected
-frame's terminal). */)
- (terminal, alist)
- Lisp_Object terminal;
- Lisp_Object alist;
-{
- Lisp_Object tail, prop, val;
- struct terminal *t = get_terminal (terminal, 1);
- int length = XINT (Fsafe_length (alist));
- int i;
- Lisp_Object *parms = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
- Lisp_Object *values = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
-
- /* Extract parm names and values into those vectors. */
-
- i = 0;
- for (tail = alist; CONSP (tail); tail = Fcdr (tail))
- {
- Lisp_Object elt;
-
- elt = Fcar (tail);
- parms[i] = Fcar (elt);
- values[i] = Fcdr (elt);
- i++;
- }
-
- /* Now process them in reverse of specified order. */
- for (i--; i >= 0; i--)
- {
- prop = parms[i];
- val = values[i];
- store_terminal_param (t, prop, val);
- }
- return Qnil;
-}
-