//  makeDir

/*
	Wrapper for mkdir that allows you to create a whole new path, not just
	a single directory.
	
	Usage:
	
		string makeDir(string dirName)
		
	Tony Goodman  23 June 2005
*/

/******************************************************************************
	isDirectory
	
	Returns TRUE if string parameter is a valid directory.
******************************************************************************/
bool isDirectory(string dn)
{
	Stat s = create dn

	if (null s) return false
	
	if (directory s)
	{
		delete s
		return true
	}
	delete s
	return false
}

/******************************************************************************
	getParentDirectory
	
	Returns parent directory of the given file or directory name.
******************************************************************************/
string getParentDirectory(string fname) 
{
    int i = (length fname) - 1

    while (i > 0) 
    {
		if ((fname[i] == '\\') || (fname[i] == '/'))
		{
		    return fname[0:i - 1]
    	}
    	
	    i--
    }
    
    return ""
}


/******************************************************************************
	makeDir
	
	Creates a new directory path dPath.
	
	On success returns an empty string.
	On error returns an error message.
******************************************************************************/
string makeDir(string dPath)
{
	string res     = ""
	string dParent = ""  
	
	// see if the directory already exists
	if (isDirectory(dPath))
	{
		return("Directory already exists!")
	}
	
	// get name of parent directory
	dParent = getParentDirectory(dPath)
	
	// check to see if parent exists
	if ((!isDirectory(dParent)) && (!null dParent))
	{
		// recurse
		res = makeDir(dParent)
		
	}
	
	if ((isDirectory(dParent)) || (dParent == null))
	{
		// parent directory exists so we can create dPath using mkdir
		// trap errors
		noError
		
		mkdir(dPath)
		
		res = lastError
	}
	
	return(res)
}




sitemap