// prototypes for functions provided for testing system
// Beth Katz, September 2004

// You should modify this file to contain prototypes for functions you create
// for your testing system. Put function comments here for documentation.
// Do *NOT* have  'using namespace std;' here. Instead, fully qualify the names.

#include <string>
#include <vector>

// returns whether or not file exists; works with file and directory names
int fileExists(const char * fileName);

// looks through the directory of the given name and stores the names 
// of the regular files in the directory as strings in a vector
// code adapted from submit.c in GRASST
void fillFileList(const char * directoryName, std::vector<std::string> & fileList);

// print a description and then the contents of the fileList vector
void printFileList(const std::string & description, 
                   const std::vector<std::string> & fileList);

// returns a string containing the processID of this process
std::string processIDstring( );

// execute prog with input from inputDir/inputFile and save output in outputFile
// cputime and filesize limits imposed to decrease effect of runaway programs
// -t 2 means two seconds cputime and -f 10 means a filesize of 10 KB
int runProgram(const std::string & prog, const std::string & inputDir, 
               const std::string & inputFile, const std::string & outputFile);

// remove fileToRemove from file system
int removeFile(const std::string & fileToRemove);