#include <iostream>
#include <map>
#include <cstring>
using namespace std;
struct Xattr_value
{
map<std::string, std::string> xattr_values;
void *value;
map<std::string, size_t> size;
int flags;
};
map<std::string, struct Xattr_value *> xattr_list;
void setxattr(const char *path, const char *name, const char *value, size_t size, int flags){
std::string str_path(path);
std::string str_name(name);
std::string str_value(value);
if ( (xattr_list.find(str_path) != xattr_list.end()) ){
printf ("setxattr. Path exist\n");
xattr_list[str_path]->xattr_values[str_name] = str_value;
xattr_list[str_path]->size[str_name] = size;
}else{
printf ("setxattr. Path NO exist\n");
Xattr_value *thisval = new Xattr_value;
thisval->xattr_values[str_name] = str_value;
thisval->size[str_name] = size;
//thisval->flags = flags;
xattr_list[str_path] = thisval;
}
}
void getxattr(const char *path, const char *name, char *value, size_t size){
std::string str_path(path);
std::string str_name(name);
if ( (xattr_list.find(str_path) != xattr_list.end()) ){
if ( xattr_list[str_path]->xattr_values.find(str_name) != xattr_list[str_path]->xattr_values.end() ){
size = xattr_list[str_path]->size[str_name];
value = (char *)malloc(6);
value = "test";
printf("Now I st the value %s\n", value);
//strcpy(value,xattr_list[str_path]->xattr_values[str_name].c_str());
}else{ printf("No name found on getxattr\n"); }
}else{ printf("No path found on getxattr\n"); }
}
int main() {
printf("1\n");
const char *path = "path";
char *name = "one key name";
const char *value = "this 1";
size_t size = 6;
int flags = 1;
setxattr(path, name, value, size, flags);
const char *name2 = "second key name";
const char *value2 = "this 2";
setxattr(path, name2, value2, size, flags);
char *get_value;
getxattr(path, name, get_value, size);
get_value = (char *)malloc(size);
printf("Now I get the value %s\n", get_value);
}