From b22528bac4a23b1e76e5824fbbb7ca710d7aa73d Mon Sep 17 00:00:00 2001 From: Antonio SJ Musumeci Date: Sat, 5 Sep 2015 21:48:15 -0400 Subject: [PATCH] add user.mergerfs.version xattr --- Makefile | 11 +++++++++-- src/getxattr.cpp | 10 ++++++++++ src/listxattr.cpp | 3 ++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e6f91996..dbc69382 100644 --- a/Makefile +++ b/Makefile @@ -106,7 +106,7 @@ help: @echo "usage: make" @echo "make XATTR_AVAILABLE=0 - to build program without xattrs functionality (auto discovered otherwise)" -$(TARGET): obj/obj-stamp $(OBJ) +$(TARGET): src/version.hpp obj/obj-stamp $(OBJ) $(CXX) $(CFLAGS) $(OBJ) -o $@ $(LDFLAGS) clonepath: $(TARGET) @@ -118,6 +118,13 @@ changelog: authors: $(GIT) log --format='%aN <%aE>' | sort -f | uniq > AUTHORS +src/version.hpp: + $(eval VERSION := $(shell $(GIT) describe --always --tags --dirty)) + @echo "#ifndef _VERSION_HPP" > src/version.hpp + @echo "#define _VERSION_HPP" >> src/version.hpp + @echo "static const char MERGERFS_VERSION[] = \"$(VERSION)\";" >> src/version.hpp + @echo "#endif" >> src/version.hpp + obj/obj-stamp: $(MKDIR) -p obj $(TOUCH) $@ @@ -163,7 +170,7 @@ $(MANPAGE): README.md man: $(MANPAGE) -tarball: clean man changelog authors +tarball: clean man changelog authors src/version.hpp $(eval VERSION := $(shell $(GIT) describe --always --tags --dirty)) $(eval VERSION := $(subst -,_,$(VERSION))) $(eval FILENAME := $(TARGET)-$(VERSION)) diff --git a/src/getxattr.cpp b/src/getxattr.cpp index d5e9e828..d3105e29 100644 --- a/src/getxattr.cpp +++ b/src/getxattr.cpp @@ -40,6 +40,7 @@ #include "rwlock.hpp" #include "xattr.hpp" #include "str.hpp" +#include "version.hpp" using std::string; using std::vector; @@ -134,6 +135,13 @@ _getxattr_controlfile_policies(const Config &config, attrvalue += ',' + (string)Policy::policies[i]; } +static +void +_getxattr_controlfile_version(string &attrvalue) +{ + attrvalue = MERGERFS_VERSION; +} + static int _getxattr_controlfile(const Config &config, @@ -158,6 +166,8 @@ _getxattr_controlfile(const Config &config, _getxattr_controlfile_minfreespace(config,attrvalue); else if(attr[2] == "policies") _getxattr_controlfile_policies(config,attrvalue); + else if(attr[2] == "version") + _getxattr_controlfile_version(attrvalue); break; case 4: diff --git a/src/listxattr.cpp b/src/listxattr.cpp index 2fc9156f..4d8a1e54 100644 --- a/src/listxattr.cpp +++ b/src/listxattr.cpp @@ -53,7 +53,8 @@ _listxattr_controlfile(char *list, buildvector ("user.mergerfs.srcmounts") ("user.mergerfs.minfreespace") - ("user.mergerfs.policies"); + ("user.mergerfs.policies") + ("user.mergerfs.version"); xattrs.reserve(512); for(size_t i = 0; i < strs.size(); i++)