diff -r d44ed75822e7 -r ec661baf433a src/FileAttributeFinder.h --- a/src/FileAttributeFinder.h Wed Jan 16 17:23:05 2019 +0100 +++ b/src/FileAttributeFinder.h Wed Jan 16 17:48:06 2019 +0100 @@ -82,8 +82,12 @@ virtual vector toMetadata(const RequestedField& field) override { if (field.group == RequestedField::GROUP_FILE) { - if (field.name == FIELD_SIZE) return { AttributeMetadata{field.name, TypeId::INTEGER}}; - else return { AttributeMetadata{field.name, TypeId::STRING}}; + vector metadata; + for (string_t alias : field.getAliases()) { + if (field.name == FIELD_SIZE) metadata.push_back(AttributeMetadata{alias, TypeId::INTEGER}); + else metadata.push_back(AttributeMetadata{alias, TypeId::STRING}); + } + return metadata; } else { return {}; } @@ -100,28 +104,30 @@ virtual void writeField(RelationalWriter* writer, const RequestedField& field) override { if (field.group == RequestedField::GROUP_FILE) { - if (field.name == FIELD_NAME) { - writer->writeAttribute(currentFile.filename().wstring()); - } else if (field.name == FIELD_PATH_ORIGINAL) { - writer->writeAttribute(currentFile.wstring()); - } else if (field.name == FIELD_PATH_ABSOLUTE) { - writer->writeAttribute(fs::absolute(currentFile).wstring()); - } else if (field.name == FIELD_PATH_CANONICAL) { - writer->writeAttribute(fs::canonical(currentFile).wstring()); - } else if (field.name == FIELD_TYPE) { - writer->writeAttribute(getType(currentFile)); - } else if (field.name == FIELD_SIZE) { - integer_t size = fs::is_regular_file(currentFile) ? fs::file_size(currentFile) : 0; - writer->writeAttribute(&size, typeid (size)); - } else if (field.name == FIELD_OWNER) { - if (currentOwner.empty()) fetchOwner(currentFile, currentOwner, currentGroup); - writer->writeAttribute(currentOwner); - } else if (field.name == FIELD_GROUP) { - if (currentOwner.empty()) fetchOwner(currentFile, currentOwner, currentGroup); - writer->writeAttribute(currentGroup); - } else { - // TODO: should not happend; check supported attributes in toMetadata()? - writer->writeAttribute(L""); + for (string_t alias : field.getAliases()) { + if (field.name == FIELD_NAME) { + writer->writeAttribute(currentFile.filename().wstring()); + } else if (field.name == FIELD_PATH_ORIGINAL) { + writer->writeAttribute(currentFile.wstring()); + } else if (field.name == FIELD_PATH_ABSOLUTE) { + writer->writeAttribute(fs::absolute(currentFile).wstring()); + } else if (field.name == FIELD_PATH_CANONICAL) { + writer->writeAttribute(fs::canonical(currentFile).wstring()); + } else if (field.name == FIELD_TYPE) { + writer->writeAttribute(getType(currentFile)); + } else if (field.name == FIELD_SIZE) { + integer_t size = fs::is_regular_file(currentFile) ? fs::file_size(currentFile) : 0; + writer->writeAttribute(&size, typeid (size)); + } else if (field.name == FIELD_OWNER) { + if (currentOwner.empty()) fetchOwner(currentFile, currentOwner, currentGroup); + writer->writeAttribute(currentOwner); + } else if (field.name == FIELD_GROUP) { + if (currentOwner.empty()) fetchOwner(currentFile, currentOwner, currentGroup); + writer->writeAttribute(currentGroup); + } else { + // TODO: should not happend; check supported attributes in toMetadata()? + writer->writeAttribute(L""); + } } } }