in src/native/unix/native/home.c [48:131]
static bool parse(home_data *data)
{
FILE *cfgf = fopen(data->cfgf, "r");
char *ret = NULL, *sp;
char buf[1024];
if (cfgf == NULL) {
log_debug("Can't open %s\n", data->cfgf);
return (false);
}
data->jvms = (home_jvm **)malloc(256 * sizeof(home_jvm *));
while ((ret = fgets(buf, 1024, cfgf)) != NULL) {
char *tmp = strchr(ret, '#');
int pos;
/* Clear the string at the first occurrence of '#' */
if (tmp != NULL)
tmp[0] = '\0';
/* Trim the string (including leading '-' chars */
while ((ret[0] == ' ') || (ret[0] == '\t') || (ret[0] == '-'))
ret++;
pos = strlen(ret);
while (pos >= 0) {
if ((ret[pos] == '\r') || (ret[pos] == '\n') || (ret[pos] == '\t')
|| (ret[pos] == '\0') || (ret[pos] == ' ')) {
ret[pos--] = '\0';
}
else
break;
}
/* Format changed for 1.4 JVMs */
sp = strchr(ret, ' ');
if (sp != NULL)
*sp = '\0';
/* Did we find something significant? */
if (strlen(ret) > 0) {
char *libf = NULL;
int x = 0;
log_debug("Found VM %s definition in configuration", ret);
while (location_jvm_configured[x] != NULL) {
char *orig = location_jvm_configured[x];
char temp[1024];
char repl[1024];
int k;
k = replace(temp, 1024, orig, "$JAVA_HOME", data->path);
if (k != 0) {
log_error("Can't replace home in VM library (%d)", k);
return (false);
}
k = replace(repl, 1024, temp, "$VM_NAME", ret);
if (k != 0) {
log_error("Can't replace name in VM library (%d)", k);
return (false);
}
log_debug("Checking library %s", repl);
if (checkfile(repl)) {
libf = strdup(repl);
break;
}
x++;
}
if (libf == NULL) {
log_debug("Cannot locate library for VM %s (skipping)", ret);
}
else {
data->jvms[data->jnum] = (home_jvm *)malloc(sizeof(home_jvm));
data->jvms[data->jnum]->name = strdup(ret);
data->jvms[data->jnum]->libr = libf;
data->jnum++;
data->jvms[data->jnum] = NULL;
}
}
}
fclose(cfgf);
return (true);
}