]> granicus.if.org Git - postgresql/commitdiff
pg_basebackup: Error handling fixes.
authorRobert Haas <rhaas@postgresql.org>
Wed, 28 Mar 2012 16:19:22 +0000 (12:19 -0400)
committerRobert Haas <rhaas@postgresql.org>
Wed, 28 Mar 2012 16:21:23 +0000 (12:21 -0400)
Thomas Ogrisegg and Fujii Masao

src/bin/pg_basebackup/pg_basebackup.c

index 25c0a7893ac6b21ee114f0828f030d4cdf2f3bfd..e9fb2cc08dcf86572baa736d81c0419c4c0e9728 100644 (file)
@@ -410,6 +410,7 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
                                {
                                        fprintf(stderr, _("%s: could not write to compressed file \"%s\": %s\n"),
                                                        progname, filename, get_gz_error(ztarfile));
+                                       disconnect_and_exit(1);
                                }
                        }
                        else
@@ -423,21 +424,28 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
                                }
                        }
 
-                       if (strcmp(basedir, "-") == 0)
-                       {
 #ifdef HAVE_LIBZ
-                               if (ztarfile)
-                                       gzclose(ztarfile);
-#endif
+                       if (ztarfile != NULL)
+                       {
+                               if (gzclose(ztarfile) != 0)
+                               {
+                                       fprintf(stderr, _("%s: could not close compressed file \"%s\": %s\n"),
+                                                       progname, filename, get_gz_error(ztarfile));
+                                       disconnect_and_exit(1);
+                               }
                        }
                        else
-                       {
-#ifdef HAVE_LIBZ
-                               if (ztarfile != NULL)
-                                       gzclose(ztarfile);
 #endif
-                               if (tarfile != NULL)
-                                       fclose(tarfile);
+                       {
+                               if (strcmp(basedir, "-") != 0)
+                               {
+                                       if (fclose(tarfile) != 0)
+                                       {
+                                               fprintf(stderr, _("%s: could not close file \"%s\": %s\n"),
+                                                               progname, filename, strerror(errno));
+                                               disconnect_and_exit(1);
+                                       }
+                               }
                        }
 
                        break;
@@ -456,6 +464,7 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
                        {
                                fprintf(stderr, _("%s: could not write to compressed file \"%s\": %s\n"),
                                                progname, filename, get_gz_error(ztarfile));
+                               disconnect_and_exit(1);
                        }
                }
                else