Import Debian changes 4.89-2+deb9u4
[hcoop/debian/exim4.git] / exim_monitor / em_xs.c
CommitLineData
420a0d19
CE
1/*************************************************
2* Exim Monitor *
3*************************************************/
4
2813c06e 5/* Copyright (c) University of Cambridge, 1995 - 2016 */
420a0d19
CE
6/* See the file NOTICE for conditions of use and distribution. */
7
8/* This file contains a number of subroutines that are in effect
9just alternative packaging for calls to various X functions that
10happen to be convenient for this program. */
11
12#include "em_hdr.h"
13
14
15
16/*************************************************
17* xs_SetValues *
18*************************************************/
19
20/* Unpick a variable-length argument list and set up an
21appropriate call to XtSetValues. To make it reasonably
22efficient, we keep a working Arg structure of length 15;
23the largest call in eximon sets 11 values. The code uses
24malloc/free if more, just in case there is ever a longer
25one that gets overlooked. */
26
27static Arg xs_temparg[15];
28
29void xs_SetValues(Widget w, Cardinal num_args, ...)
30{
31int i;
32va_list ap;
33Arg *aa = (num_args > 15)? (Arg *)malloc(num_args*sizeof(Arg)) : xs_temparg;
34va_start(ap, num_args);
35for (i = 0; i < num_args; i++)
36 {
37 aa[i].name = va_arg(ap, String);
38 aa[i].value = va_arg(ap, XtArgVal);
39 }
2813c06e 40va_end(ap);
420a0d19
CE
41XtSetValues(w, aa, num_args);
42if (num_args > 15) free(aa);
43}
44
45/* End of em_xs.c */