package org.jerlang.kernel.file;
import jnr.posix.POSIX;
import jnr.posix.POSIXFactory;
import org.jerlang.erts.erlang.Error;
import org.jerlang.type.Atom;
import org.jerlang.type.List;
import org.jerlang.type.Str;
import org.jerlang.type.Term;
import org.jerlang.type.Tuple;
public class FileGetCwd {
private static final Atom enotsup = Atom.of("enotsup");
private static final Atom error = Atom.of("error");
private static final Atom ok = Atom.of("ok");
private static final POSIX posix;
static {
posix = POSIXFactory.getPOSIX();
}
public static Term dispatch(List params) {
switch (params.length()) {
case 0:
return get_cwd_0();
case 1:
return get_cwd_1(params.head().toStr());
default:
throw Error.badarg;
}
}
/**
* http://www.erlang.org/doc/man/file.html#get_cwd-0
*/
public static Term get_cwd_0() {
return Tuple.of(ok, Str.of(posix.getcwd()));
}
/**
* http://www.erlang.org/doc/man/file.html#get_cwd-1
*/
public static Term get_cwd_1(Str drive) {
return Tuple.of(error, enotsup);
}
}