-
Notifications
You must be signed in to change notification settings - Fork 914
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,7 @@ | |
import com.oracle.truffle.api.frame.VirtualFrame; | ||
import com.oracle.truffle.api.source.SourceSection; | ||
import jnr.constants.platform.Fcntl; | ||
import org.jruby.RubyEncoding; | ||
import org.jruby.truffle.runtime.RubyContext; | ||
import org.jruby.truffle.runtime.control.RaiseException; | ||
import org.jruby.truffle.runtime.core.RubyBasicObject; | ||
|
@@ -106,6 +107,22 @@ public int open(RubyString path, int mode, int permission) { | |
|
||
} | ||
|
||
|
||
@RubiniusPrimitive(name = "io_truncate", needsSelf = false) | ||
public static abstract class IOTruncatePrimitiveNode extends RubiniusPrimitiveNode { | ||
|
||
public IOTruncatePrimitiveNode(RubyContext context, SourceSection sourceSection) { | ||
super(context, sourceSection); | ||
} | ||
|
||
@Specialization | ||
public int truncate(RubyString path, int offset) { | ||
final String pathString = RubyEncoding.decodeUTF8(path.getByteList().getUnsafeBytes(), path.getByteList().getBegin(), path.getByteList().getRealSize()); | ||
return posix().truncate(pathString, offset); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
nirvdrum
Contributor
|
||
} | ||
|
||
} | ||
|
||
@RubiniusPrimitive(name = "io_fnmatch", needsSelf = false) | ||
public static abstract class IOFNMatchPrimitiveNode extends RubiniusPrimitiveNode { | ||
|
||
|
1 comment
on commit ae25618
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nirvdrum It looks like truncate is working, I think the spec failures are an issue in the size method.
I don't know if this is the cause of the issue you've reported, but the second argument to the POSIX call is the length, not the offset. You're passing a path, not a file descriptor, so there's no notion of position in the file.