#include "cms_user.hh"
#include "rcs_defs.hh"
Include dependency graph for cms_cfg.hh:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Defines | |
#define | CMS_CONFIG_LINELEN 200 |
#define | CMS_CONFIG_COMMENTCHAR '#' |
Functions | |
int RCS_EXPORT | cms_config (CMS **c, char *b, char *p, char *f, int set_to_server=0, int set_to_master=0) |
int RCS_EXPORT | cms_copy (CMS **dest, CMS *src, int set_to_server=0, int set_to_master=0) |
int | cms_create_from_lines (CMS **cms, char *buffer_line, char *proc_line, int set_to_server=0, int set_to_master=0) |
int | cms_create (CMS **cms, char *buf_line, char *proc_line, char *buffer_type, char *proc_type, int set_to_server=0, int set_to_master=0) |
int | load_nml_config_file (const char *file) |
int | unload_nml_config_file (const char *file) |
int | print_loaded_nml_config_file_list () |
int | unload_all_nml_config_files () |
char * | get_buffer_line (const char *buf, const char *file) |
int | hostname_matches_bufferline (char *bufline) |
|
Definition at line 20 of file cms_cfg.hh. |
|
Definition at line 23 of file cms_cfg.hh. |
|
Definition at line 628 of file cms_cfg.cc. Referenced by CMS_CONFIG_COMMENTCHAR(), NML::NML(), NML::reconstruct(), and NML::reset().
00630 { 00631 char *word[4]; /* array of pointers to words from line */ 00632 CONFIG_SEARCH_STRUCT search; 00633 char buf[CMS_CONFIG_LINELEN]; 00634 char buf2[CMS_CONFIG_LINELEN]; 00635 char *default_ptr = 0; 00636 00637 if (0 == bufname || 0 == procname || 0 == filename) 00638 { 00639 return -1; 00640 } 00641 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "cms_config arguments:\n"); 00642 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "bufname = %s\n", bufname); 00643 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "procname = %s\n", procname); 00644 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "filename = %s\n", filename); 00645 00646 search.error_type = CONFIG_SEARCH_ERROR_NOT_SET; 00647 search.bufline_found = 0; 00648 search.bufline_number = -1; 00649 search.procline_found = 0; 00650 search.procline_number = -1; 00651 search.bufname = bufname; 00652 search.bufname_for_procline = bufname; 00653 search.procname = procname; 00654 search.filename = filename; 00655 find_proc_and_buffer_lines (&search); 00656 if (NO_PROCESS_LINE == search.error_type) 00657 { 00658 search.bufname_for_procline = "default"; 00659 find_proc_and_buffer_lines (&search); 00660 if (search.error_type == CONFIG_SEARCH_OK) 00661 { 00662 default_ptr = 0; 00663 strncpy (buf, search.proc_line, CMS_CONFIG_LINELEN); 00664 default_ptr = strstr (buf, "default"); 00665 if (default_ptr) 00666 { 00667 strcpy (buf2, default_ptr + 7); 00668 strcpy (default_ptr, bufname); 00669 default_ptr += strlen (bufname); 00670 strcpy (default_ptr, buf2); 00671 strncpy (search.proc_line, buf, CMS_CONFIG_LINELEN); 00672 } 00673 strcat (search.proc_line, " defaultbuf"); 00674 } 00675 } 00676 if (NO_PROCESS_LINE == search.error_type) 00677 { 00678 search.bufname_for_procline = "default"; 00679 search.procname = "default"; 00680 find_proc_and_buffer_lines (&search); 00681 if (search.error_type == CONFIG_SEARCH_OK) 00682 { 00683 strncpy (buf, search.proc_line, CMS_CONFIG_LINELEN); 00684 default_ptr = strstr (buf, "default"); 00685 if (default_ptr) 00686 { 00687 strcpy (buf2, default_ptr + 7); 00688 strcpy (default_ptr, procname); 00689 default_ptr += strlen (procname); 00690 strcpy (default_ptr, buf2); 00691 default_ptr = strstr (buf, "default"); 00692 } 00693 if (default_ptr) 00694 { 00695 strcpy (buf2, default_ptr + 7); 00696 strcpy (default_ptr, bufname); 00697 default_ptr += strlen (bufname); 00698 strcpy (default_ptr, buf2); 00699 strncpy (search.proc_line, buf, CMS_CONFIG_LINELEN); 00700 } 00701 strcat (search.proc_line, " defaultproc defaultbuf"); 00702 } 00703 } 00704 if (CONFIG_SEARCH_OK == search.error_type) 00705 { 00706 return (cms_create (cms, search.buffer_line, search.proc_line, 00707 search.buffer_type, search.proc_type, 00708 set_to_server, set_to_master)); 00709 } 00710 switch (search.error_type) 00711 { 00712 case NO_BUFFER_LINE: 00713 rcs_print_error 00714 ("No buffer-line entry found for buffer %s in config file %s.\n", 00715 bufname, filename); 00716 break; 00717 00718 case NO_PROCESS_LINE: 00719 rcs_print_error 00720 ("No process-line entry found for process %s connecting to buffer %s in config file %s and no applicable defaults were found.\n", 00721 procname, bufname, filename); 00722 break; 00723 00724 default: 00725 break; 00726 } 00727 00728 00729 return (-1); 00730 } |
|
Definition at line 441 of file cms_cfg.cc. Referenced by CMS_CONFIG_COMMENTCHAR(), NML::NML(), and NML::reset().
00442 { 00443 if (NULL == dest || NULL == src) 00444 { 00445 return -1; 00446 } 00447 return cms_create_from_lines (dest, src->BufferLine, src->ProcessLine, 00448 set_to_server, set_to_master); 00449 } |
|
Definition at line 1094 of file cms_cfg.cc. Referenced by CMS_CONFIG_COMMENTCHAR(), NML::NML(), and cms_copy().
01096 { 01097 char proc_type[CMS_CONFIG_LINELEN]; 01098 char buffer_type[CMS_CONFIG_LINELEN]; 01099 char *word[4]; /* array of pointers to words from line */ 01100 01101 if (4 != separate_words (word, 4, proc_line)) 01102 { 01103 rcs_print_error ("cms_config: invalid proc_line=(%s)\n", proc_line); 01104 return -1; 01105 } 01106 01107 convert2upper (proc_type, word[3], CMS_CONFIG_LINELEN); 01108 01109 if (4 != separate_words (word, 4, buffer_line)) 01110 { 01111 rcs_print_error ("cms_config: invalid buffer_line=(%s)\n", buffer_line); 01112 return -1; 01113 } 01114 01115 convert2upper (buffer_type, word[2], CMS_CONFIG_LINELEN); 01116 01117 return (cms_create (cms, buffer_line, proc_line, 01118 buffer_type, proc_type, set_to_server, set_to_master)); 01119 } |
|
Definition at line 1122 of file cms_cfg.cc. Referenced by CMS_CONFIG_COMMENTCHAR(), cms_config(), and cms_create_from_lines().
01125 { 01126 if (NULL == cms || NULL == buffer_line || NULL == proc_line || 01127 NULL == buffer_type || NULL == proc_type) 01128 { 01129 rcs_print_error ("cms_create passed NULL argument.\n"); 01130 return -1; 01131 } 01132 01133 /* Both lines have been found, select the appropriate class from */ 01134 /* CMS's derived classes and call its constructor. */ 01135 if (!strcmp (buffer_type, "PHANTOM") || !strcmp (proc_type, "PHANTOM")) 01136 { 01137 *cms = new PHANTOMMEM (buffer_line, proc_line); 01138 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "%X = new PHANTOMEM(%s,%s)\n", 01139 *cms, buffer_line, proc_line); 01140 if (NULL == *cms) 01141 { 01142 if (verbose_nml_error_messages) 01143 { 01144 rcs_print_error 01145 ("cms_config: Can't create PHANTOMMEM object.\n"); 01146 } 01147 return (-1); 01148 } 01149 else 01150 { 01151 return (0); 01152 } 01153 } 01154 if (!strcmp (proc_type, "REMOTE")) 01155 { 01156 if (NULL != strstr (proc_line, "serialPortDevName=")) 01157 { 01158 #if !defined(VXWORKS) && (!defined(__MSDOS__) || defined(WIN32)) && !defined(UNDER_CE) && !defined(DARWIN) && !defined(qnx) 01159 *cms = new TTYMEM (buffer_line, proc_line); 01160 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "%X = new TTYMEM(%s,%s)\n", 01161 *cms, buffer_line, proc_line); 01162 if (NULL == *cms) 01163 { 01164 if (verbose_nml_error_messages) 01165 { 01166 rcs_print_error 01167 ("cms_config: Can't create new TTYMEM object.\n"); 01168 } 01169 return (-1); 01170 } 01171 else if ((*cms)->status < 0) 01172 { 01173 if (verbose_nml_error_messages) 01174 { 01175 rcs_print_error 01176 ("cms_config: Error %d(%s) occured during TTYMEM create.\n", 01177 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01178 } 01179 return (-1); 01180 } 01181 #else 01182 rcs_print_error ("TTYMEM not supported on this platform.\n"); 01183 return (-1); 01184 #endif 01185 } 01186 else if (NULL != strstr (buffer_line, "STCP=")) 01187 { 01188 #ifndef UNDER_CE 01189 *cms = new STCPMEM (buffer_line, proc_line); 01190 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "%X = new STCPMEM(%s,%s)\n", 01191 *cms, buffer_line, proc_line); 01192 if (NULL == *cms) 01193 { 01194 if (verbose_nml_error_messages) 01195 { 01196 rcs_print_error 01197 ("cms_config: Can't create new STPCMEM object.\n"); 01198 } 01199 return (-1); 01200 } 01201 else if ((*cms)->status < 0) 01202 { 01203 if (verbose_nml_error_messages) 01204 { 01205 rcs_print_error 01206 ("cms_config: Error %d(%s) occured during STPCMEM create.\n", 01207 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01208 } 01209 return (-1); 01210 } 01211 #else 01212 rcs_print_error ("STCPMEM not supported in Windows CE.\n"); 01213 return (-1); 01214 #endif 01215 } 01216 else if (NULL != strstr (buffer_line, "TCP=")) 01217 { 01218 *cms = new TCPMEM (buffer_line, proc_line); 01219 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "%X = new TCPMEM(%s,%s)\n", 01220 *cms, buffer_line, proc_line); 01221 if (NULL == *cms) 01222 { 01223 if (verbose_nml_error_messages) 01224 { 01225 rcs_print_error 01226 ("cms_config: Can't create new TPCMEM object.\n"); 01227 } 01228 return (-1); 01229 } 01230 else if ((*cms)->status < 0) 01231 { 01232 if (verbose_nml_error_messages) 01233 { 01234 rcs_print_error 01235 ("cms_config: Error %d(%s) occured during TPCMEM create.\n", 01236 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01237 } 01238 return (-1); 01239 } 01240 } 01241 else if (NULL != strstr (buffer_line, "UDP=")) 01242 { 01243 *cms = new UDPMEM (buffer_line, proc_line); 01244 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "%X = new UDPMEM(%s,%s)\n", 01245 *cms, buffer_line, proc_line); 01246 if (NULL == *cms) 01247 { 01248 if (verbose_nml_error_messages) 01249 { 01250 rcs_print_error 01251 ("cms_config: Can't create new UDPMEM object.\n"); 01252 } 01253 return (-1); 01254 } 01255 else if ((*cms)->status < 0) 01256 { 01257 if (verbose_nml_error_messages) 01258 { 01259 rcs_print_error 01260 ("cms_config: Error %d(%s) occured during UDPMEM create.\n", 01261 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01262 } 01263 return (-1); 01264 } 01265 return (0); 01266 } 01267 else 01268 { 01269 #ifndef NO_DCE_RPC 01270 *cms = new RPCMEM (buffer_line, proc_line); 01271 rcs_print_debug (PRINT_CMS_CONFIG_INFO, "%X = new RPCMEM(%s,%s)\n", 01272 *cms, buffer_line, proc_line); 01273 if (NULL == *cms) 01274 { 01275 if (verbose_nml_error_messages) 01276 { 01277 rcs_print_error 01278 ("cms_config: Can't create new RPCMEM object.\n"); 01279 } 01280 return (-1); 01281 } 01282 else if ((*cms)->status < 0) 01283 { 01284 if (verbose_nml_error_messages) 01285 { 01286 rcs_print_error 01287 ("cms_config: %d: %s Error occured during RPCMEM create.\n", 01288 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01289 } 01290 return (-1); 01291 } 01292 #else 01293 rcs_print_error ("No remote connection configured.\n"); 01294 return (-1); 01295 #endif 01296 } 01297 } 01298 else if (!strcmp (proc_type, "LOCAL")) 01299 { 01300 #if defined(VXWORKS) || defined(USE_BIT3) || defined(LINUX_VME) 01301 if (!strcmp (buffer_type, "GLOBMEM")) 01302 { 01303 *cms = new GLOBMEM (buffer_line, proc_line, set_to_server, 01304 set_to_master); 01305 rcs_print_debug (PRINT_CMS_CONFIG_INFO, 01306 "%X = new GLOBMEM(%s,%s,%d,%d)\n", *cms, 01307 buffer_line, proc_line, set_to_server, 01308 set_to_master); 01309 if (NULL == *cms) 01310 { 01311 if (verbose_nml_error_messages) 01312 { 01313 rcs_print_error 01314 ("cms_config: Can't create new GLOBMEM object.\n"); 01315 } 01316 return (-1); 01317 } 01318 else if ((*cms)->status < 0) 01319 { 01320 if (verbose_nml_error_messages) 01321 { 01322 rcs_print_error 01323 ("cms_config: %d(%s) Error occured during GLOBMEM create.\n", 01324 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01325 } 01326 return (-1); 01327 } 01328 else 01329 { 01330 return (0); 01331 } 01332 } 01333 #endif 01334 #ifdef VXWORKS 01335 if (!strcmp (buffer_type, "BBDMEM")) 01336 { 01337 *cms = new BBDMEM (buffer_line, proc_line, set_to_server, 01338 set_to_master); 01339 rcs_print_debug (PRINT_CMS_CONFIG_INFO, 01340 "%X = new BBDMEM(%s,%s,%d,%d)\n", *cms, 01341 buffer_line, proc_line, set_to_server, 01342 set_to_master); 01343 if (NULL == *cms) 01344 { 01345 if (verbose_nml_error_messages) 01346 { 01347 rcs_print_error 01348 ("cms_config: Can't create new BBDMEM object.\n"); 01349 } 01350 return (-1); 01351 } 01352 else if ((*cms)->status < 0) 01353 { 01354 if (verbose_nml_error_messages) 01355 { 01356 rcs_print_error 01357 ("cms_config: %d(%s) Error occured during BBDMEM create.\n", 01358 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01359 } 01360 return (-1); 01361 } 01362 else 01363 { 01364 return (0); 01365 } 01366 } 01367 #endif 01368 #if !defined(__MSDOS__) || defined(WIN32) 01369 if (!strcmp (buffer_type, "SHMEM")) 01370 { 01371 *cms = new SHMEM (buffer_line, proc_line, set_to_server, 01372 set_to_master); 01373 rcs_print_debug (PRINT_CMS_CONFIG_INFO, 01374 "%X = new SHMEM(%s,%s,%d,%d)\n", *cms, buffer_line, 01375 proc_line, set_to_server, set_to_master); 01376 if (NULL == *cms) 01377 { 01378 if (verbose_nml_error_messages) 01379 { 01380 rcs_print_error 01381 ("cms_config: Can't create new SHMEM object.\n"); 01382 } 01383 return (-1); 01384 } 01385 else if ((*cms)->status < 0) 01386 { 01387 if (verbose_nml_error_messages) 01388 { 01389 rcs_print_error 01390 ("cms_config: %d(%s) Error occured during SHMEM create.\n", 01391 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01392 } 01393 return (-1); 01394 } 01395 else 01396 { 01397 return (0); 01398 } 01399 } 01400 #endif /* !__MSDOS__ */ 01401 #ifdef LINUX 01402 #if defined(HAVE_RTL) || defined(linux_rtai) 01403 #ifndef linux_2_0_36 01404 if (!strcmp (buffer_type, "RTLMEM")) 01405 { 01406 *cms = new RTLMEM (buffer_line, proc_line, set_to_server, 01407 set_to_master); 01408 rcs_print_debug (PRINT_CMS_CONFIG_INFO, 01409 "%X = new RTLMEM(%s,%s,%d,%d)\n", *cms, 01410 buffer_line, proc_line, set_to_server, 01411 set_to_master); 01412 if (NULL == *cms) 01413 { 01414 if (verbose_nml_error_messages) 01415 { 01416 rcs_print_error 01417 ("cms_config: Can't create new RTLMEM object.\n"); 01418 } 01419 return (-1); 01420 } 01421 else if ((*cms)->status < 0) 01422 { 01423 if (verbose_nml_error_messages) 01424 { 01425 rcs_print_error 01426 ("cms_config: %d(%s) Error occured during RTLMEM create.\n", 01427 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01428 } 01429 return (-1); 01430 } 01431 else 01432 { 01433 return (0); 01434 } 01435 } 01436 #endif 01437 #endif 01438 #endif 01439 if (!strcmp (buffer_type, "LOCMEM")) 01440 { 01441 *cms = 01442 new LOCMEM (buffer_line, proc_line, set_to_server, set_to_master); 01443 rcs_print_debug (PRINT_CMS_CONFIG_INFO, 01444 "%X = new LOCMEM(%s,%s,%d,%d)\n", *cms, 01445 buffer_line, proc_line, set_to_server, 01446 set_to_master); 01447 if (NULL == *cms) 01448 { 01449 if (verbose_nml_error_messages) 01450 { 01451 rcs_print_error 01452 ("cms_config: Can't create new LOCMEM object.\n"); 01453 } 01454 return (-1); 01455 } 01456 if ((*cms)->status < 0) 01457 { 01458 if (verbose_nml_error_messages) 01459 { 01460 rcs_print_error 01461 ("cms_config: %d(%s) Error occured during LOCMEM create.\n", 01462 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01463 } 01464 return (-1); 01465 } 01466 return (0); 01467 } 01468 #if 0 01469 if (!strcmp (buffer_type, "FILEMEM")) 01470 { 01471 *cms = 01472 new FILEMEM (buffer_line, proc_line, set_to_server, 01473 set_to_master); 01474 rcs_print_debug (PRINT_CMS_CONFIG_INFO, 01475 "%X = new FILMEM(%s,%s,%d,%d)\n", *cms, 01476 buffer_line, proc_line, set_to_server, 01477 set_to_master); 01478 if (NULL == *cms) 01479 { 01480 if (verbose_nml_error_messages) 01481 { 01482 rcs_print_error 01483 ("cms_config: Can't create new FILEMEM object.\n"); 01484 } 01485 return (-1); 01486 } 01487 if ((*cms)->status < 0) 01488 { 01489 if (verbose_nml_error_messages) 01490 { 01491 rcs_print_error 01492 ("cms_config: %d(%s) Error occured during FILEMEM create.\n", 01493 (*cms)->status, (*cms)->status_string ((*cms)->status)); 01494 } 01495 return (-1); 01496 } 01497 return (0); 01498 } 01499 #endif 01500 rcs_print_error ("cms_config: invalid buffer_type (%s)\n", buffer_type); 01501 rcs_print_error ("cms_config: buffer_line = (%s)\n", buffer_line); 01502 return (-1); 01503 } 01504 else 01505 { 01506 rcs_print_error ("cms_config: invalid proc_type (%s)\n", proc_type); 01507 rcs_print_error ("cms_config: proc_line = (%s)\n", proc_line); 01508 return (-1); 01509 } 01510 return (0); 01511 } |
|
Definition at line 122 of file cms_cfg.cc. Referenced by CMS_CONFIG_COMMENTCHAR().
00123 { 00124 unload_nml_config_file (file); 00125 if (loading_config_file) 00126 { 00127 return -1; 00128 } 00129 loading_config_file = 1; 00130 if (NULL == file) 00131 { 00132 loading_config_file = 0; 00133 return -1; 00134 } 00135 if (NULL == config_file_list) 00136 { 00137 config_file_list = new RCS_LINKED_LIST (); 00138 } 00139 if (NULL == config_file_list) 00140 { 00141 loading_config_file = 0; 00142 return -1; 00143 } 00144 char line[CMS_CONFIG_LINELEN]; /* Temporary buffer for line from file. */ 00145 00146 CONFIG_FILE_INFO *info = new CONFIG_FILE_INFO (); 00147 info->lines_list = new RCS_LINKED_LIST (); 00148 strncpy (info->file_name, file, 80); 00149 #ifdef CMS_USE_INET_FILES 00150 INET_FILE *fp; 00151 fp = inet_file_open ((char *) file, "r"); 00152 #else 00153 FILE *fp; 00154 fp = fopen (file, "r"); 00155 #endif 00156 if (fp == NULL) 00157 { 00158 #ifndef UNDER_CE 00159 rcs_print_error ("cms_config: can't open '%s'. Error = %d -- %s\n", 00160 file, errno, strerror (errno)); 00161 #else 00162 rcs_print_error ("cms_config: can't open '%s'.\n", file); 00163 #endif 00164 if (NULL != info) 00165 { 00166 delete info; 00167 } 00168 loading_config_file = 0; 00169 return -1; 00170 } 00171 00172 #ifdef CMS_USE_INET_FILES 00173 while (!inet_file_eof (fp)) 00174 #else 00175 while (!feof (fp)) 00176 #endif 00177 { 00178 #ifdef CMS_USE_INET_FILES 00179 if ((inet_file_gets (line, CMS_CONFIG_LINELEN, fp)) == NULL) 00180 { 00181 break; 00182 } 00183 #else 00184 if ((fgets (line, CMS_CONFIG_LINELEN, fp)) == NULL) 00185 { 00186 break; 00187 } 00188 #endif 00189 int linelen = strlen (line); 00190 if (linelen < 3) 00191 { 00192 continue; 00193 } 00194 while (line[linelen - 1] == '\\') 00195 { 00196 int pos = linelen - 2; 00197 #ifdef CMS_USE_INET_FILES 00198 if ((inet_file_gets (line + pos, CMS_CONFIG_LINELEN - pos, fp)) == 00199 NULL) 00200 { 00201 break; 00202 } 00203 #else 00204 if ((fgets (line + pos, CMS_CONFIG_LINELEN - pos, fp)) == NULL) 00205 { 00206 break; 00207 } 00208 #endif 00209 linelen = strlen (line); 00210 if (linelen > CMS_CONFIG_LINELEN - 2) 00211 { 00212 break; 00213 } 00214 } 00215 00216 if (line[0] == '#') 00217 { 00218 continue; 00219 } 00220 info->lines_list->store_at_tail (line, linelen + 1, 1); 00221 } 00222 00223 if (NULL != fp) 00224 { 00225 #ifdef CMS_USE_INET_FILES 00226 inet_file_close (fp); 00227 #else 00228 fclose (fp); 00229 #endif 00230 fp = NULL; 00231 } 00232 config_file_list->store_at_tail (info, sizeof (info), 0); 00233 loading_config_file = 0; 00234 return 0; 00235 } |
|
Definition at line 238 of file cms_cfg.cc. Referenced by CMS_CONFIG_COMMENTCHAR(), and load_nml_config_file().
00239 { 00240 if (loading_config_file) 00241 { 00242 return -1; 00243 } 00244 if (NULL == file) 00245 { 00246 return -1; 00247 } 00248 if (NULL == config_file_list) 00249 { 00250 return -1; 00251 } 00252 CONFIG_FILE_INFO *info = (CONFIG_FILE_INFO *) config_file_list->get_head (); 00253 while (NULL != info) 00254 { 00255 if (!strncmp (info->file_name, file, 80)) 00256 { 00257 config_file_list->delete_current_node (); 00258 delete info; 00259 return 0; 00260 } 00261 info = (CONFIG_FILE_INFO *) config_file_list->get_next (); 00262 } 00263 return -1; 00264 } |
|
Definition at line 324 of file cms_cfg.cc. 00325 { 00326 if (loading_config_file) 00327 { 00328 rcs_print 00329 ("In the process of loading a config file, please try again later.\n"); 00330 return -1; 00331 } 00332 if (NULL == config_file_list) 00333 { 00334 rcs_print ("No Configuration files loaded.\n"); 00335 return 0; 00336 } 00337 CONFIG_FILE_INFO *info = (CONFIG_FILE_INFO *) config_file_list->get_head (); 00338 while (NULL != info) 00339 { 00340 if (NULL != info->lines_list) 00341 { 00342 rcs_print ("%s \t- - \t%d lines\n", info->file_name, 00343 info->lines_list->list_size); 00344 } 00345 else 00346 { 00347 rcs_print ("%s \t-1 lines", info->file_name); 00348 } 00349 info = (CONFIG_FILE_INFO *) config_file_list->get_next (); 00350 } 00351 return 0; 00352 } |
|
Referenced by CMS_CONFIG_COMMENTCHAR().
|
|
Definition at line 453 of file cms_cfg.cc. Referenced by CMS_CONFIG_COMMENTCHAR().
00454 { 00455 int line_len, line_number; 00456 char linebuf[CMS_CONFIG_LINELEN]; /* Temporary buffer for line from file. */ 00457 char *line = linebuf; 00458 #ifdef CMS_USE_INET_FILES 00459 INET_FILE *fp = NULL; 00460 #else 00461 FILE *fp = NULL; /* FILE ptr to config file. */ 00462 #endif 00463 char *word[4]; /* array of pointers to words from line */ 00464 00465 00466 /* Open the configuration file. */ 00467 RCS_LINKED_LIST *lines_list = NULL; 00468 CONFIG_FILE_INFO *info = get_loaded_nml_config_file (filename); 00469 if (NULL != info) 00470 { 00471 lines_list = info->lines_list; 00472 line = (char *) lines_list->get_head (); 00473 } 00474 00475 if (NULL == lines_list) 00476 { 00477 #ifdef CMS_USE_INET_FILES 00478 fp = inet_file_open (filename, "r"); 00479 #else 00480 fp = fopen (filename, "r"); 00481 #endif 00482 if (fp == NULL) 00483 { 00484 #ifndef UNDER_CE 00485 rcs_print_error ("cms_config: can't open '%s'. Error = %d -- %s\n", 00486 filename, errno, strerror (errno)); 00487 #else 00488 rcs_print_error ("cms_config: can't open '%s'.\n", filename); 00489 #endif 00490 loading_config_file = 0; 00491 return NULL; 00492 } 00493 } 00494 00495 00496 /* Read the configuration file line by line until the lines matching */ 00497 /* bufname and procname are found. */ 00498 line_number = 0; 00499 int first_line = 1; 00500 00501 00502 while (1) 00503 { 00504 if (NULL != lines_list) 00505 { 00506 if (!first_line) 00507 { 00508 line = (char *) lines_list->get_next (); 00509 } 00510 first_line = 0; 00511 if (NULL == line) 00512 { 00513 break; 00514 } 00515 } 00516 else 00517 { 00518 #ifdef CMS_USE_INET_FILES 00519 if (inet_file_eof (fp)) 00520 { 00521 break; 00522 } 00523 if ((inet_file_gets (line, CMS_CONFIG_LINELEN, fp)) == NULL) 00524 { 00525 break; 00526 } 00527 #else 00528 if (feof (fp)) 00529 { 00530 break; 00531 } 00532 if ((fgets (line, CMS_CONFIG_LINELEN, fp)) == NULL) 00533 { 00534 break; 00535 } 00536 #endif 00537 } 00538 00539 00540 line_number++; 00541 line_len = strlen (line); 00542 while (line[line_len - 1] == '\\') 00543 { 00544 int pos = line_len - 2; 00545 #ifdef CMS_USE_INET_FILES 00546 if ((inet_file_gets (line + pos, CMS_CONFIG_LINELEN - pos, fp)) == 00547 NULL) 00548 { 00549 break; 00550 } 00551 #else 00552 if ((fgets (line + pos, CMS_CONFIG_LINELEN - pos, fp)) == NULL) 00553 { 00554 break; 00555 } 00556 #endif 00557 line_len = strlen (line); 00558 if (line_len > CMS_CONFIG_LINELEN - 2) 00559 { 00560 break; 00561 } 00562 line_number++; 00563 } 00564 if (line_len > CMS_CONFIG_LINELEN) 00565 { 00566 rcs_print_error 00567 ("cms_cfg: Line length of line number %d in %s exceeds max length of %d", 00568 line_number, filename, CMS_CONFIG_LINELEN); 00569 } 00570 00571 00572 /* Skip comment lines and lines starting with white space. */ 00573 if (line[0] == CMS_CONFIG_COMMENTCHAR || 00574 strchr (" \t\n\r\0", line[0]) != NULL) 00575 { 00576 continue; 00577 } 00578 00579 00580 /* Separate out the first four strings in the line. */ 00581 if (separate_words (word, 4, line) != 4) 00582 { 00583 continue; 00584 } 00585 00586 if (!strcmp (word[1], bufname) && line[0] == 'B') 00587 { 00588 /* Buffer line found, store the line and type. */ 00589 return line; 00590 } 00591 } 00592 return NULL; 00593 } |
|
Definition at line 733 of file cms_cfg.cc. Referenced by CMS::CMS(), CMS_CONFIG_COMMENTCHAR(), and find_proc_and_buffer_lines().
00734 { 00735 char my_hostname[256]; 00736 #ifndef VXWORKS 00737 struct hostent *my_hostent_ptr = 0; 00738 struct hostent *buffer_hostent_ptr = 0; 00739 struct hostent my_hostent; 00740 #endif 00741 char my_hostent_addresses[16][16]; 00742 int num_my_hostent_addresses = 0; 00743 struct in_addr myaddress; 00744 int j, k; 00745 char *buffer_host = 0; 00746 char *word[4]; /* array of pointers to words from line */ 00747 00748 if (0 == bufline) 00749 { 00750 return 0; 00751 } 00752 00753 /* Separate out the first four strings in the line. */ 00754 if (separate_words (word, 4, bufline) != 4) 00755 { 00756 return 0; 00757 } 00758 buffer_host = word[3]; 00759 if (buffer_host == 0) 00760 { 00761 return 0; 00762 } 00763 00764 if (!strncmp (buffer_host, "localhost", 9)) 00765 { 00766 return 1; 00767 } 00768 dl_gethostname (my_hostname, 256); 00769 if (!strcmp (buffer_host, my_hostname)) 00770 { 00771 return 1; 00772 } 00773 00774 #ifdef VXWORKS 00775 if (hostGetByName (my_hostname) == hostGetByName (buffer_host)) 00776 { 00777 return 1; 00778 } 00779 if (hostGetByName (my_hostname) == dl_inet_aton (buffer_host)) 00780 { 00781 return 1; 00782 } 00783 #else 00784 dl_gethostbyname (my_hostname, &my_hostent_ptr); 00785 if (0 == my_hostent_ptr) 00786 { 00787 return 0; 00788 } 00789 myaddress.s_addr = *((int *) my_hostent_ptr->h_addr_list[0]); 00790 if (!strcmp (buffer_host, dl_inet_ntoa (myaddress))) 00791 { 00792 return 1; 00793 } 00794 if (my_hostent_ptr->h_length < 1 || my_hostent_ptr->h_length > 16) 00795 { 00796 rcs_print_error ("Bad hostentry length.\n"); 00797 return 0; 00798 } 00799 /* We need to make a copy of my_hostent and all its addresses in case they 00800 are clobbered when we try to get the hostentry for buffer_host */ 00801 my_hostent = *my_hostent_ptr; 00802 memset (my_hostent_addresses, 0, 256); 00803 for (j = 0; j < 16 && 0 != my_hostent.h_addr_list[j]; j++) 00804 { 00805 memcpy (my_hostent_addresses[j], my_hostent.h_addr_list[j], 00806 my_hostent.h_length); 00807 } 00808 num_my_hostent_addresses = j; 00809 if (num_my_hostent_addresses < 1) 00810 { 00811 return 0; 00812 } 00813 dl_gethostbyname (buffer_host, &buffer_hostent_ptr); 00814 if (0 == buffer_hostent_ptr) 00815 { 00816 return 0; 00817 } 00818 j = 0; 00819 k = 0; 00820 if (buffer_hostent_ptr->h_length != my_hostent.h_length) 00821 { 00822 rcs_print_error ("Mismatched hostentry lengths.\n"); 00823 return 0; 00824 } 00825 while (j < num_my_hostent_addresses && j < 16) 00826 { 00827 k = 0; 00828 while (buffer_hostent_ptr->h_addr_list[k] != 0 && k < 16) 00829 { 00830 if (!memcmp 00831 (my_hostent_addresses[j], buffer_hostent_ptr->h_addr_list[k], 00832 my_hostent.h_length)) 00833 { 00834 return 1; 00835 } 00836 k++; 00837 } 00838 j++; 00839 } 00840 #endif 00841 00842 return 0; 00843 } |