rem: return EINVAL;
add: return FS_EINVAL;
context: do_read_attr(int argc, char **argv){    char *attribute,*buffer;    size_t len = 256;    int i, err;    if (cur_fd < 0) {        printf("no file open! (open or create one with open or make)\n");        return EINVAL;    }	if (argc < 2) {        printf("usage: rdattr <attribute name> [bytes to write]\n");		return EINVAL;	}	attribute = argv[1];    if (argv[2] && isdigit(*argv[2]))        len = strtoul(argv[2], NULL, 0);	if (len < 0) {		printf("invalid length for write attribute!\n");		return EINVAL;	}    buffer = (char*)malloc(len);    if (buffer == NULL) {        printf("no memory for write buffer of %lu bytes\n", len);        return ENOMEM;    }	for (i = 0; (size_t)i < len; i++)		buffer[i] = (char)0xff;    err = sys_read_attr(1, cur_fd, attribute, 'CSTR', buffer, len, 0);    if (err >= 0)        hexdump(buffer, err < 512 ? err : 512);    free(buffer);    printf("read read %lu bytes and returned %d (%s)\n", len, err, strerror(err));	return (err < 0 ? err : 0);}