boolean locked = fptr.lock();
try {
fptr.checkCharReadable(context);
if (rs.isNil() && _limit < 0) {
str = fptr.readAll(context, 0, context.nil);
if (((RubyString) str).size() == 0) return context.nil;
} else if (_limit == 0) {
return RubyString.newEmptyString(runtime, fptr.readEncoding(runtime));
} else if (
rs == runtime.getGlobalVariables().getDefaultSeparator()