Lines 21-26
Link Here
|
21 |
#include <sys/types.h> |
21 |
#include <sys/types.h> |
22 |
#include <sys/uio.h> |
22 |
#include <sys/uio.h> |
23 |
|
23 |
|
|
|
24 |
/* The maximum size of each line of configuration file */ |
25 |
#define MAX_ARGS_SIZE 256 |
26 |
|
24 |
/* The maximum size of the PID file, in bytes */ |
27 |
/* The maximum size of the PID file, in bytes */ |
25 |
#define MAX_FILE_SIZE 32 |
28 |
#define MAX_FILE_SIZE 32 |
26 |
|
29 |
|
Lines 39-44
Link Here
|
39 |
#define ERR_ACCESS_JAR_FILE 17 |
42 |
#define ERR_ACCESS_JAR_FILE 17 |
40 |
#define ERR_STDOUT_LOGFILE_OPEN 9 |
43 |
#define ERR_STDOUT_LOGFILE_OPEN 9 |
41 |
#define ERR_STDERR_LOGFILE_OPEN 10 |
44 |
#define ERR_STDERR_LOGFILE_OPEN 10 |
|
|
45 |
#define ERR_INCORRECT_CONFIGURATION 18 |
42 |
#define ERR_FORK_FAILED 11 |
46 |
#define ERR_FORK_FAILED 11 |
43 |
#define ERR_STAT_JAVA_HOME 12 |
47 |
#define ERR_STAT_JAVA_HOME 12 |
44 |
#define ERR_JAVA_HOME_NOT_DIR 13 |
48 |
#define ERR_JAVA_HOME_NOT_DIR 13 |
Lines 307-313
Link Here
|
307 |
*/ |
311 |
*/ |
308 |
void start(void) { |
312 |
void start(void) { |
309 |
|
313 |
|
|
|
314 |
FILE *javaConfFile; |
315 |
char **args; |
316 |
char *args_jvm = "/usr/local/jdk1.4.2/bin/java"; |
317 |
char *args_jar = "bin/bootstrap.jar"; |
318 |
char *args_arg = %%JAR_ARGS%%; |
319 |
char buffer[MAX_ARGS_SIZE]; |
320 |
int argc; |
310 |
int file; |
321 |
int file; |
|
|
322 |
int i; |
323 |
int line; |
324 |
int ok; |
311 |
int pid; |
325 |
int pid; |
312 |
int result; |
326 |
int result; |
313 |
int stdoutLogFile; |
327 |
int stdoutLogFile; |
Lines 404-409
Link Here
|
404 |
} |
418 |
} |
405 |
lseek(stderrLogFile, (off_t) 0, SEEK_END); |
419 |
lseek(stderrLogFile, (off_t) 0, SEEK_END); |
406 |
|
420 |
|
|
|
421 |
/* Get java parameters */ |
422 |
argc = 4; |
423 |
args = (char **) malloc(argc * sizeof(char *)); |
424 |
args[0] = args_jvm; |
425 |
javaConfFile = fopen("%%APP_HOME%%/%%CONTROL_SCRIPT_CONF%%", "r"); |
426 |
if (javaConfFile >= 0) { |
427 |
line = 0; |
428 |
while (fgets(buffer, MAX_ARGS_SIZE, javaConfFile) != NULL) { |
429 |
line++; |
430 |
if (strlen(buffer) == 0) |
431 |
continue; |
432 |
|
433 |
ok = 1; |
434 |
for (i = -1; ok && (++i < strlen(buffer)); ) |
435 |
ok &= (islower(buffer[i]) || isdigit(buffer[i]) || (buffer[i] == '.')); |
436 |
ok |= (i < strlen(buffer) && (i > 0) && (buffer[i++] == '=') && (i < strlen(buffer))); |
437 |
for (; ok && (i < strlen(buffer)); i++) |
438 |
ok &= (isalnum(buffer[i]) || (buffer[i] == '-') || (buffer[i] == '.') || (buffer[i] == '/') || (buffer[i] == 10)); |
439 |
|
440 |
if (ok != 1) { |
441 |
printf(" [ FAILED ]\n"); |
442 |
fprintf(stderr, "%%CONTROL_SCRIPT_NAME%%: Error in %%APP_HOME%%/%%CONTROL_SCRIPT_CONF%%#%i-%i\n", line, i); |
443 |
exit(ERR_INCORRECT_CONFIGURATION); |
444 |
} |
445 |
|
446 |
argc++; |
447 |
args = (char **) realloc(args, argc * sizeof(char)); |
448 |
args[argc - 4] = strdup(buffer); |
449 |
} |
450 |
fclose(javaConfFile); |
451 |
} |
452 |
args[argc - 3] = args_jar; |
453 |
args[argc - 2] = args_arg; |
454 |
args[argc - 1] = NULL; |
455 |
|
407 |
/* Split this process in two */ |
456 |
/* Split this process in two */ |
408 |
pid = fork(); |
457 |
pid = fork(); |
409 |
if (pid == -1) { |
458 |
if (pid == -1) { |
Lines 425-431
Link Here
|
425 |
file using pipe(2) */ |
474 |
file using pipe(2) */ |
426 |
|
475 |
|
427 |
/* Execute the command */ |
476 |
/* Execute the command */ |
428 |
execl("%%JAVA_HOME%%/%%JAVA_CMD%%", "%%JAVA_HOME%%/%%JAVA_CMD%%", "-jar", %%JAVA_ARGS%% "%%JAR_FILE%%", %%JAR_ARGS%% NULL); |
477 |
execv("%%JAVA_HOME%%/%%JAVA_CMD%%", args); |
429 |
|
478 |
|
430 |
fprintf(stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to start %%APP_TITLE%% %%PORTVERSION%% since '%%JAVA_HOME%%/%%JAVA_CMD%% -jar %%JAR_FILE%%' in %%APP_HOME%%: "); |
479 |
fprintf(stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to start %%APP_TITLE%% %%PORTVERSION%% since '%%JAVA_HOME%%/%%JAVA_CMD%% -jar %%JAR_FILE%%' in %%APP_HOME%%: "); |
431 |
perror(NULL); |
480 |
perror(NULL); |