diff --git a/src/port/copydir.c b/src/port/copydir.c index 56bd3f941ba..ee404c8c06e 100644 --- a/src/port/copydir.c +++ b/src/port/copydir.c @@ -11,7 +11,7 @@ * as a service. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/copydir.c,v 1.23.2.2 2010/02/16 00:01:35 stark Exp $ + * $PostgreSQL: pgsql/src/port/copydir.c,v 1.23.2.3 2010/07/01 20:13:06 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -23,6 +23,7 @@ #include #include "storage/fd.h" +#include "miscadmin.h" /* * On Windows, call non-macro versions of palloc; we can't reference @@ -68,6 +69,9 @@ copydir(char *fromdir, char *todir, bool recurse) { struct stat fst; + /* If we got a cancel signal during the copy of the directory, quit */ + CHECK_FOR_INTERRUPTS(); + if (strcmp(xlde->d_name, ".") == 0 || strcmp(xlde->d_name, "..") == 0) continue; @@ -130,6 +134,9 @@ copy_file(char *fromfile, char *tofile) */ for (;;) { + /* If we got a cancel signal during the copy of the file, quit */ + CHECK_FOR_INTERRUPTS(); + nbytes = read(srcfd, buffer, COPY_BUF_SIZE); if (nbytes < 0) ereport(ERROR,