297d9f2032
At least one compiler (Borland) defines mode_t as just "short" which is signed. This breaks code like switch(archive_entry_filetype(e)) { case AE_IFREG: ... } if AE_IFREG and other constants have a longer signed type (int) because sign extension of the mode_t return type from archive_entry_filetype changes its value. Avoid the problem by ensuring the type of the constants matches mode_t. This change was originally made in commit a73acfbe (Fix for mode_t with signed types, 2009-11-07). Port it to the new libarchive snapshot.