Merge lp:~info-martin-konrad/epics-gateway/putlog into lp:~epics-core/epics-gateway/original-trunk

Proposed by Martin Konrad
Status: Merged
Approved by: Ralph Lange
Approved revision: 183
Merged at revision: 182
Proposed branch: lp:~info-martin-konrad/epics-gateway/putlog
Merge into: lp:~epics-core/epics-gateway/original-trunk
Diff against target: 531 lines (+328/-1)
7 files modified
Makefile (+9/-0)
gateResources.cc (+222/-0)
gateResources.h (+17/-0)
gateStat.cc (+9/-0)
gateStat.h (+2/-0)
gateVc.cc (+18/-0)
gateway.cc (+51/-1)
To merge this branch: bzr merge lp:~info-martin-konrad/epics-gateway/putlog
Reviewer Review Type Date Requested Status
Ralph Lange Approve
Ben Franksen Pending
Review via email: mp+213921@code.launchpad.net

Description of the change

Add option to compile in and use caPutLog

To post a comment you must log in.
Revision history for this message
Ralph Lange (ralph-lange) wrote :

To me, this patch looks good.

I have not settled in well enough to have an environment to actually compile and test the code, though, so I would like Benjamin to also have a look and maybe take this for a test drive.

review: Approve (close look at the code, no testing)
182. By Martin Konrad

Add debug output for CAPUTLOG to Makefile

183. By Martin Konrad

Set USR_* instead of USR_*_DEFAULT if CAPUTLOG is defined

This makes sure these settings are added even if USR_*_<os> has
been defined.

Revision history for this message
Ben Franksen (bfrk) wrote :

Am Donnerstag, 15. Mai 2014, 07:23:18 schrieb Ralph Lange:
> Review: Approve close look at the code, no testing
>
> To me, this patch looks good.
>
> I have not settled in well enough to have an environment to actually compile
> and test the code, though, so I would like Benjamin to also have a look and
> maybe take this for a test drive.

Sorry for not answering sooner, I was extremely busy with a side project of
mine...

Looking at https://code.launchpad.net/~info-martin-konrad/epics-gateway/putlog/+merge/213921

I have the feeling what the page shows me is not the whole change. For
instance, I am not seeing any caPutLog includes being added. Or maybe I see
only the latest change on the branch and not the whole diff? How can I see
that?

BTW, is there a way to look at differences side-by-side in launchpad?

Sorry for my stupidity w.r.t. lp UI
Ben

________________________________

Helmholtz-Zentrum Berlin für Materialien und Energie GmbH

Mitglied der Hermann von Helmholtz-Gemeinschaft Deutscher Forschungszentren e.V.

Aufsichtsrat: Vorsitzender Prof. Dr. Dr. h.c. mult. Joachim Treusch, stv. Vorsitzende Dr. Beatrix Vierkorn-Rudolph
Geschäftsführung: Prof. Dr. Anke Rita Kaysser-Pyzalla, Thomas Frederking

Sitz Berlin, AG Charlottenburg, 89 HRB 5583

Postadresse:
Hahn-Meitner-Platz 1
D-14109 Berlin

http://www.helmholtz-berlin.de

Revision history for this message
Martin Konrad (info-martin-konrad) wrote :

Hi Ben,
> Looking at
> https://code.launchpad.net/~info-martin-konrad/epics-gateway/putlog/+merge/213921
>I have the feeling what the page shows me is not the whole change.
> For instance, I am not seeing any caPutLog includes being added.
Have a look at gateResources.cc lines 36 to 39.

> Or maybe I see only the latest change on the branch and not the whole
> diff? How can I see that?
Nope, there are 3 commits on this branch. One adds the new code and two
fix minor issues (I pushed them an hour ago). The merge view shows the
changes introduced by all three commits.

> Sorry for my stupidity w.r.t. lp UI
Sorry, cannot comment on that. LP is not for me either...

Martin

--
Martin Konrad
Control System Engineer
Facility for Rare Isotope Beams
Michigan State University
640 South Shaw Lane
East Lansing, MI 48824-1321, USA
Tel. 517-908-7253
Email: <email address hidden>

Revision history for this message
Ben Franksen (bfrk) wrote :

Am Montag, 19. Mai 2014, 19:21:21 schrieb Martin Konrad:
> > Looking at
> > https://code.launchpad.net/~info-martin-konrad/epics-gateway/putlog/+merge
> > /213921>
> >I have the feeling what the page shows me is not the whole change.
> >
> > For instance, I am not seeing any caPutLog includes being added.
>
> Have a look at gateResources.cc lines 36 to 39.

Oops. Like I said, just stupidity on my side...

> > Or maybe I see only the latest change on the branch and not the whole
> > diff? How can I see that?
>
> Nope, there are 3 commits on this branch. One adds the new code and two
> fix minor issues (I pushed them an hour ago). The merge view shows the
> changes introduced by all three commits.

Thanks, I hoped that was the case.

So. I've taken a close look and it all looks pretty neat and tidy to me and
gets my full approval, as far as I am able to judge (disclaimer: I am not
deeply familiar with the gateway code).

Cheers
Ben
--
Perl: There Is More Than One Way To Do It
Python: There Is One Way To Do It
Haskell: There Is One Way To Do It, Up To Isomorphisµ

________________________________

Helmholtz-Zentrum Berlin für Materialien und Energie GmbH

Mitglied der Hermann von Helmholtz-Gemeinschaft Deutscher Forschungszentren e.V.

Aufsichtsrat: Vorsitzender Prof. Dr. Dr. h.c. mult. Joachim Treusch, stv. Vorsitzende Dr. Beatrix Vierkorn-Rudolph
Geschäftsführung: Prof. Dr. Anke Rita Kaysser-Pyzalla, Thomas Frederking

Sitz Berlin, AG Charlottenburg, 89 HRB 5583

Postadresse:
Hahn-Meitner-Platz 1
D-14109 Berlin

http://www.helmholtz-berlin.de

Revision history for this message
Ralph Lange (ralph-lange) wrote :

Finally I was able to compile and run a few tests.
Looks good!

review: Approve
Revision history for this message
Martin Konrad (info-martin-konrad) wrote :

> The proposal to merge lp:~info-martin-konrad/epics-gateway/putlog into lp:epics-gateway has been updated.
>
> Status: Approved => Merged
Ralph, are you planning to celebrate this with a new release?

--
Martin Konrad
Control System Engineer
Facility for Rare Isotope Beams
Michigan State University
640 South Shaw Lane
East Lansing, MI 48824-1321, USA
Tel. 517-908-7253
Email: <email address hidden>

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Makefile'
2--- Makefile 2009-09-17 15:45:45 +0000
3+++ Makefile 2014-05-19 18:31:22 +0000
4@@ -144,6 +144,14 @@
5 # need access to casCtx.h
6 USR_INCLUDES += -I$(EPICS_BASE)/src/cas/generic
7
8+# To compile in caPutLog functionality, define the location of the caPutLog
9+# module as 'CAPUTLOG' in the appropriate extensions configure/RELEASE* file
10+ifdef CAPUTLOG
11+ USR_LIBS += caPutLog dbIoc
12+ USR_CXXFLAGS += -DWITH_CAPUTLOG
13+ USR_CFLAGS += -DWITH_CAPUTLOG
14+endif
15+
16 PROD_HOST = gateway
17
18
19@@ -179,6 +187,7 @@
20 @echo ACC_SFLAGS_NO: $(ACC_SFLAGS_NO)
21 @echo SHARED_LIBRARIES: $(SHARED_LIBRARIES)
22 @echo DEBUGCMD: $(DEBUGCMD)
23+ @echo CAPUTLOG: $(CAPUTLOG)
24
25 # **************************** Emacs Editing Sequences *****************
26 # Local Variables:
27
28=== modified file 'gateResources.cc'
29--- gateResources.cc 2011-04-05 21:28:22 +0000
30+++ gateResources.cc 2014-05-19 18:31:22 +0000
31@@ -41,6 +41,12 @@
32 #include <gddAppTable.h>
33 #include <dbMapper.h>
34
35+#ifdef WITH_CAPUTLOG
36+ #include <caPutLog.h>
37+ #include <caPutLogTask.h>
38+ #include <caPutLogAs.h>
39+#endif
40+
41 // Global variables
42 gateResources* global_resources;
43
44@@ -108,6 +114,159 @@
45 return name;
46 }
47
48+#ifdef WITH_CAPUTLOG
49+/*
50+ We need to define these here, as caPutLog is using dbFldTypes.h defs for
51+ DBR_xxx and our code is loading db_access.h defs elsewhere, and thse ARE
52+ DIFFERENT.
53+
54+ DBR_FLOAT in db_access.h is 6, for example but in dbFldTypes.h that means a
55+ DBR_ULONG.
56+*/
57+#define OUR_DBR_STRING 0
58+#define OUR_DBR_CHAR 1
59+#define OUR_DBR_UCHAR 2
60+#define OUR_DBR_SHORT 3
61+#define OUR_DBR_USHORT 4
62+#define OUR_DBR_LONG 5
63+#define OUR_DBR_ULONG 6
64+#define OUR_DBR_FLOAT 7
65+#define OUR_DBR_DOUBLE 8
66+
67+static int gddGetOurType(const gdd *gddVal)
68+{
69+ switch ( gddVal->primitiveType() ) {
70+ case aitEnumInt8 : return(OUR_DBR_CHAR);
71+ case aitEnumUint8 : return(OUR_DBR_UCHAR);
72+ case aitEnumInt16 : return(OUR_DBR_SHORT);
73+ case aitEnumEnum16 : return(OUR_DBR_USHORT);
74+ case aitEnumUint16 : return(OUR_DBR_USHORT);
75+ case aitEnumInt32 : return(OUR_DBR_LONG);
76+ case aitEnumUint32 : return(OUR_DBR_ULONG);
77+ case aitEnumFloat32 : return(OUR_DBR_FLOAT);
78+ case aitEnumFloat64 : return(OUR_DBR_DOUBLE);
79+ case aitEnumFixedString:
80+ case aitEnumString:
81+ default:
82+ return(OUR_DBR_STRING);
83+ }
84+}
85+
86+static int gddToVALUE(const gdd *gddVal, short ourdbrtype, VALUE *valueStruct)
87+{
88+ memset(valueStruct,0,sizeof(VALUE));
89+ switch (ourdbrtype) {
90+ case OUR_DBR_CHAR: {
91+ aitInt8 x;
92+ gddVal->get(x);
93+ valueStruct->v_char = x;
94+ }
95+ return(0);
96+
97+ case OUR_DBR_UCHAR: {
98+ aitUint8 x;
99+ gddVal->get(x);
100+ valueStruct->v_uchar = x;
101+ }
102+ return(0);
103+
104+ case OUR_DBR_SHORT: {
105+ aitInt16 x;
106+ gddVal->get(x);
107+ valueStruct->v_short = x;
108+ }
109+ return(0);
110+
111+ case OUR_DBR_USHORT: {
112+ aitUint16 x;
113+ gddVal->get(x);
114+ valueStruct->v_ushort = x;
115+ }
116+ return(0);
117+
118+ case OUR_DBR_LONG: {
119+ aitInt32 x;
120+ gddVal->get(x);
121+ valueStruct->v_long = x;
122+ }
123+ return(0);
124+
125+ case OUR_DBR_ULONG: {
126+ aitUint32 x;
127+ gddVal->get(x);
128+ valueStruct->v_ulong = x;
129+ }
130+ return(0);
131+
132+ case OUR_DBR_FLOAT: {
133+ aitFloat32 x;
134+ gddVal->get(x);
135+ valueStruct->v_float = x;
136+ }
137+ return(0);
138+
139+ case OUR_DBR_DOUBLE: {
140+ aitFloat64 x;
141+ gddVal->get(x);
142+ valueStruct->v_double = x;
143+ }
144+ return(0);
145+
146+ case OUR_DBR_STRING:
147+ default: {
148+ aitString x;
149+ gddVal->get(x);
150+ int len = strlen(x);
151+ int siz = sizeof(valueStruct->v_string);
152+ if (len >= siz) {
153+ strncpy(valueStruct->v_string,x,siz-1);
154+ valueStruct->v_string[siz-1] = 0;
155+ } else {
156+ strcpy(valueStruct->v_string,x);
157+ }
158+ return(0);
159+ }
160+ }
161+}
162+
163+static char *debugVALUEString(VALUE *v, int ourdbrtype, char *buffer)
164+{
165+ switch (ourdbrtype) {
166+ case OUR_DBR_CHAR:
167+ sprintf(buffer,"v_char %d",v->v_char);
168+ break;
169+ case OUR_DBR_UCHAR:
170+ sprintf(buffer,"v_uchar %d",v->v_uchar);
171+ break;
172+ case OUR_DBR_SHORT:
173+ sprintf(buffer,"v_short %hd",v->v_short);
174+ break;
175+ case OUR_DBR_USHORT:
176+ sprintf(buffer,"v_ushort %hu",v->v_ushort);
177+ break;
178+ case OUR_DBR_LONG:
179+ sprintf(buffer,"v_long %ld",v->v_long);
180+ break;
181+ case OUR_DBR_ULONG:
182+ sprintf(buffer,"v_ulong %lu",v->v_ulong);
183+ break;
184+ case OUR_DBR_FLOAT:
185+ sprintf(buffer,"v_float %g",v->v_float);
186+ break;
187+ case OUR_DBR_DOUBLE:
188+ sprintf(buffer,"v_double %g",v->v_double);
189+ break;
190+ case OUR_DBR_STRING:
191+ sprintf(buffer,"v_string '%s'",v->v_string);
192+ break;
193+ default:
194+ sprintf(buffer,"unknown type %d",ourdbrtype);
195+ }
196+ return(buffer);
197+}
198+
199+#endif // WITH_CAPUTLOG
200+
201 gateResources::gateResources(void)
202 {
203 as = NULL;
204@@ -130,6 +289,9 @@
205
206 // Miscellaneous initializations
207 putlog_file=NULL;
208+#ifdef WITH_CAPUTLOG
209+ caputlog_address=NULL;
210+#endif
211 putlogFp=NULL;
212 report_file=strDup(GATE_REPORT_FILE);
213 debug_level=0;
214@@ -168,6 +330,10 @@
215 if(command_file) delete [] command_file;
216 if(putlog_file) delete [] putlog_file;
217 if(report_file) delete [] report_file;
218+#ifdef WITH_CAPUTLOG
219+ caPutLog_Term();
220+ if (caputlog_address) delete [] caputlog_address;
221+#endif
222 }
223
224 int gateResources::appValue=0;
225@@ -207,6 +373,62 @@
226 return 0;
227 }
228
229+#ifdef WITH_CAPUTLOG
230+int gateResources::setCaPutlogAddress(const char* address)
231+{
232+ if (caputlog_address) {
233+ delete [] caputlog_address;
234+ }
235+ caputlog_address = strDup(address);
236+ return 0;
237+}
238+
239+int gateResources::caPutLog_Init(void)
240+{
241+ if (caputlog_address) {
242+ return caPutLogInit(caputlog_address,caPutLogAll);
243+ }
244+ return 1;
245+}
246+
247+void gateResources::caPutLog_Term(void)
248+{
249+ caPutLogTaskStop();
250+}
251+
252+void gateResources::caPutLog_Send
253+ (const char *user,
254+ const char *host,
255+ const char *pvname,
256+ const gdd *old_value,
257+ const gdd *new_value)
258+{
259+ if ((! new_value) || (new_value->primitiveType() == aitEnumInvalid)) return;
260+
261+ // get memory for a LOGDATA item from caPutLog's free list
262+ LOGDATA *pdata = caPutLogDataCalloc();
263+ if (pdata == NULL) {
264+ errlogPrintf("gateResources::caPutLogSend: memory allocation failed\n");
265+ return;
266+ }
267+ strcpy(pdata->userid,user);
268+ strcpy(pdata->hostid,host);
269+ strcpy(pdata->pv_name,pvname);
270+ pdata->pfield = (void *) pvname;
271+ pdata->type = gddGetOurType(new_value);
272+ gddToVALUE(new_value,pdata->type,&pdata->new_value.value);
273+ new_value->getTimeStamp(&pdata->new_value.time);
274+ if ((old_value) && (old_value->primitiveType() != aitEnumInvalid) && (gddGetOurType(old_value) == pdata->type)) {
275+ gddToVALUE(old_value,pdata->type,&pdata->old_value);
276+ } else {
277+ // if no usable old_value provided, fill in data.old_value with copy of new value
278+ // as there's no way to flag a VALUE struct as invalid
279+ memcpy(&pdata->old_value,&pdata->new_value.value,sizeof(VALUE));
280+ }
281+ caPutLogTaskSend(pdata);
282+}
283+#endif // WITH_CAPUTLOG
284+
285 int gateResources::setReportFile(const char* file)
286 {
287 if(report_file) delete [] report_file;
288
289=== modified file 'gateResources.h'
290--- gateResources.h 2007-07-10 20:08:21 +0000
291+++ gateResources.h 2014-05-19 18:31:22 +0000
292@@ -49,6 +49,7 @@
293 #endif
294
295 #include "cadef.h"
296+#include "gdd.h"
297
298 #include "gateVersion.h"
299
300@@ -132,6 +133,19 @@
301 gateAs* getAs(void);
302 bool isAsSetUp(void) const { return as?true:false; }
303
304+#ifdef WITH_CAPUTLOG
305+ int setCaPutlogAddress(const char* address);
306+ const char* caputlogAddress(void) const { return caputlog_address?caputlog_address:"NULL"; }
307+ int hasCaPutlogAddress(void) const { return caputlog_address?1:0; }
308+ int caPutLog_Init(void);
309+ void caPutLog_Send(const char *user,
310+ const char *host,
311+ const char *pvname,
312+ const gdd *old_value,
313+ const gdd *new_value);
314+ void caPutLog_Term(void);
315+#endif
316+
317 // here for convenience
318 static int appValue;
319 static int appEnum;
320@@ -144,6 +158,9 @@
321
322 private:
323 char *access_file, *pvlist_file, *command_file, *putlog_file, *report_file;
324+#ifdef WITH_CAPUTLOG
325+ char *caputlog_address;
326+#endif
327 int debug_level, ro;
328 bool serverMode;
329 bool cacheMode;
330
331=== modified file 'gateStat.cc'
332--- gateStat.cc 2005-02-11 22:55:10 +0000
333+++ gateStat.cc 2014-05-19 18:31:22 +0000
334@@ -92,6 +92,15 @@
335 pStat && pStat->getName()?pStat->getName():"Unknown");
336 fflush(fp);
337 }
338+#ifdef WITH_CAPUTLOG
339+ if (global_resources->hasCaPutlogAddress()) {
340+ global_resources->caPutLog_Send(asclient->user() ? asclient->user() : "Unknown",
341+ asclient->host() ? asclient->host() : "Unknown",
342+ (pStat && pStat->getName()) ? pStat->getName() : "Unknown",
343+ (pStat) ? pStat->pvData() : NULL,
344+ &value);
345+ }
346+#endif
347 }
348
349 // Call the non-virtual-function write() in the gateStat
350
351=== modified file 'gateStat.h'
352--- gateStat.h 2004-06-11 15:29:57 +0000
353+++ gateStat.h 2014-05-19 18:31:22 +0000
354@@ -78,6 +78,8 @@
355
356 void report(FILE *fp);
357
358+ gdd* pvData(void) const { return value; }
359+
360 protected:
361 gdd *value;
362 gdd *attr;
363
364=== modified file 'gateVc.cc'
365--- gateVc.cc 2009-08-31 19:57:25 +0000
366+++ gateVc.cc 2014-05-19 18:31:22 +0000
367@@ -244,6 +244,15 @@
368 vc && vc->getName()?vc->getName():"Unknown");
369 fflush(fp);
370 }
371+#ifdef WITH_CAPUTLOG
372+ if (global_resources->hasCaPutlogAddress()) {
373+ global_resources->caPutLog_Send(user ? user : "Unknown",
374+ host ? host : "Unknown",
375+ (vc && vc->getName()) ? vc->getName() : "Unknown",
376+ (vc) ? vc->eventData() : NULL,
377+ &value);
378+ }
379+#endif
380 }
381
382 // Call the non-virtual-function write() in the gateVcData
383@@ -271,6 +280,15 @@
384 vc && vc->getName()?vc->getName():"Unknown");
385 fflush(fp);
386 }
387+#ifdef WITH_CAPUTLOG
388+ if (global_resources->hasCaPutlogAddress()) {
389+ global_resources->caPutLog_Send(user ? user : "Unknown",
390+ host ? host : "Unknown",
391+ (vc && vc->getName()) ? vc->getName() : "Unknown",
392+ (vc) ? vc->eventData() : NULL,
393+ &value);
394+ }
395+#endif
396 }
397
398 // Call the non-virtual-function write() in the gateVcData
399
400=== modified file 'gateway.cc'
401--- gateway.cc 2007-07-10 20:08:21 +0000
402+++ gateway.cc 2014-05-19 18:31:22 +0000
403@@ -102,6 +102,7 @@
404 // -access file_name = access security file
405 // -command file_name = USR1 command list file
406 // -putlog file_name = putlog file
407+// -caputlog = address (IP:port) for caPutLog server
408 // -report file_name = report file
409 // -home directory = the program's home directory
410 // -connect_timeout number = clear PV connect requests every number seconds
411@@ -123,6 +124,7 @@
412 // process variable list file = gateway.pvlist
413 // USR1 command list file = gateway.command
414 // putlog file = gateway.putlog
415+// caputlog address = none, not used
416 // report file = gateway.report
417 // log file = gateway.log
418 // debug level = 0 (none)
419@@ -166,7 +168,9 @@
420 #define PARM_SERVER_IGNORE_IP 25
421 #define PARM_CACHE 26
422 #define PARM_ARCHIVE 27
423-
424+#ifdef WITH_CAPUTLOG
425+ #define PARM_CAPUTLOG 28
426+#endif
427
428 #define HOME_DIR_SIZE 300
429
430@@ -184,6 +188,9 @@
431 static const char *log_file=NULL;
432 static const char *putlog_file=NULL;
433 static const char *report_file=NULL;
434+#ifdef WITH_CAPUTLOG
435+static const char *caputlog_address=NULL;
436+#endif
437 #ifndef WIN32
438 static pid_t parent_pid;
439 #endif
440@@ -205,6 +212,9 @@
441 { "-access", 7, PARM_ACCESS, "file_name" },
442 { "-command", 8, PARM_COMMAND, "file_name" },
443 { "-putlog", 7, PARM_PUTLOG, "file_name" },
444+#ifdef WITH_CAPUTLOG
445+ { "-caputlog", 9, PARM_CAPUTLOG, "address (ip:port)" },
446+#endif
447 { "-report", 7, PARM_REPORT, "file_name" },
448 { "-home", 5, PARM_HOME, "directory" },
449 { "-sip", 4, PARM_SERVER_IP, "IP_address" },
450@@ -423,6 +433,9 @@
451 fprintf(fp,"# pvlist file=<%s>\n",global_resources->listFile());
452 fprintf(fp,"# command file=<%s>\n",global_resources->commandFile());
453 fprintf(fp,"# putlog file=<%s>\n",global_resources->putlogFile());
454+#ifdef WITH_CAPUTLOG
455+ fprintf(fp,"# caputlog address=<%s>\n",global_resources->caputlogAddress());
456+#endif
457 fprintf(fp,"# report file=<%s>\n",global_resources->reportFile());
458 fprintf(fp,"# debug level=%d\n",global_resources->debugLevel());
459 fprintf(fp,"# dead timeout=%ld\n",global_resources->deadTimeout());
460@@ -622,6 +635,22 @@
461 system("printenv | grep EPICS");
462 fflush(stdout); fflush(stderr);
463 #endif
464+ // start caPutLog in global_resources, if user defined a caPutLog ip:port address
465+#ifdef WITH_CAPUTLOG
466+ if (global_resources->hasCaPutlogAddress()) {
467+ int caputlog_status = global_resources->caPutLog_Init();
468+ if (caputlog_status != 0) {
469+ fprintf(stderr,"%s global_resources caPutLogInit failed, aborting\n",timeStamp());
470+ fflush(stdout);
471+ fflush(stderr);
472+ if (server) {
473+ delete server;
474+ server = NULL;
475+ }
476+ return 1;
477+ }
478+ }
479+#endif
480
481 // Start the gateServer
482 try {
483@@ -834,6 +863,18 @@
484 }
485 }
486 break;
487+#ifdef WITH_CAPUTLOG
488+ case PARM_CAPUTLOG:
489+ if(++i>=argc) no_error=0;
490+ else {
491+ if(argv[i][0]=='-') no_error=0;
492+ else {
493+ caputlog_address=argv[i];
494+ not_done=0;
495+ }
496+ }
497+ break;
498+#endif
499 case PARM_REPORT:
500 if(++i>=argc) no_error=0;
501 else {
502@@ -1062,6 +1103,9 @@
503 fprintf(stderr,"\tpvlist=%s\n",gr->listFile());
504 fprintf(stderr,"\tcommand=%s\n",gr->commandFile());
505 fprintf(stderr,"\tputlog=%s\n",gr->putlogFile());
506+#ifdef WITH_CAPUTLOG
507+ fprintf(stderr,"\tcaputlog=%s\n",gr->caputlogAddress());
508+#endif
509 fprintf(stderr,"\treport=%s\n",gr->reportFile());
510 fprintf(stderr,"\tdead=%ld\n",gr->deadTimeout());
511 fprintf(stderr,"\tconnect=%ld\n",gr->connectTimeout());
512@@ -1113,6 +1157,9 @@
513 if(pvlist_file) gr->setListFile(pvlist_file);
514 if(command_file) gr->setCommandFile(command_file);
515 if(putlog_file) gr->setPutlogFile(putlog_file);
516+#ifdef WITH_CAPUTLOG
517+ if(caputlog_address) gr->setCaPutlogAddress(caputlog_address);
518+#endif
519 if(report_file) gr->setReportFile(report_file);
520
521 //set caching and archive mode
522@@ -1263,6 +1310,9 @@
523 fprintf(stderr," list file = <%s>\n",gr->listFile());
524 fprintf(stderr," command file = <%s>\n",gr->commandFile());
525 fprintf(stderr," putlog file = <%s>\n",gr->putlogFile());
526+#ifdef WITH_CAPUTLOG
527+ fprintf(stderr," caputlog address = <%s>\n",gr->caputlogAddress());
528+#endif
529 fprintf(stderr," report file = <%s>\n",gr->reportFile());
530 fprintf(stderr," debug level = %d\n",gr->debugLevel());
531 fprintf(stderr," connect timeout = %ld\n",gr->connectTimeout());

Subscribers

People subscribed via source and target branches