log.fine("EFile.open_compressed "+file_name);
}
boolean append = (mode & EFILE_MODE_APPEND) > 0;
if ((mode & ~(EFILE_MODE_APPEND | EFILE_MODE_READ_WRITE | EFILE_MODE_EXCL)) > 0) {
log.warning("ONLY APPEND AND READ_WRITE OPTIONS ARE IMPLEMENTED! mode="+mode);
throw new NotImplemented();
}
try {
if (compressed) {
if ((mode & EFILE_MODE_READ_WRITE) == EFILE_MODE_READ_WRITE && append) {
posix_errno = Posix.EINVAL;
return;
}
log.warning("COMPRESSED NOT IMPLEMENTED!");
throw new NotImplemented();
} else {
if ((mode & EFILE_MODE_EXCL) == EFILE_MODE_EXCL) {
file.createNewFile();
}
switch (mode & EFILE_MODE_READ_WRITE) {
case EFILE_MODE_READ: {
FileInputStream fo = new FileInputStream(file);
fd = fo.getChannel();
res_fd = getFDnumber(fo.getFD());
break;
}
case EFILE_MODE_WRITE: {
FileOutputStream fo = new FileOutputStream(file);
fd = fo.getChannel();
res_fd = getFDnumber(fo.getFD());
break;
}
case EFILE_MODE_READ_WRITE: {
RandomAccessFile rafff;
fd = (rafff=new RandomAccessFile(file,"rw")).getChannel();
res_fd = getFDnumber(rafff.getFD());
break;
}
default:
throw new NotImplemented();
}//switch
EFile.this.name = file;
result_ok = true;
}