rem: if (status >= 0) status = B_OK; return status;
add: if (status < 0) return status; return (status >= (int)bufferSize ? bufferSize : status + 1);
context: _user_read_link(int fd, const char *userPath, char *userBuffer, size_t bufferSize){	char path[SYS_MAX_PATH_LEN + 1];	char buffer[SYS_MAX_PATH_LEN + 1];	int status;	if (!IS_USER_ADDRESS(userBuffer))		return B_BAD_ADDRESS;	if (userPath) {		if (!IS_USER_ADDRESS(userPath))			return B_BAD_ADDRESS;		status = user_strlcpy(path, userPath, SYS_MAX_PATH_LEN);		if (status < 0)			return status;		if (bufferSize > SYS_MAX_PATH_LEN)			bufferSize = SYS_MAX_PATH_LEN;		status = common_read_link(fd, path, buffer, bufferSize, false);	} else		status = common_read_link(fd, NULL, buffer, bufferSize, false);	if (status < B_OK)		return status;	// ToDo: think about buffer length and the return value at read_link()	status = user_strlcpy(userBuffer, buffer, bufferSize);	if (status >= 0)		status = B_OK;	return status;}