mirror of https://github.com/postgres/postgres
parent
bee0ac67ee
commit
09aad5a3a6
@ -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; |
||||||
|
} |
Loading…
Reference in new issue