diff options
author | Theodore Ts'o <tytso@mit.edu> | 2020-01-16 18:33:24 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2020-01-16 18:33:24 -0500 |
commit | 0670fc20df4a4bbbeb0edb30d82628ea30a80598 (patch) | |
tree | cda5773b8d8950866b8d50990a569b0d35b95b3f | |
parent | 43508a9f6ecb3dabfa563b3625961eb2a6ea6be4 (diff) | |
parent | f6c5ad97daf7b266d66987476da33d6dfe341b36 (diff) | |
download | e2fsprogs-0670fc20df4a4bbbeb0edb30d82628ea30a80598.tar.gz |
Merge branch 'maint' into next
-rw-r--r-- | debian/changelog | 9 | ||||
-rw-r--r-- | lib/et/error_message.c | 13 | ||||
-rw-r--r-- | lib/ext2fs/ext2_err.et.in | 3 | ||||
-rw-r--r-- | lib/ext2fs/imager.c | 3 |
4 files changed, 24 insertions, 4 deletions
diff --git a/debian/changelog b/debian/changelog index 221594477..b388f1231 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +e2fsprogs (1.45.5-2) unstable; urgency=medium + + * Fix com_err support on Hurd, which has POSIX E* error code starting at + 0x40000000. Otherwise the regression tests will fail since the + expected output for various error cases will not have the correct + error text. + + -- Theodore Y. Ts'o <tytso@mit.edu> Wed, 08 Jan 2020 15:58:44 -0500 + e2fsprogs (1.45.5-1) unstable; urgency=medium * New upstream feature diff --git a/lib/et/error_message.c b/lib/et/error_message.c index bd18be781..cd9f57f56 100644 --- a/lib/et/error_message.c +++ b/lib/et/error_message.c @@ -113,6 +113,11 @@ gettextf set_com_err_gettext(gettextf new_proc) return x; } +#ifdef __GNU__ +#define SYS_ERR_BASE 0x40000000 +#else +#define SYS_ERR_BASE 0 +#endif const char * error_message (errcode_t code) { @@ -124,14 +129,14 @@ const char * error_message (errcode_t code) offset = (int) (code & ((1<<ERRCODE_RANGE)-1)); table_num = code - offset; - if (!table_num) { + if (table_num == SYS_ERR_BASE) { #ifdef HAS_SYS_ERRLIST - if (offset < sys_nerr) - return(sys_errlist[offset]); + if (code < sys_nerr) + return(sys_errlist[code]); else goto oops; #else - cp = strerror(offset); + cp = strerror(code); if (cp) return(cp); else diff --git a/lib/ext2fs/ext2_err.et.in b/lib/ext2fs/ext2_err.et.in index b2ba71ad2..0c76fee64 100644 --- a/lib/ext2fs/ext2_err.et.in +++ b/lib/ext2fs/ext2_err.et.in @@ -545,4 +545,7 @@ ec EXT2_ET_INODE_CORRUPTED, ec EXT2_ET_EA_INODE_CORRUPTED, "Inode containing extended attribute value is corrupted" +ec EXT2_ET_NO_GDESC, + "Group descriptors not loaded" + end diff --git a/lib/ext2fs/imager.c b/lib/ext2fs/imager.c index 64a55be53..f7f8df423 100644 --- a/lib/ext2fs/imager.c +++ b/lib/ext2fs/imager.c @@ -201,6 +201,9 @@ errcode_t ext2fs_image_super_write(ext2_filsys fs, int fd, int j; #endif + if (fs->group_desc == NULL) + return EXT2_ET_NO_GDESC; + buf = malloc(fs->blocksize); if (!buf) return ENOMEM; |