1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-31 17:02:12 +03:00

Add copydir() function because xcopy doesn't work in XP without a

window.
This commit is contained in:
Bruce Momjian
2003-05-15 17:59:17 +00:00
parent bee0ac67ee
commit 09aad5a3a6
4 changed files with 55 additions and 10 deletions

44
src/port/copydir.c Normal file
View File

@@ -0,0 +1,44 @@
/*
* While "xcopy /e /i /q" works fine for copying directories, on Windows XP
* it requires an Window handle which prevents it from working when invoked
* as a service.
*/
#include "postgres.h"
int
copydir(char *fromdir,char *todir)
{
DIR *xldir;
struct dirent *xlde;
char fromfl[MAXPGPATH];
char tofl[MAXPGPATH];
if (mkdir(todir) != 0)
{
elog(ERROR, "could not make directory '%s'",todir);
return 1;
}
xldir = opendir(fromdir);
if (xldir == NULL)
{
closedir(xldir);
elog(ERROR, "could not open directory '%s'",fromdir);
return 1;
}
while ((xlde = readdir(xldir)) != NULL)
{
snprintf(fromfl, MAXPGPATH, "%s/%s", fromdir, xlde->d_name);
snprintf(tofl, MAXPGPATH, "%s/%s", todir, xlde->d_name);
if (CopyFile(fromfl,tofl,TRUE) < 0)
{
closedir(xldir);
elog(ERROR,"could not create file %s\n",todir);
return 1;
}
}
closedir(xldir);
return 0;
}