MCPcopy Create free account
hub / github.com/SmingHub/Sming / enumxattr

Method enumxattr

Sming/Libraries/Spiffs/src/FileMeta.cpp:45–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43}
44
45int SpiffsMetaBuffer::enumxattr(const AttributeEnumCallback& callback, void* buffer, size_t bufsize)
46{
47 size_t count{0};
48 AttributeEnum e{buffer, bufsize};
49
50 for(unsigned i = 0; i < unsigned(AttributeTag::User); ++i) {
51 auto tag = AttributeTag(i);
52 if(isDefaultValue(tag)) {
53 continue;
54 }
55 auto value = meta.getAttributePtr(tag);
56 if(value == nullptr) {
57 continue;
58 }
59 e.set(tag, value, getAttributeSize(tag));
60 ++count;
61 if(!callback(e)) {
62 return count;
63 }
64 }
65
66#if SPIFFS_USER_METALEN
67 for(unsigned i = 0; i < SPIFFS_USER_METALEN;) {
68 uint8_t tagIndex = user[i++];
69 uint8_t tagSize = user[i++];
70 if(tagIndex == 0xff && tagSize == 0xff) {
71 break;
72 }
73 e.set(AttributeTag(unsigned(AttributeTag::User) + tagIndex), &user[i], tagSize);
74 ++count;
75 if(!callback(e)) {
76 break;
77 }
78 i += tagSize;
79 }
80#endif
81
82 return count;
83}
84
85int SpiffsMetaBuffer::getxattr(AttributeTag tag, void* buffer, size_t size)
86{

Callers 1

fenumxattrMethod · 0.80

Calls 2

getAttributePtrMethod · 0.80
setMethod · 0.45

Tested by

no test coverage detected