1445                                                                              {
 1447   char line[2000], 
prompt[256];
 
 1448   char param[10][2000];
 
 1455   char user_name[80] = "";
 1458   char message[2000], client_name[256], *p;
 
 1461 
 1463 
 1464   
 1467   else
 1469 
 1470   
 1472      printf(
"Directory \"%s\" not found.\n", 
pwd);
 
 1473      return -1;
 1474   }
 1475 
 1476   
 1477   if (cmd[0] == '@') {
 1480         printf(
"Command file %s not found.\n", cmd + 1);
 
 1481         return -1;
 1482      }
 1483   }
 1484 
 1485   do {
 1486      
 1489 
 1491         line[0] = 0;
 1494      } else if (cmd[0] != '@')
 1496      else {
 1497         memset(line, 0, 
sizeof(line));
 
 1499 
 1500         if (s == 
NULL || line[0] == 0)
 
 1501            break;
 1502 
 1503         
 1504         while (
strlen(line) > 0 && line[
strlen(line) - 1] == 
'\n')
 
 1505            line[
strlen(line) - 1] = 0;
 
 1506 
 1507         if (line[0] == 0)
 1508            continue;
 1509      }
 1510 
 1511      
 1516 
 1518      do {
 1525         } 
else if (*
pc == 
'\'') {
 
 1527            for (
i = 0; *
pc && *
pc != 
'\'' && 
i < (
int) 
sizeof(
param[0]) - 1; 
i++)
 
 1531         } 
else if (*
pc == 
'`') {
 
 1537         } else
 1545 
 1546      
 1549 
 1550      
 1551      else if ((
param[0][0] == 
'l' && 
param[0][1] == 
's') || (
param[0][0] == 
'd' && 
param[0][1] == 
'i')) {
 
 1557 
 1558         
 1559         for (
i = 1; 
i < 4; 
i++)
 
 1560            if (
param[
i][0] == 
'-') {
 
 1572               }
 1573            }
 1574 
 1575         for (
i = 1; 
param[
i][0] == 
'-'; 
i++)
 
 1576            ;
 1577 
 1578         
 1581            for (p = 
strchr(
param[
i], 
'[') + 1; *p && *p != 
']'; p++)
 
 1583                  break;
 1584 
 1585            if (*p && *p == ']') {
 1588            }
 1589         }
 1590 
 1593               
 1595            } else {
 1598               else
 1600 
 1603 
 1605                  printf(
"link %s points to invalid location\n", 
param[
i]);
 
 1606            }
 1607         }
 1608 
 1611               printf(
"Key name                        Type    #Val  Size  Last Opn Mode Value\n");
 
 1612               printf(
"---------------------------------------------------------------------------\n");
 
 1613            }
 1614 
 1619            } else {
 1623               else
 1627                        break;
 1628                     }
 1629 
 1631 
 1633                        break;
 1634 
 1638                        break;
 1639                  }
 1640            }
 1641         }
 1642      }
 1643 
 1644      
 1645      else if (
param[0][0] == 
'c' && 
param[0][1] == 
'd') {
 
 1648         else
 1650 
 1652 
 1658               printf(
"key has no subkeys\n");
 
 1659            else {
 1662            }
 1663         } else
 1664            printf(
"key not found\n");
 
 1665      }
 1666 
 1667      
 1668      else if (
param[0][0] == 
'p' && 
param[0][1] == 
'w') {
 
 1670      }
 1671 
 1672      
 1673      else if (
param[0][0] == 
'c' && 
param[0][1] == 
'r') {
 
 1675 
 1676         
 1677 
 1687            }
 1688         } else
 1690 
 1691         
 1694               break;
 1695         }
 1696 
 1698            printf(
"Unknown type. Must be one of:\n");
 
 1699            printf(
"{ UINT8,INT8,UINT16,INT16,UINT32,INT32,UINT64,INT64,BOOL,FLOAT,DOUBLE,STRING }\n");
 
 1700         } else {
 1704 
 1711                  else
 1715               else
 1717 
 1721               free(buf);
 1722            }
 1723 
 1730               free(buf);
 1731            }
 1732         }
 1733      }
 1734 
 1735      
 1736      else if (
param[0][0] == 
'm' && 
param[0][1] == 
'k') {
 
 1739      }
 1740 
 1741      
 1742      else if (
param[0][0] == 
'l' && 
param[0][1] == 
'n') {
 
 1745      }
 1746 
 1747      
 1748      else if (
param[0][0] == 
'c' && (
param[0][1] == 
'o' || 
param[0][1] == 
'p')) {
 
 1749         
 1755            else {
 1756               printf(
"Overwrite existing key\n\"%s\"\n(y/[n]) ", 
str);
 
 1758            }
 1761         }
 1762 
 1765 
 1769 
 1772 
 1780                  free(buf);
 1781               } else {
 1783                  size = 
sizeof(
data);
 
 1786                     printf(
"error: db_copy() status %d, odbedit internal buffer is too small, size %d\n", 
status, size);
 
 1789                  } else {
 1792                  }
 1793               }
 1794            } else {
 1795               printf(
"key not found\n");
 
 1796            }
 1797         }
 1798      }
 1799 
 1800      
 1801      else if ((
param[0][0] == 
'd' && 
param[0][1] == 
'e') || (
param[0][0] == 
'r' && 
param[0][1] == 
'm')) {
 
 1802         flags = 0;
 1804            flags |= (1 << 0);
 1806            flags |= (1 << 1);
 1807 
 1808         for (
i = 1; 
param[
i][0] == 
'-'; 
i++)
 
 1809            ;
 1810 
 1812 
 1815 
 1819            else {
 1821                  printf(
"Are you sure to delete the key\n\"%s\"\nand all its subkeys? (y/[n]) ",
 
 1823               else
 1824                  printf(
"Are you sure to delete the key\n\"%s\"\n(y/[n]) ", 
str);
 
 1825 
 1827            }
 1828 
 1829            if (
str[0] == 
'y') {
 
 1832                  printf(
"deletion of key not allowed\n");
 
 1834                  printf(
"key is open by other client\n");
 
 1837               }
 1838            }
 1839         } else
 1840            printf(
"key not found\n");
 
 1841      }
 1842 
 1843      
 1844      else if (
param[0][0] == 
's' && 
param[0][1] == 
'e') {
 
 1845         
 1850 
 1851         std::vector<HNDLE> keys;
 1853 
 1855            printf(
"Error: Key \"%s\" not found\n", 
name);
 
 1857               return -1;
 1858         } else {
 1861            }
 1862         }
 1863      }
 1864 
 1865      
 1866      else if (
param[0][0] == 
'c' && 
param[0][1] == 
'h' && 
param[0][2] == 
'm') {
 
 1868            printf(
"Please specify mode and key\n");
 
 1869         } else {
 1871 
 1873 
 1876            } else {
 1879            }
 1880 
 1884               else {
 1885                  printf(
"Are you sure to change the mode of key\n  %s\nand all its subkeys\n",
 
 1891               }
 1894            } else {
 1895               printf(
"Error: Key \"%s\" not found\n", 
str);
 
 1897                  return -1;
 1898            }
 1899         }
 1900      }
 1901 
 1902      
 1906            printf(
"RPC test passed!\n");
 
 1907         else
 1908            printf(
"RPC test failed!\n");
 
 1909      }
 1910 
 1911      
 1912      else if (
param[0][0] == 
't' && 
param[0][1] == 
'r') {
 
 1913         if (
param[1][0] == 0) {
 
 1914            printf(
"Please specify key\n");
 
 1915         } else {
 1917 
 1919 
 1923 
 1926            else {
 1927               printf(
"Error: Key \"%s\" not found\n", 
str);
 
 1929                  return -1;
 1930            }
 1931         }
 1932      }
 1933 
 1934      
 1935      else if (
param[0][0] == 
'r' && 
param[0][1] == 
'e' && 
param[0][2] == 
'n') {
 
 1936         if (
param[1][0] == 0) {
 
 1937            printf(
"Please specify key\n");
 
 1938         } else {
 1940 
 1943            else
 1945 
 1948            else {
 1949               printf(
"Error: Key \"%s\" not found\n", 
str);
 
 1951                  return -1;
 1952            }
 1953         }
 1954      }
 1955 
 1956      
 1957      else if (
param[0][0] == 
'm' && 
param[0][1] == 
'o') {
 
 1958         if (
param[1][0] == 0) {
 
 1959            printf(
"Please specify key\n");
 
 1960         } else {
 1962 
 1965            else
 1967 
 1969               if (
param[2][0] == 
't')
 
 1971               else if (
param[2][0] == 
'b')
 
 1973               else
 1975 
 1978                  printf(
"no write access to key\n");
 
 1980                  printf(
"key is open by other client\n");
 
 1981            } else {
 1982               printf(
"Error: Key \"%s\" not found\n", 
str);
 
 1984                  return -1;
 1985            }
 1986         }
 1987      }
 1988 
 1989      
 1990      else if (
param[0][0] == 
'f' && 
param[0][1] == 
'i') {
 
 1992 
 1995         else
 1996            printf(
"current key is invalid / no read access\n");
 
 1997      }
 1998 
 1999      
 2000      else if (
param[0][0] == 
'l' && 
param[0][1] == 
'o') {
 
 2002 
 2004      }
 2005 
 2006      
 2007      else if (
param[0][0] == 
's' && 
param[0][1] == 
'a') {
 
 2009 
 2014         else if (
param[1][0] == 
'-') {
 
 2015            if (
param[1][1] == 
'c' && 
param[1][2] == 
's') {
 
 2018            } 
else if (
param[1][1] == 
'c')
 
 2020            else if (
param[1][1] == 
's')
 
 2022            else if (
param[1][1] == 
'x')
 
 2024            else if (
param[1][1] == 
'j')
 
 2026            else if (
param[1][1] == 
'z')
 
 2029         } else
 2031      }
 2032 
 2033      
 2035 
 2036         if (
param[1][0] == 
'/') {
 
 2041         } else {
 2043         }
 2044 
 2045         char *buffer = 
NULL;
 
 2046         int buffer_size = 0;
 2048 
 2050 
 2052 
 2053         if (buffer)
 2054            free(buffer);
 2055      }
 2056 
 2057      
 2060 
 2061         char *buffer = 
NULL;
 
 2062         int buffer_size = 0;
 2064 
 2069 
 2071 
 2073 
 2074         if (buffer)
 2075            free(buffer);
 2076      }
 2077 
 2078      
 2080 
 2081         if (
param[1][0] == 
'/') {
 
 2086         } else {
 2088         }
 2089 
 2090         char *buffer = 
NULL;
 
 2091         int buffer_size = 0;
 2093 
 2095 
 2097 
 2098         if (buffer)
 2099            free(buffer);
 2100      }
 2101 
 2102      
 2103      else if (
param[0][0] == 
'm' && 
param[0][1] == 
'a') {
 
 2106         else
 2108      }
 2109 
 2110      
 2111      else if (
param[0][0] == 
'p' && 
param[0][1] == 
'a' && 
param[0][2] == 
's') {
 
 2112         
 2113
 2114
 2115
 2116
 2117 
 2121 
 2124 
 2128 
 2131                  printf(
"Mismatch - password unchanged\n");
 
 2132               else
 2134            } else
 2135               printf(
"Wrong password\n");
 
 2136         } else {
 2139 
 2142               printf(
"Mismatch - password not set\n");
 
 2143            else {
 2144               
 2147 
 2148               
 2150                             "/Experiment/Security/Allowed hosts/host.sample.domain",
 2154            }
 2155         }
 2156 
 2157      }
 2158 
 2159      
 2160      else if (
param[0][0] == 
'w' && 
param[0][1] == 
'e' && 
param[0][2] == 
'b') {
 
 2164 
 2167 
 2171 
 2174                  printf(
"Mismatch - password unchanged\n");
 
 2175               else
 2177            } else
 2178               printf(
"Wrong password\n");
 
 2179         } else {
 2182 
 2185               printf(
"Mismatch - password not set\n");
 
 2186            else
 2187               
 2190         }
 2191      }
 2192 
 2193      
 2194      else if (
param[0][0] == 
'h' && 
param[0][1] == 
'i') {
 
 2196 
 2197         client_name[0] = 0;
 2198 
 2200            
 2206                     printf(
"No client currently exports the CLEAR HISTO functionality.\n");
 
 2207                     break;
 2208                  }
 2209 
 2213                     size = sizeof(client_name);
 2216                     break;
 2217                  }
 2218               }
 2219            }
 2220 
 2223            else
 2225 
 2228            else
 2230         } else {
 2231            strcpy(client_name, 
param[1]);
 
 2232 
 2235            else
 2237 
 2240            else
 2242         }
 2243 
 2244         if (client_name[0]) {
 2247               
 2248            } else
 2249               printf(
"Cannot connect to client %s\n", client_name);
 
 2250         }
 2251      }
 2252 
 2253      
 2254      else if (
param[0][0] == 
'i' && 
param[0][1] == 
'm') {
 
 2258         } else {
 2263            } else {
 2266               char *buf = (
char *) 
malloc(size + 1);
 
 2271                  free(buf);
 2272               } else {
 2275                  if (size == 0) {
 2276                     buf[size] = 0;
 2277                     size++;
 2278                  } else if (buf[size - 1] != 0) {
 2279                     buf[size] = 0;
 2280                     size++;
 2281                  }
 2282 
 2283                  if (
param[2][0] == 0) {
 
 2286                  } else {
 2288                  }
 2289 
 2291                  
 2295                  free(buf);
 2296               }
 2297            }
 2298         }
 2299 
 2300      }
 2301 
 2302      
 2303      else if (
param[0][0] == 
'e' && 
param[0][1] == 
'x' && 
param[0][2] == 
'p') {
 
 2304         FILE *f;
 2305 
 2306         if (
param[1][0] == 0)
 
 2307            printf(
"please specify key\n");
 
 2308         else {
 2310 
 2313               printf(
"Error: Key \"%s\" not found\n", 
param[1]);
 
 2314            else {
 2315               if (
param[2][0] == 0) {
 
 2318               } else
 2320 
 2324               else {
 2327                     printf(
"Only export of STRING key possible\n");
 
 2328                  else {
 2335                     free(buf);
 2336                  }
 2337               }
 2338            }
 2339         }
 2340      }
 2341 
 2342      
 2343      else if (
param[0][0] == 
'a' && 
param[0][1] == 
'l') {
 
 2344         
 2349 
 2351                  break;
 2352 
 2356                  printf(
"Alarm of class \"%s\" reset sucessfully\n", 
key.
name);
 
 2357            }
 2358         }
 2359      }
 2360 
 2361      
 2362      else if (
param[0][0] == 
'm' && 
param[0][1] == 
'e') {
 
 2364            printf(
"This function works only locally\n");
 
 2365         else {
 2366#ifdef LOCAL_ROUTINES
 2369            if (buf) {
 2371               free(buf);
 2372            }
 2373#else
 2374            printf(
"This MIDAS only works remotely\n");
 
 2375#endif
 2376         }
 2377      }
 2378 
 2379      
 2380      else if (
param[0][0] == 
's' && 
param[0][1] == 
'o') {
 
 2385      }
 2386 
 2387      
 2388      else if (
param[0][0] == 
's' && 
param[0][1] == 
'c') {
 
 2392                   "cannot find System/Clients entry in database");
 2393         else {
 2394            if (
param[1][1] == 
'w')
 
 2395               printf(
"Name                Host                Timeout    Last called\n");
 
 2396            else
 2398 
 2399            
 2403                  break;
 2404 
 2406                  size = 
sizeof(
name);
 
 2411 
 2417 
 2418                  
 2419                  if (
param[1][1] == 
'w') {
 
 2421 
 2424                  }
 2425 
 2427               }
 2428            }
 2429         }
 2430      }
 2431 
 2432      
 2433      else if (
param[0][0] == 
's' && 
param[0][1] == 
't' && 
param[0][2] == 
'a') {
 
 2434         debug_flag = ((
param[1][0] == 
'-' && 
param[1][1] == 
'v') || (
param[2][0] == 
'-' && 
param[2][1] == 
'v') || (
param[3][0] == 
'-' && 
param[3][1] == 
'v'));
 
 2436 
 2437         
 2442            printf(
"Run is already started\n");
 
 2444            printf(
"Run is paused, please use \"resume\"\n");
 
 2445         } else {
 2446            
 2451 
 2452            
 2455               line[0] = 'y';
 2456            } else {
 2458               do {
 2462 
 2464                           break;
 2465 
 2468 
 2470                           continue;
 2471 
 2472                        if (
str.find(
"Options ") == 0)
 
 2473                           continue;
 2474 
 2477 
 2480 
 2484                           free(buf);
 2485                           continue;
 2486                        }
 2487 
 2494                           } else {
 2496                           }
 2497 
 2502 
 2503                           if (line[0]) {
 2506                           }
 2507                        }
 2508 
 2509                        free(buf);
 2510                     }
 2511                  }
 2512 
 2513                  
 2515 
 2518                  } else {
 2519 
 2522                     if (line[0] && 
atoi(line) > 0)
 
 2524                  }
 2525 
 2526                  printf(
"Are the above parameters correct? ([y]/n/q): ");
 
 2528 
 2529               } while (line[0] == 'n' || line[0] == 'N');
 2530            }
 2531 
 2532            if (line[0] != 'q' && line[0] != 'Q') {
 2533               
 2535 
 2537 
 2541                  
 2546 
 2548               }
 2549            }
 2550         }
 2551      }
 2552 
 2553      
 2554      else if (
param[0][0] == 
's' && 
param[0][1] == 
't' && 
param[0][2] == 
'o') {
 
 2555         debug_flag = ((
param[1][0] == 
'-' && 
param[1][1] == 
'v') || (
param[2][0] == 
'-' && 
param[2][1] == 
'v') || (
param[3][0] == 
'-' && 
param[3][1] == 
'v'));
 
 2557 
 2558         
 2564            printf(
"Run is already stopped. Stop again? (y/[n]) ");
 
 2566         }
 2568            if (
param[1][0] == 
'n')
 
 2571            else
 2573 
 2577               printf(
"Deferred stop already in progress, enter \"stop now\" to force stop\n");
 
 2580         }
 2581      }
 2582 
 2583      
 2584      else if (
param[0][0] == 
'p' && 
param[0][1] == 
'a' && 
param[0][2] == 
'u') {
 
 2585         debug_flag = ((
param[1][0] == 
'-' && 
param[1][1] == 
'v') || (
param[2][0] == 
'-' && 
param[2][1] == 
'v'));
 
 2586 
 2587         
 2592            printf(
"Run is not started\n");
 
 2593         } else {
 2594            if (
param[1][0] == 
'n')
 
 2596            else
 2598 
 2602               printf(
"Deferred pause already in progress, enter \"pause now\" to force pause\n");
 
 2605         }
 2606      }
 2607 
 2608      
 2609      else if (
param[0][0] == 
'r' && 
param[0][1] == 
'e' && 
param[0][2] == 
's') {
 
 2610         debug_flag = ((
param[1][0] == 
'-' && 
param[1][1] == 
'v') || (
param[2][0] == 
'-' && 
param[2][1] == 
'v'));
 
 2611 
 2612         
 2617            printf(
"Run is not paused\n");
 
 2618         } else {
 2622         }
 2623      }
 2624 
 2625      
 2626      else if (
param[0][0] == 
'm' && 
param[0][1] == 
's') {
 
 2627         
 2629            printf(
"Error: Not enough parameters. Please use\n\n");
 
 2630            printf(
"   msg <facility> <type> <name> <message>\n\n");
 
 2631            printf(
"where <facility> can be \"midas\", \"chat\", ...\n");
 
 2632            printf(
"and <type> must be \"error\", \"info\", \"debug\", \"user\", \"log\", \"talk\" or \"call\".\n");
 
 2633         } else {
 2650               printf(
"Error: inavlid type \"%s\".\n", 
param[2]);
 
 2651               printf(
"<type> must be one of \"error\", \"info\", \"debug\", \"user\", \"log\", \"talk\", \"call\".\n");
 
 2652            } else {
 2653 
 2656            }
 2657         }
 2658      }
 2659 
 2660      
 2661      else if (
param[0][0] == 
'c' && 
param[0][1] == 
'h' && 
param[0][2] == 
'a') {
 
 2663 
 2667         }
 2668 
 2669         printf(
"Exit chat mode with empty line.\n");
 
 2670         do {
 2675 
 2678 
 2680 
 2682      }
 2683 
 2684      
 2685      else if (
param[0][0] == 
'o' && 
param[0][1] == 
'l') {
 
 2689 
 2693      }
 2694 
 2695      
 2696      else if (
param[0][0] == 
'c' && 
param[0][1] == 
'l') {
 
 2699 
 2701         if (
param[1][0] == 
'-' && 
param[1][1] == 
'f')
 
 2703         if (
param[2][0] == 
'-' && 
param[2][1] == 
'f')
 
 2705 
 2707 
 2710         else
 2713      }
 2714 
 2715      
 2716      else if (
param[0][0] == 
's' && 
param[0][1] == 
'h') {
 
 2717         if (
param[1][0] == 0)
 
 2718            printf(
"Please enter client name or \"all\" to shutdown all clients.\n");
 
 2719         else {
 2723                  printf(
"No clients found\n");
 
 2724               else
 2726            }
 2727         }
 2728      }
 2729 
 2730      
 2731      else if (
param[0][0] == 
'v' && 
param[0][1] == 
'e') {
 
 2735      }
 2736 
 2737      
 2738      else if (
param[0][0] == 
'e' && 
param[0][1] == 
'x' && 
param[0][2] == 
'e') {
 
 2745               printf(
"Key contains no command\n");
 
 2746               continue;
 2747            }
 2750 
 2752         } else {
 2754         }
 2756      }
 2757 
 2758      
 2759      else if (
param[0][0] == 
'w' && 
param[0][1] == 
'a' && 
param[0][2] == 
'i') {
 
 2760         if (
param[1][0] == 0) {
 
 2761            printf(
"Please specify key\n");
 
 2762         } else {
 2764 
 2768            } else
 2770 
 2773               printf(
"Waiting for key \"%s\" to be modified, abort with any key\n", 
key.
name);
 
 2775               char *buf = (
char *) 
malloc(size);
 
 2778 
 2779               do {
 2782                     break;
 2784 
 2787 
 2789               if (buf) {
 2790                  free(buf);
 2792               }
 2793 
 2795                  break;
 2796 
 2798                  printf(
"Wait aborted.\n");
 
 2799               else
 2800                  printf(
"Key has been modified.\n");
 
 2801            } else
 2803         }
 2804      }
 2805 
 2806      
 2807      else if (
param[0][0] == 
'w' && 
param[0][1] == 
'a' && 
param[0][2] == 
't') {
 
 2808         if (
param[1][0] == 0) {
 
 2809            printf(
"Please specify key\n");
 
 2810         } else {
 2812 
 2817                  printf(
"Watch key \"%s\" to be modified, abort with any key\n", 
str);
 
 2818               else
 2819                  printf(
"Watch ODB tree \"%s\" to be modified, abort with any key\n", 
str);
 
 2821 
 2822               do {
 2825                     break;
 2827 
 2830 
 2832 
 2834                  break;
 2835            } else
 2837         }
 2838      }
 2839 
 2840      
 2841      else if (
param[0][0] == 
't' && 
param[0][1] == 
'1') {
 
 2845 
 2850 
 2852         do {
 2865 
 2866         printf(
"%d accesses per second\n", 
i / 5);
 
 2867      }
 2868 
 2869      
 2870      else if (
param[0][0] == 
't' && 
param[0][1] == 
'2') {
 
 2871         do {
 2872            do {
 2875            } 
while (
i > 0 && 
i != 4);
 
 2876 
 2879 
 2881      }
 2882 
 2883      
 2884      else if (
param[0][0] == 
't' && 
param[0][1] == 
'3') {
 
 2885#ifdef USE_ADDRESS_SANITIZER
 2886         
 2887         int *a = (
int *) 
malloc(
sizeof(
int) * 10);
 
 2889         free(a);
 2890#else
 2891         printf(
"test address sanitizer is disabled!\n");
 
 2892#endif
 2893      }
 2894 
 2895      
 2896      else if ((
param[0][0] == 
'e' && 
param[0][1] == 
'x' && 
param[0][2] == 
'i') || (
param[0][0] == 
'q'))
 
 2897         break;
 2898 
 2899      else if (
param[0][0] == 0)
 
 2900         ;
 2901 
 2902      else
 2904 
 2905      
 2907         break;
 2908 
 2909      
 2912         break;
 2913 
 2915 
 2916   
 2918 
 2919   return 1; 
 2920}
INT al_reset_alarm(const char *alarm_name)
 
INT bm_open_buffer(const char *buffer_name, INT buffer_size, INT *buffer_handle)
 
INT bm_close_buffer(INT buffer_handle)
 
INT cm_shutdown(const char *name, BOOL bUnique)
 
INT cm_connect_client(const char *client_name, HNDLE *hConn)
 
INT cm_transition(INT transition, INT run_number, char *errstr, INT errstr_size, INT async_flag, INT debug_flag)
 
void cm_ack_ctrlc_pressed()
 
INT cm_execute(const char *command, char *result, INT bufsize)
 
INT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
 
INT cm_cleanup(const char *client_name, BOOL ignore_timeout)
 
const char * cm_get_version()
 
const char * cm_get_revision()
 
#define CM_DEFERRED_TRANSITION
 
#define CM_TRANSITION_IN_PROGRESS
 
#define DB_NO_MORE_SUBKEYS
 
char * ss_getpass(const char *prompt)
 
INT ss_sleep(INT millisec)
 
char * ss_crypt(const char *buf, const char *salt)
 
INT cm_msg1(INT message_type, const char *filename, INT line, const char *facility, const char *routine, const char *format,...)
 
INT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format,...)
 
INT cm_msg_retrieve(INT n_message, char *message, INT buf_size)
 
INT db_delete_key(HNDLE hDB, HNDLE hKey, BOOL follow_links)
 
INT db_reorder_key(HNDLE hDB, HNDLE hKey, INT idx)
 
INT db_save_json(HNDLE hDB, HNDLE hKey, const char *filename, int flags)
 
INT db_open_record(HNDLE hDB, HNDLE hKey, void *ptr, INT rec_size, WORD access_mode, void(*dispatcher)(INT, INT, void *), void *info)
 
INT db_get_open_records(HNDLE hDB, HNDLE hKey, char *str, INT buf_size, BOOL fix)
 
INT db_show_mem(HNDLE hDB, char **result, BOOL verbose)
 
INT db_save_xml(HNDLE hDB, HNDLE hKey, const char *filename)
 
INT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
 
INT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size)
 
INT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT *buffer_size, const char *path)
 
INT db_set_link_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
 
INT db_get_record_size(HNDLE hDB, HNDLE hKey, INT align, INT *buf_size)
 
INT db_get_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
 
INT db_create_key(HNDLE hDB, HNDLE hKey, const char *key_name, DWORD type)
 
INT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
 
INT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append)
 
INT db_unwatch(HNDLE hDB, HNDLE hKey)
 
INT db_set_mode(HNDLE hDB, HNDLE hKey, WORD mode, BOOL recurse)
 
INT db_save(HNDLE hDB, HNDLE hKey, const char *filename, BOOL bRemote)
 
INT db_scan_tree(HNDLE hDB, HNDLE hKey, INT level, INT(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
 
INT db_get_key(HNDLE hDB, HNDLE hKey, KEY *key)
 
INT db_load(HNDLE hDB, HNDLE hKeyRoot, const char *filename, BOOL bRemote)
 
INT db_set_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
 
INT db_find_keys(HNDLE hDB, HNDLE hKeyRoot, char *odbpath, std::vector< HNDLE > &hKeyVector)
 
INT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append)
 
INT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
 
INT db_watch(HNDLE hDB, HNDLE hKey, void(*dispatcher)(INT, INT, INT, void *), void *info)
 
INT db_set_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
 
INT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
 
void strarrayindex(char *odbpath, int *index1, int *index2)
 
INT db_copy_json_values(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end, int omit_names, int omit_last_written, time_t omit_old_timestamp, int preserve_case)
 
INT db_set_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const void *data, INT data_size, INT num_values, DWORD type)
 
INT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name)
 
INT db_enum_key(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
 
INT db_close_record(HNDLE hDB, HNDLE hKey)
 
INT db_sscanf(const char *data_str, void *data, INT *data_size, INT i, DWORD tid)
 
INT db_set_num_values(HNDLE hDB, HNDLE hKey, INT num_values)
 
INT db_create_link(HNDLE hDB, HNDLE hKey, const char *link_name, const char *destination)
 
INT rpc_client_call(HNDLE hConn, DWORD routine_id,...)
 
const char * rpc_tid_name(INT id)
 
#define RPC_ANA_CLEAR_HISTOS
 
std::string msprintf(const char *format,...)
 
#define JSFLAG_FOLLOW_LINKS
 
#define JSFLAG_OMIT_LAST_WRITTEN
 
#define DEFAULT_BUFFER_SIZE
 
#define EVENT_BUFFER_NAME
 
#define message(type, str)
 
INT cmd_edit(const char *prompt, char *cmd, INT(*dir)(char *, INT *), INT(*idle)())
 
void watch_callback(HNDLE hDB, HNDLE hKey, INT index, void *info)
 
void compose_name(char *pwd, char *name, char *full_name)
 
void set_key(HNDLE hDB, HNDLE hKey, int index1, int index2, char *value)
 
void print_help(char *command)
 
INT cmd_dir(char *line, INT *cursor)
 
void assemble_prompt(char *prompt, int psize, char *host_name, char *exp_name, char *pwd)
 
INT search_key(HNDLE hDB, HNDLE hKey, KEY *key, INT level, void *info)
 
void create_experim_h(HNDLE hDB, const char *analyzer_name)
 
void key_update(HNDLE hDB, HNDLE hkey, void *info)
 
INT print_key(HNDLE hDB, HNDLE hKey, KEY *pkey, INT level, void *info)