33 {
"blue",
"red",
"brown",
"black",
"orange",
"cyan",
"yellow",
"beige",
"DarkCyan",
34 "DarkOliveGreen",
"goldenrod",
"DeepPink"
60 f = fopen(confpath,
"w+");
62 printf(
"Cannot open configuration strip file.\n");
65 fprintf(f,
"#Equipment: >%s", field);
67 fprintf(f,
"menu: on\n");
68 fprintf(f,
"slider: on\n");
69 fprintf(f,
"type: gtk\n");
71 fprintf(f,
"minor_ticks: 12\n");
72 fprintf(f,
"major_ticks: 6\n");
74 fprintf(f,
"chart-interval: 1.000\n");
75 fprintf(f,
"chart-filter: 0.500\n");
76 fprintf(f,
"slider-interval: 0.200\n");
77 fprintf(f,
"slider-filter: 0.200\n");
85 f = fopen(confpath,
"a+");
87 printf(
"Cannot open configuration strip file.\n");
93 minval = maxval = val;
116 fprintf(f,
"begin: %s\n", field);
117 fprintf(f,
" filename: %s\n", datapath);
118 fprintf(f,
" fields: 2\n");
119 fprintf(f,
" pattern: %s\n", field);
120 fprintf(f,
" equation: $2\n");
122 fprintf(f,
" maximum: %6.2f\n", maxval);
123 fprintf(f,
" minimum: %6.2f\n", minval);
124 fprintf(f,
" id_char: 1\n");
125 fprintf(f,
"end: %s\n", field);
129 printf(
" unknown command \n");
139 HNDLE hKeyS, hSubKey;
146 for (
i = 0;
i < 128;
i++)
148 int len_eqpstr = strlen(eqpstr);
149 for (
i=0 ;
i<len_eqpstr;
i++)
150 eqpstr[
i] = tolower(eqpstr[
i]);
153 if (strncmp(eqpstr,
"equipment/", 10) == 0)
155 if (strncmp(eqpstr,
"/equipment/", 11) == 0) {
160 pslash = strchr(eqpstr,
'/');
161 pslash = strchr(pslash + 1,
'/');
163 pslash = strchr(pslash + 1,
'/');
165 strncpy(strtmp, eqpstr, pslash - eqpstr);
166 strcat(strtmp,
"/settings");
177 if (strstr(p,
element) == NULL)
181 *pname = (
char*)malloc(size);
193 if (strncmp(
key.
name,
"Names", 5) == 0) {
196 *pname = (
char*)malloc(size);
209 char *confpath,
char *datapath)
213 char *pspace, *pdata = NULL, *pname = NULL;
217 pdata = (
char*)malloc(size);
225 printf(
"%s : size:%d\n",
key.
name, size);
236 strcpy(field, (pname + (
i * esize)));
239 sprintf(field,
"%s",
key.
name);
241 sprintf(field,
"%s[%i]",
key.
name,
i);
245 while ((pspace = strstr(field,
" ")))
247 while ((pspace = strstr(field,
"%")))
262 fprintf(f,
"%s %f\n", field, *((
float *) (pdata + (
i *
key.
item_size))));
265 fprintf(f,
"%s %e\n", field, *((
double *) (pdata + (
i *
key.
item_size))));
271 printf(
"Field:%s Values:%f\n", field,
value);
292 fHandle = fopen(datapath,
"w+");
293 if (fHandle == NULL) {
294 printf(
"Cannot open config %s file.\n", confpath);
302 printf(
"Error: cannot get array for %s\n", eqpstr);
314 printf(
"Error: cannot get array for %s\n", eqpstr);
320 printf(
"Error: Equipment:%s not found\n", eqpstr);
337 char eqpstr[128] = {
'\0' };
340 char mchart_dir[128] = {
'\0' };
341 char mchart_data[128];
342 char mchart_conf[128+10];
351 if (getenv(
"MCHART_DIR")) {
352 strcpy(mchart_dir, getenv(
"MCHART_DIR"));
358 for (
int i = 1;
i < argc;
i++) {
359 if (argv[
i][0] ==
'-' && argv[
i][1] ==
'd')
361 else if (argv[
i][0] ==
'-' && argv[
i][1] ==
'c')
363 else if (argv[
i][0] ==
'-' && argv[
i][1] ==
's')
365 else if (argv[
i][0] ==
'-' && argv[
i][1] ==
'g' && argv[
i][2] ==
'g')
367 else if (argv[
i][0] ==
'-' && argv[
i][1] ==
'g' && argv[
i][2] ==
'h')
369 else if (argv[
i][0] ==
'-' && argv[
i][1] ==
'g')
371 else if (argv[
i][0] ==
'-' && argv[
i][1] ==
'k')
373 else if (argv[
i][0] ==
'-' && argv[
i][1] ==
'D')
375 else if (argv[
i][0] ==
'-') {
376 if (
i + 1 >= argc || (argv[
i + 1][0] ==
'-' && !isdigit(argv[
i + 1][1])))
378 if (strncmp(argv[
i],
"-u", 2) == 0)
380 else if (strncmp(argv[
i],
"-f", 2) == 0) {
382 pt = strstr(argv[++
i],
".conf");
385 strcpy(mchart_data, mchart_dir);
386 strcat(mchart_data, argv[
i]);
387 sprintf(mchart_conf,
"%s.conf", mchart_data);
388 }
else if (strncmp(argv[
i],
"-e", 2) == 0)
390 else if (strncmp(argv[
i],
"-h", 2) == 0)
392 else if (strncmp(argv[
i],
"-q", 2) == 0) {
393 if (argv[++
i][0] !=
'/')
395 strcat(eqpstr, argv[
i]);
397 }
else if (strncmp(argv[
i],
"-b", 2) == 0)
399 else if (strncmp(argv[
i],
"-t", 2) == 0)
403 printf(
"usage: mchart -u updates (5sec)\n");
404 printf(
" -f configuration or data file name\n");
405 printf(
" -q equipment\n");
406 printf(
" (override all) -b bot_limit -t top_limit (only with -q) \n");
407 printf(
" -c create config only \n");
408 printf(
" -k keep spawned stripchart or gstripchart\n");
410 (
" -g spawn Hofman stripchart or gstripchart if possible\n");
411 printf(
" -gg forces gstripchart spawning\n");
412 printf(
" -gh forces stripchart spawning\n");
413 printf(
" -D start as daemon (prevented if -c or -q)\n");
414 printf(
" requires $MCHART_DIR\n");
415 printf(
" [-h Hostname] [-e Experiment]\n\n");
416 printf(
"ex: Creation : mchart -e myexpt -h myhost -c \n");
417 printf(
" -f mydata -q /equipement/myeqp/variables\n");
418 printf(
" Running : mchart -e myexpt -h myhost -f mydata \n");
419 printf(
" Run/Graph : mchart -e myexpt -h myhost -f mydata -g\n");
420 printf(
" MCHART_DIR: environment variable for mchar directory\n\n");
427 printf(
"Becoming a daemon...\n");
432 printf(
"arg -D ignored due to creation request! \n");
452 sprintf(cmdline,
"%s ", argv[1]);
453 for (
int i = 2;
i < argc;
i++) {
454 strcat(cmdline,
" ");
455 strcat(cmdline, argv[
i]);
469 f = fopen(mchart_conf,
"r");
471 printf(
"Error: Cannot open %s\n", mchart_conf);
474 s = fgets(strtmp, 128, f);
476 printf(
"Error: Cannot read %s\n", mchart_conf);
479 if (strstr(strtmp,
"#Equipment")) {
480 peqp = strstr(strtmp,
">");
481 sprintf(eqpstr,
"%s", peqp + 1);
484 peqp = strstr(eqpstr,
"\n");
491 printf(
"unknown odb path under -q arg. (%s)\n", eqpstr);
506 printf(
"mchart file %s created\n", mchart_conf);
517 char strip[][32] = {
"/usr/local/bin",
"stripchart",
518 "/usr/bin",
"gstripchart",
519 "/home/midas/bin",
"stripchart",
520 "/usr/sbin",
"gstripchart",
521 "/home/chaos/bin",
"stripchart",
522 "/sbin",
"gstripchart",
527 while (strip[
i][0]) {
534 if (strip[
i][0] == 0) {
535 printf(
"No graphic package found in following dir:\n");
537 while (strip[
i][0]) {
538 printf(
"Package : %s/%s \n", strip[
i], strip[
i + 1]);
544 sprintf(command,
"gstripchart -g 500x200-200-800 -f %s", mchart_conf);
546 sprintf(command,
"stripchart %s", mchart_conf);
549 printf(
"Spawning graph with %s ...\nUse '!' to exit\n", command);
551 }
else if (
graph == 2) {
552 sprintf(command,
"gstripchart -g 500x200-200-800 -f %s", mchart_conf);
554 printf(
"Spawning graph with %s ...\nUse '!' to exit\n", command);
556 }
else if (
graph == 3) {
558 sprintf(command,
"stripchart -debug %s", mchart_conf);
560 printf(
"Spawning graph with %s ...in DEBUG mode \nUse '!' to exit\n",
562 sys_err = system(command);
563 printf(
"system error return %d \n", sys_err);
568 sprintf(command,
"stripchart %s", mchart_conf);
570 printf(
"Spawning graph with %s .... \nUse '!' to exit\n", command);
584 if ((
char) ch ==
'!')
INT cm_yield(INT millisec)
INT cm_get_experiment_database(HNDLE *hDB, HNDLE *hKeyClient)
INT cm_connect_experiment(const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *))
INT cm_disconnect_experiment(void)
INT cm_get_environment(char *host_name, int host_name_size, char *exp_name, int exp_name_size)
INT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout)
INT ss_getchar(BOOL reset)
INT ss_daemon_init(BOOL keep_stdout)
INT ss_exec(const char *command, INT *pid)
BOOL ss_existpid(INT pid)
INT ss_file_find(const char *path, const char *pattern, char **plist)
INT cm_set_msg_print(INT system_mask, INT user_mask, int(*func)(const char *))
INT db_get_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
INT db_get_key(HNDLE hDB, HNDLE hKey, KEY *key)
INT db_find_key(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
INT db_enum_key(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
char host_name[HOST_NAME_LENGTH]
INT conf_compose(INT action, char *confpath, char *datapath, char *field, float val)
INT mchart_get_names(HNDLE hDB, char *eqpstr, char *element, char **pname, INT *esize)
INT mchart_get_array(FILE *f, char *eqpstr, HNDLE hDB, HNDLE hSubkey, KEY key, char *confpath, char *datapath)
BOOL debug
debug printouts
INT mchart_compose(HNDLE hDB, char *confpath, char *datapath, char *eqpstr)
char expt_name[NAME_LENGTH]
#define DIR_SEPARATOR_STR
static te_expr * list(state *s)