avoid strtok() when processing the "partition" command

This commit is contained in:
Axel Kohlmeyer
2021-03-11 06:46:40 -05:00
parent af9321c4d8
commit 423772b1fa

View File

@ -1076,22 +1076,20 @@ void Input::partition()
int ilo,ihi;
utils::bounds(FLERR,arg[1],1,universe->nworlds,ilo,ihi,error);
// copy original line to copy, since will use strtok() on it
// ptr = start of 4th word
// new command starts at the 3rd argument,
// which must not be another partition command
strcpy(copy,line);
char *ptr = strtok(copy," \t\n\r\f");
ptr = strtok(nullptr," \t\n\r\f");
ptr = strtok(nullptr," \t\n\r\f");
ptr += strlen(ptr) + 1;
ptr += strspn(ptr," \t\n\r\f");
if (strcmp(arg[2],"partition") == 0)
error->all(FLERR,"Illegal partition command");
char *cmd = strstr(line,arg[2]);
// execute the remaining command line on requested partitions
if (yesflag) {
if (universe->iworld+1 >= ilo && universe->iworld+1 <= ihi) one(ptr);
if (universe->iworld+1 >= ilo && universe->iworld+1 <= ihi) one(cmd);
} else {
if (universe->iworld+1 < ilo || universe->iworld+1 > ihi) one(ptr);
if (universe->iworld+1 < ilo || universe->iworld+1 > ihi) one(cmd);
}
}