Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commited81839

Browse files
committed
Improve error reporting in remote backup
1 parentcec20cc commited81839

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

‎src/data.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,7 @@ get_gz_error(gzFile gzf, int errnum)
10521052
intgz_errnum;
10531053
constchar*errmsg;
10541054

1055-
errmsg=gzerror(gzf,&gz_errnum);
1055+
errmsg=fio_gzerror(gzf,&gz_errnum);
10561056
if (gz_errnum==Z_ERRNO)
10571057
returnstrerror(errnum);
10581058
else

‎src/parsexlog.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,7 @@ get_gz_error(gzFile gzf)
906906
interrnum;
907907
constchar*errmsg;
908908

909-
errmsg=gzerror(gzf,&errnum);
909+
errmsg=fio_gzerror(gzf,&errnum);
910910
if (errnum==Z_ERRNO)
911911
returnstrerror(errno);
912912
else

‎src/utils/file.c‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,7 @@ typedef struct fioGZFile
740740
{
741741
z_streamstrm;
742742
intfd;
743+
interrnum;
743744
boolcompress;
744745
booleof;
745746
Bytefbuf[ZLIB_BUFFER_SIZE];
@@ -754,7 +755,7 @@ fio_gzopen(char const* path, char const* mode, int level, fio_location location)
754755
fioGZFile*gz= (fioGZFile*)malloc(sizeof(fioGZFile));
755756
memset(&gz->strm,0,sizeof(gz->strm));
756757
gz->eof=0;
757-
758+
gz->errnum=Z_OK;
758759
if (strcmp(mode,PG_BINARY_W)==0)/* compress */
759760
{
760761
gz->strm.next_out=gz->buf;
@@ -838,6 +839,7 @@ fio_gzread(gzFile f, void *buf, unsigned size)
838839
}
839840
elseif (rc!=Z_OK)
840841
{
842+
gz->errnum=rc;
841843
return-1;
842844
}
843845
if (gz->strm.avail_out!=size)
@@ -968,6 +970,21 @@ int fio_gzeof(gzFile f)
968970
}
969971
}
970972

973+
constchar*fio_gzerror(gzFilef,int*errnum)
974+
{
975+
if ((size_t)f&FIO_GZ_REMOTE_MARKER)
976+
{
977+
fioGZFile*gz= (fioGZFile*)((size_t)f-FIO_GZ_REMOTE_MARKER);
978+
if (errnum)
979+
*errnum=gz->errnum;
980+
returngz->strm.msg;
981+
}
982+
else
983+
{
984+
returngzerror(f,errnum);
985+
}
986+
}
987+
971988
z_off_tfio_gzseek(gzFilef,z_off_toffset,intwhence)
972989
{
973990
Assert(!((size_t)f&FIO_GZ_REMOTE_MARKER));

‎src/utils/file.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ typedef enum
4949
#definePAGE_CHECKSUM_MISMATCH (-256)
5050

5151
#defineSYS_CHECK(cmd) do if ((cmd) < 0) { fprintf(stderr, "%s:%d: (%s) %s\n", __FILE__, __LINE__, #cmd, strerror(errno)); exit(EXIT_FAILURE); } while (0)
52-
#defineIO_CHECK(cmd,size) do { int _rc = (cmd); if (_rc != (size)) { fprintf(stderr, "%s:%d: proceeds %d bytes instead of %d: %s\n", __FILE__, __LINE__, _rc, (int)(size), _rc< 0 ? "end of data" : strerror(errno)); exit(EXIT_FAILURE); } } while (0)
52+
#defineIO_CHECK(cmd,size) do { int _rc = (cmd); if (_rc != (size))if (remote_agent){ fprintf(stderr, "%s:%d: proceeds %d bytes instead of %d: %s\n", __FILE__, __LINE__, _rc, (int)(size), _rc>= 0 ? "end of data" : strerror(errno)); exit(EXIT_FAILURE); } else elog(ERROR, "Communication error: %s", _rc >= 0 ? "end of data" : strerror(errno)); } while (0)
5353

5454
typedefstruct
5555
{
@@ -111,6 +111,7 @@ extern int fio_gzread(gzFile f, void *buf, unsigned size);
111111
externintfio_gzwrite(gzFilef,voidconst*buf,unsignedsize);
112112
externintfio_gzeof(gzFilef);
113113
externz_off_tfio_gzseek(gzFilef,z_off_toffset,intwhence);
114+
externconstchar*fio_gzerror(gzFilefile,int*errnum);
114115
#endif
115116

116117
#endif

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp