#include <string.h>

#include "Desk.Filing.h"
#include "Desk.File.h"
#include "Desk.Error2.h"
#include "Desk.Debug.h"
#include "Desk.Str.h"



void	Desk_File_EnsureDirectory( const char* path)
{
char	path2[ 256];
char*	c;

strcpy( path2, path);

Desk_Debug3_Printf( Desk_error_PLACE "Desk_File_EnsureDirectory( '%s')\n", path);

if ( Desk_File_IsDirectory( path))	return;

c = Desk_Filing_FindLeafname( path2);
if ( c>path2)	{
	char	sep = c[-1];
	c[-1] = 0;
	Desk_File_EnsureDirectory( path2);
	c[-1] = sep;
	Desk_File_CreateDirectory( path2);
	Desk_Debug2_Printf( "Created directory '%s'\n", path2);
	}
}



void	Desk_File_EnsureParentDirectory( const char* filename)
{
char	dir[ 256];
char*	leaf = Desk_Filing_FindLeafname( filename);

Desk_Debug3_Printf( Desk_error_PLACE "Desk_File_EnsureParentDirectory( '%s')\n", filename);

if (leaf==filename)	Desk_Error2_HandleTextf( "Desk_File_EnsureParentDirectory:'%s' has no parent", filename);
Desk_Debug2_Printf( "EnsureParentDir '%s'\n", filename);
Desk_strncpy0( dir, filename, (leaf-filename) - 1);
Desk_File_EnsureDirectory( dir);
}
