void big_xattr_test(const char *mountpt) { char name[100]; int h; int result; char val[1000]; yaffs_StartUp(); yaffs_mount(mountpt); strcpy(name,mountpt); strcat(name,"/"); strcat(name,"xfile"); yaffs_unlink(name); h = yaffs_open(name,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); yaffs_close(h); printf("Start\n"); list_xattr(name); printf("Add a large attribute\n"); memset(val,0x1,sizeof(val)); result = yaffs_setxattr(name,"aaa",val,200,0); printf("wrote attribute aaa: result %d\n",result); list_xattr(name); printf("Add a large attribute\n"); memset(val,0x2,sizeof(val)); result = yaffs_setxattr(name,"bbb",val,1000,0); printf("wrote attribute bbb: result %d\n",result); list_xattr(name); printf("Replace attribute\n"); memset(val,0x3,sizeof(val)); result = yaffs_setxattr(name,"aaa",val,1000,0); printf("wrote attribute aaa: result %d\n",result); list_xattr(name); }
void basic_xattr_test(const char *mountpt) { char name[100]; int h; int result; int val1; yaffs_StartUp(); yaffs_mount(mountpt); strcpy(name,mountpt); strcat(name,"/"); strcat(name,"xfile"); yaffs_unlink(name); h = yaffs_open(name,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); yaffs_close(h); printf("Start\n"); list_xattr(name); printf("Add an attribute\n"); val1 = 0x123456; result = yaffs_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 = yaffs_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"); yaffs_removexattr(name,"not here"); list_xattr(name); printf("Remove foo\n"); yaffs_removexattr(name,"foo"); list_xattr(name); printf("Remove bar\n"); yaffs_removexattr(name,"bar"); list_xattr(name); }
int main(int argc, char** argv) { int mode_l = 0, mode_w = 0, mode_d = 0, flag_s = 0; char c = 0; while((c = getopt(argc, argv, "hvlwds")) != -1) { switch(c) { case 'h': print_help(); return 0; case 'v': print_version(); return 0; case 'l': mode_l++; break; // [l]ist all entries case 'w': mode_w++; break; // [w]rite one entry case 'd': mode_d++; break; // [d]elete one entry case 's': flag_s++; break; // act on [s]ymlink default: print_help(); return 0; } } if(mode_l + mode_w + mode_d != 1) { printf("ERROR: invalid combination of arguments\n"); print_help(); return 1; } // list extended attributes if(mode_l) { int i = optind; for(; i < argc; i++) { list_xattr(argv[i], flag_s); } return 0; } // write extended attribute to file if(mode_w) { int i = optind + 2; for(; i < argc; i++) { write_xattr(argv[optind], argv[optind + 1], argv[i], flag_s); } return 0; } // delete extended attribute from file if(mode_d) { int i = optind + 1; for(; i < argc; i++) { delete_xattr(argv[optind], argv[i], flag_s); } return 0; } print_help(); return 0; }