66 lines
2.0 KiB
C++
66 lines
2.0 KiB
C++
/* ----------------------------------------------------------------------
|
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
http://lammps.sandia.gov, Sandia National Laboratories
|
|
Steve Plimpton, sjplimp@sandia.gov
|
|
|
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
|
certain rights in this software. This software is distributed under
|
|
the GNU General Public License.
|
|
|
|
See the README file in the top-level LAMMPS directory.
|
|
------------------------------------------------------------------------- */
|
|
|
|
#include "mpi.h"
|
|
#include "string.h"
|
|
#include "unistd.h"
|
|
#include "sys/stat.h"
|
|
#include "shell.h"
|
|
#include "error.h"
|
|
|
|
using namespace LAMMPS_NS;
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
Shell::Shell(LAMMPS *lmp) : Pointers(lmp)
|
|
{
|
|
MPI_Comm_rank(world,&me);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
void Shell::command(int narg, char **arg)
|
|
{
|
|
if (narg < 1) error->all("Illegal shell command");
|
|
|
|
if (strcmp(arg[0],"cd") == 0) {
|
|
if (narg != 2) error->all("Illegal shell command");
|
|
chdir(arg[1]);
|
|
|
|
} else if (strcmp(arg[0],"mkdir") == 0) {
|
|
if (narg < 2) error->all("Illegal shell command");
|
|
#if !defined(WINDOWS) && !defined(__MINGW32_VERSION)
|
|
if (me == 0)
|
|
for (int i = 1; i < narg; i++)
|
|
mkdir(arg[i], S_IRWXU | S_IRGRP | S_IXGRP);
|
|
#endif
|
|
|
|
} else if (strcmp(arg[0],"mv") == 0) {
|
|
if (narg != 3) error->all("Illegal shell command");
|
|
if (me == 0) rename(arg[1],arg[2]);
|
|
|
|
} else if (strcmp(arg[0],"rm") == 0) {
|
|
if (narg < 2) error->all("Illegal shell command");
|
|
if (me == 0)
|
|
for (int i = 1; i < narg; i++)
|
|
unlink(arg[i]);
|
|
|
|
} else if (strcmp(arg[0],"rmdir") == 0) {
|
|
if (narg < 2) error->all("Illegal shell command");
|
|
if (me == 0)
|
|
for (int i = 1; i < narg; i++)
|
|
rmdir(arg[i]);
|
|
|
|
} else error->all("Illegal shell command");
|
|
}
|