--- 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<AttributeMetadata> 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<AttributeMetadata> 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"");
+ }
}
}
}