cacao  Release 0.1.03-dev
Compute And Control For Adaptive Optics
CLIcore.h
Go to the documentation of this file.
1 
13 #ifndef _GNU_SOURCE
14 #define _GNU_SOURCE
15 #endif
16 
17 
18 
19 
20 #ifndef _CLICORE_H
21 #define _CLICORE_H
22 
23 
24 // include sem_timedwait
25 #ifndef _POSIX_C_SOURCE
26 #define _POSIX_C_SOURCE 200809L
27 #endif
28 
29 
30 #include <stdint.h>
31 #include <stdio.h>
32 #include <errno.h>
33 #include <unistd.h>
34 #include <stdlib.h>
35 #include <sys/types.h>
36 #include <unistd.h>
37 #include <semaphore.h>
38 #include <fftw3.h>
39 #include <gsl/gsl_rng.h> // for random numbers
40 #include <signal.h>
41 #include <string.h>
42 
43 
44 
45 
46 
47 
48 // define (custom) types for function return value
49 
50 #ifndef __STDC_LIB_EXT1__
51 typedef int errno_t;
52 #endif
53 
54 typedef long imageID;
55 typedef long variableID;
56 
57 #ifndef STANDALONE
60 #include "processtools.h"
61 #include "streamCTRL.h"
62 #include "function_parameters.h"
63 #endif
64 
65 
66 #define PI 3.14159265358979323846264338328
67 
69 #define SZ_CLICOREVARRAY 1000
70 
71 #define STRINGMAXLEN_DEFAULT 1000
72 #define STRINGMAXLEN_ERRORMSG 1000
73 #define STRINGMAXLEN_CLICMD 1000
74 #define STRINGMAXLEN_COMMAND 1000
75 #define STRINGMAXLEN_STREAMNAME 100
76 #define STRINGMAXLEN_IMGNAME 100
77 #define STRINGMAXLEN_FILENAME 200 // without directory, includes extension
78 #define STRINGMAXLEN_FULLFILENAME 1000 // includes directory name
79 #define STRINGMAXLEN_FUNCTIONNAME 200
80 #define STRINGMAXLEN_FUNCTIONARGS 1000
81 #define STRINGMAXLEN_SHMDIRNAME 200
82 
83 
84 
86 extern pid_t CLIPID; // command line interface PID
87 extern char DocDir[200]; // location of documentation
88 extern char SrcDir[200]; // location of source
89 extern char BuildFile[200]; // file name for source
90 extern char BuildDate[200];
91 extern char BuildTime[200];
92 
93 extern int C_ERRNO; // C errno (from errno.h)
94 
95 /* #define DEBUG */
96 #define CFITSEXIT printf("Program abnormally terminated, File \"%s\", line %d\n", __FILE__, __LINE__);exit(0)
97 
98 #ifdef DEBUG
99 #define nmalloc(f,type,n) f = (type*) malloc(sizeof(type)*n);if(f==NULL){printf("ERROR: pointer \"" #f "\" allocation failed\n");exit(0);}else{printf("\nMALLOC: \""#f "\" allocated\n");}
100 #define nfree(f) free(f);printf("\nMALLOC: \""#f"\" freed\n");
101 #else
102 #define nmalloc(f,type,n) f = (type*) malloc(sizeof(type)*n);if(f==NULL){printf("ERROR: pointer \"" #f "\" allocation failed\n");exit(0);}
103 #define nfree(f) free(f);
104 #endif
105 
106 #define TEST_ALLOC(f) if(f==NULL){printf("ERROR: pointer \"" #f "\" allocation failed\n");exit(0);}
107 
108 
109 #define NB_ARG_MAX 20
110 
111 
112 
113 
114 
115 //
116 // ************ lib module init **********************************
117 //
118 
121 #define INIT_MODULE_LIB(modname) \
122 static errno_t init_module_CLI(); /* forward declaration */ \
123 static int INITSTATUS_##modname = 0; \
124 void __attribute__ ((constructor)) libinit_##modname() \
125 { \
126 if ( INITSTATUS_##modname == 0 ) /* only run once */ \
127 { \
128 strcpy(data.moduleshortname_default, MODULE_SHORTNAME_DEFAULT); \
129 strcpy(data.modulename, (#modname)); \
130 init_module_CLI(); \
131 RegisterModule(__FILE__, MODULE_APPLICATION, MODULE_DESCRIPTION); \
132 INITSTATUS_##modname = 1; \
133 strcpy(data.modulename, ""); /* reset after use */ \
134 strcpy(data.moduleshortname_default, ""); /* reset after use */ \
135 strcpy(data.moduleshortname, ""); /* reset after use */ \
136 } \
137 } \
138 void __attribute__ ((destructor)) libclose_##modname() \
139 { \
140 if ( INITSTATUS_##modname == 1 ) \
141 { \
142 } \
143 }
144 
145 
146 
147 
148 
149 
150 
151 
152 //
153 // ************ ERROR HANDLING **********************************
154 //
155 
159 #ifndef STANDALONE
160 #define PRINT_ERROR(...) do { \
161 sprintf(data.testpoint_msg, __VA_ARGS__); \
162 printf("ERROR: %c[%d;%dm %s %c[%d;m\n", (char) 27, 1, 31, data.testpoint_msg, (char) 27, 0); \
163 sprintf(data.testpoint_file, "%s", __FILE__); \
164 sprintf(data.testpoint_func, "%s", __func__); \
165 data.testpoint_line = __LINE__; \
166 clock_gettime(CLOCK_REALTIME, &data.testpoint_time); \
167 } while(0)
168 #else
169 #define PRINT_ERROR(...) printf("ERROR: %c[%d;%dm %s %c[%d;m\n", (char) 27, 1, 31, __VA_ARGS__, (char) 27, 0)
170 #endif
171 
172 
173 
178 #define PRINT_WARNING(...) do { \
179 char warnmessage[1000]; \
180 sprintf(warnmessage, __VA_ARGS__); \
181 fprintf(stderr, \
182 "%c[%d;%dm WARNING [ FILE: %s FUNCTION: %s LINE: %d ] %c[%d;m\n", \
183 (char) 27, 1, 35, __FILE__, __func__, __LINE__, (char) 27, 0); \
184 if(C_ERRNO != 0) \
185 { \
186 char buff[256]; \
187 if( strerror_r( errno, buff, 256 ) == 0 ) { \
188 fprintf(stderr,"C Error: %s\n", buff ); \
189 } else { \
190 fprintf(stderr,"Unknown C Error\n"); \
191 } \
192 } else { \
193 fprintf(stderr,"No C error (errno = 0)\n"); } \
194 fprintf(stderr, "%c[%d;%dm ", (char) 27, 1, 35); \
195 fprintf(stderr, "%s", warnmessage); \
196 fprintf(stderr, " %c[%d;m\n", (char) 27, 0); \
197 C_ERRNO = 0; \
198 } while(0)
199 
200 
201 
202 
207 #if defined NDEBUG || defined STANDALONE
208 #define DEBUG_TRACEPOINT(...)
209 #else
210 #define DEBUG_TRACEPOINT(...) do { \
211 sprintf(data.testpoint_file, "%s", __FILE__); \
212 sprintf(data.testpoint_func, "%s", __func__); \
213 data.testpoint_line = __LINE__; \
214 clock_gettime(CLOCK_REALTIME, &data.testpoint_time); \
215 sprintf(data.testpoint_msg, __VA_ARGS__); \
216 } while(0)
217 #endif
218 
219 
224 #if defined NDEBUG || defined STANDALONE
225 #define DEBUG_TRACEPOINTLOG(...)
226 #else
227 #define DEBUG_TRACEPOINTLOG(...) do { \
228 sprintf(data.testpoint_file, "%s", __FILE__); \
229 sprintf(data.testpoint_func, "%s", __func__); \
230 data.testpoint_line = __LINE__; \
231 clock_gettime(CLOCK_REALTIME, &data.testpoint_time); \
232 sprintf(data.testpoint_msg, __VA_ARGS__); \
233 write_process_log(); \
234 } while(0)
235 #endif
236 
237 
238 
239 //
240 // ************ ERROR-CHECKING FUNCTIONS **********************************
241 //
242 
243 
244 
245 
251 #define EXECUTE_SYSTEM_COMMAND(...) do { \
252 char syscommandstring[STRINGMAXLEN_COMMAND]; \
253 int slen = snprintf(syscommandstring, STRINGMAXLEN_COMMAND, __VA_ARGS__); \
254 if(slen<1) { \
255  PRINT_ERROR("snprintf wrote <1 char"); \
256  abort(); \
257 } \
258 if(slen >= STRINGMAXLEN_COMMAND) { \
259  PRINT_ERROR("snprintf string truncation"); \
260  abort(); \
261 } \
262 if(system(syscommandstring) != 0) { \
263  PRINT_ERROR("system() returns non-zero value\ncommand \"%s\" failed", syscommandstring); \
264 } \
265 } while(0)
266 
267 
268 
274 #define SNPRINTF_CHECK(string, maxlen, ...) do { \
275 int slen = snprintf(string, maxlen, __VA_ARGS__); \
276 if(slen<1) { \
277  PRINT_ERROR("snprintf wrote <1 char"); \
278  abort(); \
279 } \
280 if(slen >= maxlen) { \
281  PRINT_ERROR("snprintf string truncation"); \
282  abort(); \
283 } \
284 } while(0)
285 
286 
287 
304 #define WRITE_IMAGENAME(imname, ...) do { \
305 int slen = snprintf(imname, STRINGMAXLEN_IMGNAME, __VA_ARGS__); \
306 if(slen<1) { \
307  PRINT_ERROR("snprintf wrote <1 char"); \
308  abort(); \
309 } \
310 if(slen >= STRINGMAXLEN_IMGNAME) { \
311  PRINT_ERROR("snprintf string truncation"); \
312  abort(); \
313 } \
314 } while(0)
315 
316 
317 
332 #define WRITE_FILENAME(fname, ...) do { \
333 int slen = snprintf(fname, STRINGMAXLEN_FILENAME, __VA_ARGS__); \
334 if(slen<1) { \
335  PRINT_ERROR("snprintf wrote <1 char"); \
336  abort(); \
337 } \
338 if(slen >= STRINGMAXLEN_FILENAME) { \
339  PRINT_ERROR("snprintf string truncation"); \
340  abort(); \
341 } \
342 } while(0)
343 
344 
345 
346 
362 #define WRITE_FULLFILENAME(ffname, ...) do { \
363 int slen = snprintf(ffname, STRINGMAXLEN_FULLFILENAME, __VA_ARGS__); \
364 if(slen<1) { \
365  PRINT_ERROR("snprintf wrote <1 char"); \
366  abort(); \
367 } \
368 if(slen >= STRINGMAXLEN_FULLFILENAME) { \
369  PRINT_ERROR("snprintf string truncation"); \
370  abort(); \
371 } \
372 } while(0)
373 
374 
375 
376 
390 #define WRITE_STRING_TO_FILE(fname, ...) do { \
391 FILE *fptmp; \
392 fptmp = fopen(fname, "w"); \
393 if (fptmp == NULL) { \
394 int errnum = errno; \
395 PRINT_ERROR("fopen() returns NULL"); \
396 fprintf(stderr, "Error opening file %s: %s\n", fname, strerror( errnum )); \
397 abort(); \
398 } else { \
399 fprintf(fptmp, __VA_ARGS__); \
400 fclose(fptmp); \
401 } \
402 } while(0)
403 
404 
405 
406 
407 
408 
409 
410 
411 
412 
413 // *************************** FUNCTION RETURN VALUE *********************************************
414 // For function returning type errno_t (= int)
415 //
416 #define RETURN_SUCCESS 0
417 #define RETURN_FAILURE 1 // generic error code
418 #define RETURN_MISSINGFILE 2
419 
420 
421 #define MAX_NB_FRAMENAME_CHAR 500
422 #define MAX_NB_EXCLUSIONS 40
423 
424 #ifndef STANDALONE
425 
426 
427 
428 // testing argument type for command line interface
429 #define CLIARG_FLOAT 1 // floating point number
430 #define CLIARG_LONG 2 // integer (int or long)
431 #define CLIARG_STR_NOT_IMG 3 // string, not existing image
432 #define CLIARG_IMG 4 // existing image
433 #define CLIARG_STR 5 // string
434 
435 #define CLICMD_SUCCESS 0
436 #define CLICMD_INVALID_ARG 1
437 #define CLICMD_ERROR 2
438 
439 
440 // declare a boolean type "BOOL"
441 // TRUE and FALSE improve code readability
442 //
443 typedef uint_fast8_t BOOL;
444 #define FALSE 0
445 #define TRUE 1
446 
447 
448 
449 
450 #define DATA_NB_MAX_COMMAND 1000
451 #define DATA_NB_MAX_MODULE 100
452 
453 // In STATIC allocation mode, IMAGE and VARIABLE arrays are allocated statically
454 
455 //#define DATA_STATIC_ALLOC // comment if DYNAMIC
456 #define STATIC_NB_MAX_IMAGE 520
457 #define STATIC_NB_MAX_VARIABLE 5030
458 
459 
460 
461 //Need to install process with setuid. Then, so you aren't running privileged all the time do this:
462 extern uid_t euid_real;
463 extern uid_t euid_called;
464 extern uid_t suid;
465 
466 
467 
468 
469 
470 
471 
472 
473 
474 /*^-----------------------------------------------------------------------------
475 | commands available through the CLI
476 +-----------------------------------------------------------------------------*/
477 
478 
479 
480 typedef struct
481 {
482  char key[100]; // command keyword
483  char module[200]; // module name
484  char modulesrc[200]; // module source filename
485  errno_t (* fp)(); // command function pointer
486  char info[1000]; // short description/help
487  char syntax[1000]; // command syntax
488  char example[1000]; // command example
489  char Ccall[1000];
490 } CMD;
491 
492 
493 
494 typedef struct
495 {
496  char name[50]; // module name
497  char shortname[80]; // short name. If non-empty, access functions as <shortname>.<functionname>
498  char package[50]; // package to which module belongs
499  char info[1000]; // short description
500 } MODULE;
501 
502 
503 
504 
505 /* ---------------------------------------------------------- */
506 /* */
507 /* */
508 /* COMMAND LINE ARGs / TOKENS */
509 /* */
510 /* */
511 /* ---------------------------------------------------------- */
512 
513 
514 // The command line is parsed and
515 
516 // cmdargtoken type
517 // 0 : unsolved
518 // 1 : floating point (double precision)
519 // 2 : long
520 // 3 : string
521 // 4 : existing image
522 // 5 : command
523 typedef struct
524 {
525  int type;
526  union
527  {
528  double numf;
529  long numl;
530  char string[200];
531  } val;
532 } CMDARGTOKEN;
533 
534 
535 
536 int CLI_checkarg(int argnum, int argtype);
537 int CLI_checkarg_noerrmsg(int argnum, int argtype);
538 
539 
540 
541 
542 
543 
544 extern uint8_t TYPESIZE[32];
545 
546 
547 
548 
549 typedef struct
550 {
551  int used;
552  char name[80];
553  int type;
554  union
555  {
556  double f;
557  long l;
558  char s[80];
559  } value;
560  char comment[200];
561 } VARIABLE;
562 
563 
564 
565 
566 // THIS IS WHERE EVERYTHING THAT NEEDS TO BE WIDELY ACCESSIBLE GETS STORED
567 typedef struct
568 {
569  char package_name[100];
570  char package_version[100];
571  char configdir[100];
572  char sourcedir[100];
573 
574  char shmdir[100];
575  char shmsemdirname[100]; // same ad above with .s instead of /s
576 
577  struct sigaction sigact;
578  // signals toggle flags
588 
589 
590 
591 
592  // can be used to trace program execution for runtime profiling and debugging
594  char testpoint_file[STRINGMAXLEN_FILENAME];
595  char testpoint_func[STRINGMAXLEN_FUNCTIONNAME];
596  char testpoint_msg[STRINGMAXLEN_FUNCTIONARGS]; // function arguments
597  struct timespec testpoint_time;
598 
599 
600  int progStatus; // main program status
601  // 0: before automatic loading of shared objects
602  // 1: after automatic loading of shared objects
603 
604  uid_t ruid; // Real UID (= user launching process at startup)
605  uid_t euid; // Effective UID (= owner of executable at startup)
606  uid_t suid; // Saved UID (= owner of executable at startup)
607  // system permissions are set by euid
608  // at startup, euid = owner of executable (meant to be root)
609  // -> we first drop privileges by setting euid to ruid
610  // when root privileges needed, we set euid <- suid
611  // when reverting to user privileges : euid <- ruid
612 
613  int Debug;
614  int quiet;
615  int overwrite; // automatically overwrite FITS files
616  int rmSHMfile; // remove shared memory files upon delete
617  double INVRANDMAX;
618  gsl_rng *rndgen; // random number generator
619  int precision; // default precision: 0 for float, 1 for double
620 
621  // logging, process monitoring
623  int CLIlogON;
624  char CLIlogname[200];
625  int processinfo; // 1 if processes info is to be logged
626  int processinfoActive; // 1 is the process is currently logged
627  PROCESSINFO *pinfo; // pointer to process info structure
628 
629  // Command Line Interface (CLI) INPUT
630  int fifoON;
631  char processname[100];
632  char processname0[100];
634  char fifoname[100];
635  uint_fast16_t NBcmd;
636 
638  CMD cmd[1000];
639 
640  int parseerror; // 1 if error, 0 otherwise
641  long cmdNBarg; // number of arguments in last command line
642  CMDARGTOKEN cmdargtoken[NB_ARG_MAX];
643  long
644  cmdindex; // when command is found in command line, holds index of command
645  long calctmp_imindex; // used to create temporary images
646  int
647  CMDexecuted; // 0 if command has not been executed, 1 otherwise
648 
649 
650  // Modules
651  long NBmodule;
653  MODULE module[100];
654  char modulename[100];
655  char moduleshortname[80];
656  char moduleshortname_default[80];
657 
658  // FPS instegration
659  // these entries are set when CLI process enters FPS function
660  char FPS_name[FPS_NAME_STRMAXLEN]; // name of FPS if in use
661  uint32_t FPS_CMDCODE;
662  errno_t (*FPS_CONFfunc)();
663  errno_t (*FPS_RUNfunc)();
664 
665 
666  // shared memory default
668 
669  // Number of keyword per iamge default
671 
672  // images, variables
674 #ifdef DATA_STATIC_ALLOC
675  IMAGE image[STATIC_NB_MAX_IMAGE]; // image static allocation mode
676 #else
678 #endif
679 
681 #ifdef DATA_STATIC_ALLOC
682  VARIABLE
683  variable[STATIC_NB_MAX_VARIABLE]; // variable static allocation mode
684 #else
686 #endif
687 
688 
689 
690  float FLOATARRAY[1000]; // array to store temporary variables
691  double DOUBLEARRAY[1000]; // for convenience
692  char SAVEDIR[500];
693 
694  // status counter (used for profiling)
695  int status0;
696  int status1;
697 
698 } DATA;
699 
700 
701 extern DATA data;
702 
703 
704 
705 
707 
708 void sig_handler(int signo);
709 
711  const char *restrict FileName,
712  const char *restrict PackageName,
713  const char *restrict InfoString
714 );
715 
716 uint_fast16_t RegisterCLIcommand(
717  const char *restrict CLIkey,
718  const char *restrict CLImodulesrc,
719  errno_t (*CLIfptr)(),
720  const char *restrict CLIinfo,
721  const char *restrict CLIsyntax,
722  const char *restrict CLIexample,
723  const char *restrict CLICcall
724 );
725 
726 errno_t runCLItest(int argc, char *argv[], char *promptstring);
727 errno_t runCLI(int argc, char *argv[], char *promptstring);
728 
729 #endif // ifndef STANDALONE
730 
732 
733 #endif
#define STATIC_NB_MAX_IMAGE
Definition: CLIcore.h:456
int status0
Definition: CLIcore.h:695
#define FPS_NAME_STRMAXLEN
Definition: function_parameters.h:401
int NBKEWORD_DFT
Definition: CLIcore.h:670
Definition: CLIcore.h:567
long l
Definition: CLIcore.h:557
int precision
Definition: CLIcore.h:619
int CLI_checkarg(int argnum, int argtype)
Definition: CLIcore.c:3446
char SrcDir[200]
long variableID
Definition: CLIcore.h:55
long numl
Definition: CLIcore.h:529
Tools to help expose and control function parameters.
Function prototypes for ImageStreamIO.
int status1
Definition: CLIcore.h:696
long NB_MAX_VARIABLE
Definition: CLIcore.h:680
gsl_rng * rndgen
Definition: CLIcore.h:618
int signal_USR1
Definition: CLIcore.h:579
int C_ERRNO
Definition: CLIcore.c:165
double INVRANDMAX
Definition: CLIcore.h:617
uid_t suid
Definition: CLIcore.h:606
errno_t runCLI(int argc, char *argv[], char *promptstring)
Command Line Interface (CLI) main .
Definition: CLIcore.c:1661
int errno_t
Definition: CLIcore.h:51
errno_t runCLItest(int argc, char *argv[], char *promptstring)
errno_t set_signal_catch()
signal catching
Definition: CLIcore.c:265
uint_fast8_t BOOL
Definition: CLIcore.h:443
long NB_MAX_MODULE
Definition: CLIcore.h:652
#define STRINGMAXLEN_FUNCTIONNAME
Definition: CLIcore.h:79
Definition: CLIcore.h:480
IMAGE structure The IMAGE structure includes :
Definition: ImageStruct.h:330
errno_t RegisterModule(const char *restrict FileName, const char *restrict PackageName, const char *restrict InfoString)
Definition: CLIcore.c:1229
#define STRINGMAXLEN_FILENAME
Definition: CLIcore.h:77
uid_t euid
Definition: CLIcore.h:605
int processnameflag
Definition: CLIcore.h:633
int Debug
Definition: CLIcore.h:613
double numf
Definition: CLIcore.h:528
int type
Definition: CLIcore.h:553
long cmdindex
Definition: CLIcore.h:644
int signal_PIPE
Definition: CLIcore.h:587
int progStatus
Definition: CLIcore.h:600
#define NB_ARG_MAX
Definition: CLIcore.h:109
int type
Definition: CLIcore.h:525
int parseerror
Definition: CLIcore.h:640
int CLIlogON
Definition: CLIcore.h:623
char BuildTime[200]
int signal_BUS
Definition: CLIcore.h:585
int errno_t
Definition: AOloopControl_IOtools.h:20
Command line interface.
long calctmp_imindex
Definition: CLIcore.h:645
long imageID
Definition: CLIcore.h:54
int processinfo
Definition: CLIcore.h:625
VARIABLE * variable
Definition: CLIcore.h:685
errno_t write_process_log()
Write entry into debug log.
Definition: CLIcore.c:331
long NB_MAX_IMAGE
Definition: CLIcore.h:673
PROCESSINFO * pinfo
Definition: CLIcore.h:627
int signal_ABRT
Definition: CLIcore.h:584
long cmdNBarg
Definition: CLIcore.h:641
int CLIloopON
Definition: CLIcore.h:622
int signal_HUP
Definition: CLIcore.h:586
uint8_t TYPESIZE[32]
Definition: CLIcore.c:163
int CLI_checkarg_noerrmsg(int argnum, int argtype)
Definition: CLIcore.c:3455
Definition: CLIcore.h:549
int CMDexecuted
Definition: CLIcore.h:647
int processinfoActive
Definition: CLIcore.h:626
Image structure definition.
uid_t suid
Definition: processtools.h:65
uint32_t FPS_CMDCODE
Definition: CLIcore.h:661
uint_fast16_t NBcmd
Definition: CLIcore.h:635
IMAGE * image
Definition: CLIcore.h:677
int signal_TERM
Definition: CLIcore.h:581
uid_t euid_called
DATA data
int signal_SEGV
Definition: CLIcore.h:583
long NB_MAX_COMMAND
Definition: CLIcore.h:637
Definition: CLIcore.h:494
uid_t euid_real
int SHARED_DFT
Definition: CLIcore.h:667
uint_fast16_t RegisterCLIcommand(const char *restrict CLIkey, const char *restrict CLImodulesrc, errno_t(*CLIfptr)(), const char *restrict CLIinfo, const char *restrict CLIsyntax, const char *restrict CLIexample, const char *restrict CLICcall)
Definition: CLIcore.c:1288
char DocDir[200]
int signal_USR2
Definition: CLIcore.h:580
int rmSHMfile
Definition: CLIcore.h:616
double f
Definition: CLIcore.h:556
int signal_INT
Definition: CLIcore.h:582
void sig_handler(int signo)
Definition: CLIcore.c:468
long NBmodule
Definition: CLIcore.h:651
int quiet
Definition: CLIcore.h:614
#define STATIC_NB_MAX_VARIABLE
Definition: CLIcore.h:457
Data streams control panel.
pid_t CLIPID
important directories and info
Definition: CLIcore.c:160
#define STRINGMAXLEN_FUNCTIONARGS
Definition: CLIcore.h:80
int used
Definition: CLIcore.h:551
char BuildDate[200]
int overwrite
Definition: CLIcore.h:615
uid_t ruid
Definition: CLIcore.h:604
char BuildFile[200]
int testpoint_line
Definition: CLIcore.h:593
Definition: CLIcore.h:523
int fifoON
Definition: CLIcore.h:630