X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=linux-tests%2Fxattrtest.c;fp=linux-tests%2Fxattrtest.c;h=14df34ac4161d72912a628cae2fb2f99efe57abb;hb=4a96d43bb566f00596a31a41c535cabbf52d4f20;hp=0000000000000000000000000000000000000000;hpb=523109e39ed14c0153c7947ad7a8f31a0917df93;p=yaffs2.git diff --git a/linux-tests/xattrtest.c b/linux-tests/xattrtest.c new file mode 100644 index 0000000..14df34a --- /dev/null +++ b/linux-tests/xattrtest.c @@ -0,0 +1,103 @@ +#include +#include +#include +#include +#include +#include + + +static void print_xattrib_val(const char *path, const char *name) +{ + char buffer[100]; + int n; + + n = getxattr(path,name,buffer,sizeof(buffer)); + if(n >= 0){ + uint8_t *b = (uint8_t *)buffer; + + printf("%d bytes:",n); + while(n > 0){ + printf("[%02X]",*b); + b++; + n--; + } + printf("\n"); + } else + printf(" Novalue result %d\n",n); +} + +static void list_xattr(const char *path) +{ + char list[1000]; + int n=0; + int list_len; + int len; + + list_len = listxattr(path,list,sizeof(list)); + printf("xattribs for %s, result is %d\n",path,list_len); + while(n < list_len){ + len = strlen(list + n); + printf("\"%s\" value ",list+n); + print_xattrib_val(path,list + n); + n += (len + 1); + } + printf("end\n"); + +} + +void basic_xattr_test(const char *mountpt) +{ + char name[100]; + int h; + int result; + int val1; + int valread; + + + strcpy(name,mountpt); + strcat(name,"/"); + strcat(name,"xfile"); + + unlink(name); + h = open(name,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); + close(h); + + printf("Start\n"); + list_xattr(name); + + printf("Add an attribute\n"); + val1 = 0x123456; + result = setxattr(name,"foo",&val1,sizeof(val1),0); + printf("wrote attribute foo: result %d\n",result); + list_xattr(name); + printf("Add an attribute\n"); + val1 = 0x7890; + result = setxattr(name,"bar",&val1,sizeof(val1),0); + printf("wrote attribute bar: result %d\n",result); + list_xattr(name); + + printf("Get non-existanrt attribute\n"); + print_xattrib_val(name,"not here"); + + printf("Delete non existing attribute\n"); + removexattr(name,"not here"); + list_xattr(name); + + printf("Remove foo\n"); + removexattr(name,"foo"); + list_xattr(name); + + printf("Remove bar\n"); + removexattr(name,"bar"); + list_xattr(name); + +} + + +int random_seed; +int simulate_power_failure; + +int main(int argc, char *argv[]) +{ + basic_xattr_test("/mnt/"); +}