1
1

Cleanup the over-aggressive quoting of params on the orted cmd line. Remove duplicates caused by passing on both cmd line shortcuts and the mca param version of the same thing.

Fixes trac:4857

cmr=v1.8.2:reviewer=jsquyres

This commit was SVN r32517.

The following Trac tickets were found above:
  Ticket 4857 --> https://svn.open-mpi.org/trac/ompi/ticket/4857
Этот коммит содержится в:
Ralph Castain 2014-08-13 03:51:04 +00:00
родитель 4d6d4f46b0
Коммит 7342bce58f
2 изменённых файлов: 35 добавлений и 22 удалений

Просмотреть файл

@ -1083,14 +1083,26 @@ int orte_plm_base_orted_append_basic_args(int *argc, char ***argv,
/* check for debug flags */
if (orte_debug_flag) {
opal_argv_append(argc, argv, "--debug");
opal_argv_append(argc, argv, "-mca");
opal_argv_append(argc, argv, "orte_debug");
opal_argv_append(argc, argv, "1");
}
if (orte_debug_daemons_flag) {
opal_argv_append(argc, argv, "--debug-daemons");
opal_argv_append(argc, argv, "-mca");
opal_argv_append(argc, argv, "orte_debug_daemons");
opal_argv_append(argc, argv, "1");
}
if (orte_debug_daemons_file_flag) {
opal_argv_append(argc, argv, "--debug-daemons-file");
opal_argv_append(argc, argv, "-mca");
opal_argv_append(argc, argv, "orte_debug_daemons_file");
opal_argv_append(argc, argv, "1");
}
if (orte_leave_session_attached) {
opal_argv_append(argc, argv, "-mca");
opal_argv_append(argc, argv, "orte_leave_session_attached");
opal_argv_append(argc, argv, "1");
}
if (orted_spin_flag) {
opal_argv_append(argc, argv, "--spin");
}
@ -1302,15 +1314,10 @@ int orte_plm_base_orted_append_basic_args(int *argc, char ***argv,
}
}
if (!ignore) {
/* even if it is a single word, we have to try and quote it
* because it could contain a special character like a colon
* or semicolon */
(void)asprintf(&tmp_force, "\"%s\"", orted_cmd_line[i+2]);
/* pass it along */
opal_argv_append(argc, argv, orted_cmd_line[i]);
opal_argv_append(argc, argv, orted_cmd_line[i+1]);
opal_argv_append(argc, argv, tmp_force);
free(tmp_force);
opal_argv_append(argc, argv, orted_cmd_line[i+2]);
}
}
}

Просмотреть файл

@ -573,16 +573,12 @@ static int setup_launch(int *argcptr, char ***argvptr,
*/
cnt = opal_argv_count(orted_cmd_line);
for (i=0; i < cnt; i+=3) {
if (NULL != strchr(orted_cmd_line[i+2], ' ')) {
if (NULL == strchr(orted_cmd_line[i+2], ' ')) {
continue;
}
/* protect the value with quotes */
(void)asprintf(&param, "\"%s\"", orted_cmd_line[i+2]);
/* now pass it along */
opal_argv_append(&argc, &argv, orted_cmd_line[i]);
opal_argv_append(&argc, &argv, orted_cmd_line[i+1]);
opal_argv_append(&argc, &argv, param);
free(param);
opal_argv_append(&argc, &argv, orted_cmd_line[i+2]);
}
/* unless told otherwise... */
@ -611,22 +607,32 @@ static int setup_launch(int *argcptr, char ***argvptr,
}
}
if (!found) {
char *p2;
/* add it */
opal_argv_append(&argc, &argv, "-mca");
opal_argv_append(&argc, &argv, param);
/* there could be multi-word values here, or
* values with special characters, so protect
* the value with quotes */
(void)asprintf(&p2, "\"%s\"", value);
opal_argv_append(&argc, &argv, p2);
free(p2);
opal_argv_append(&argc, &argv, value);
}
free(param);
}
}
}
/* in the rsh environment, we can append multi-word arguments
* by enclosing them in quotes. Check for any multi-word
* mca params passed to mpirun and protect them
*/
for (i=0; NULL != argv[i]; i++) {
if (0 != strcmp("-mca", argv[i])) {
continue;
}
if (NULL == strchr(argv[i+2], ' ')) {
continue;
}
(void)asprintf(&param, "\"%s\"", argv[i+2]);
free(argv[i+2]);
argv[i+2] = param;
}
value = opal_argv_join(argv, ' ');
if (sysconf(_SC_ARG_MAX) < (int)strlen(value)) {
orte_show_help("help-plm-rsh.txt", "cmd-line-too-long",