Fix dup
This commit is contained in:
parent
4488cde338
commit
a68d5a5237
|
@ -114,12 +114,22 @@ pub fn dup(fd: usize) -> Result<usize> {
|
||||||
file
|
file
|
||||||
};
|
};
|
||||||
|
|
||||||
let scheme = {
|
let new_id = {
|
||||||
let schemes = scheme::schemes();
|
let scheme = {
|
||||||
let scheme = schemes.get(file.scheme).ok_or(Error::new(EBADF))?;
|
let schemes = scheme::schemes();
|
||||||
scheme.clone()
|
let scheme = schemes.get(file.scheme).ok_or(Error::new(EBADF))?;
|
||||||
|
scheme.clone()
|
||||||
|
};
|
||||||
|
scheme.dup(file.number)?
|
||||||
};
|
};
|
||||||
scheme.dup(file.number)
|
|
||||||
|
let contexts = context::contexts();
|
||||||
|
let context_lock = contexts.current().ok_or(Error::new(ESRCH))?;
|
||||||
|
let context = context_lock.read();
|
||||||
|
context.add_file(::context::file::File {
|
||||||
|
scheme: file.scheme,
|
||||||
|
number: new_id
|
||||||
|
}).ok_or(Error::new(EMFILE))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Register events for file
|
/// Register events for file
|
||||||
|
|
Loading…
Reference in a new issue