Skip to content

Support QNX platform. #116

@thun-res

Description

@thun-res

platform: qnx700, aarch64, c++11 support (POSIX support)

"Operating system currently not supported!"
And It looks like the 'struct dirent' has no 'd_type'
I try to modify:

filesystem.hpp:

...
#elif defined(__QNX__)
#define GHC_OS_QNX
#else
#error "Operating system currently not supported!"
#endif
...

...
      void copyToDirEntry()
        {
            _dir_entry._symlink_status.permissions(perms::unknown);
#ifdef GHC_OS_QNX
            _dir_entry._status.type(file_type::none);
            _dir_entry._status.permissions(perms::unknown);
            _dir_entry._symlink_status.type(file_type::unknown);
#else
            switch (_entry->d_type) {
            case DT_BLK:
                _dir_entry._symlink_status.type(file_type::block);
                break;
            case DT_CHR:
                _dir_entry._symlink_status.type(file_type::character);
                break;
            case DT_DIR:
                _dir_entry._symlink_status.type(file_type::directory);
                break;
            case DT_FIFO:
                _dir_entry._symlink_status.type(file_type::fifo);
                break;
            case DT_LNK:
                _dir_entry._symlink_status.type(file_type::symlink);
                break;
            case DT_REG:
                _dir_entry._symlink_status.type(file_type::regular);
                break;
            case DT_SOCK:
                _dir_entry._symlink_status.type(file_type::socket);
                break;
            default:
                _dir_entry._symlink_status.type(file_type::unknown);
                break;
            }
            if (_entry->d_type != DT_LNK) {
                _dir_entry._status = _dir_entry._symlink_status;
            } else {
                _dir_entry._status.type(file_type::none);
                _dir_entry._status.permissions(perms::unknown);
            }
#endif
            _dir_entry._file_size = static_cast<uintmax_t>(-1);
            _dir_entry._hard_link_count = static_cast<uintmax_t>(-1);
            _dir_entry._last_write_time = 0;
        }
...

I don’t know if the changes are correct, but the compilation passed.

thanks.

Metadata

Metadata

Assignees

Labels

POSIXPOSIX type backend is affectedavailable on masterFix is done on master branch, issue closed on next releaseenhancementNew feature or request

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions