Skip to content

Commit 7370481

Browse files
committed
---
yaml --- r: 146541 b: refs/heads/try2 c: 5e6bbc6 h: refs/heads/master i: 146539: 6f1cdb4 v: v3
1 parent 9fdbc34 commit 7370481

File tree

9 files changed

+135
-145
lines changed

9 files changed

+135
-145
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: b545751597a8cdeee4554338318f0ed6339634fd
8+
refs/heads/try2: 5e6bbc6bfa82f3ad0a014df24b40cbc042f24035
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/librustuv/file.rs

Lines changed: 32 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -95,27 +95,6 @@ impl FsRequest {
9595
}
9696
}
9797

98-
pub fn close(loop_: &Loop, fd: c_int, sync: bool) -> Result<(), UvError> {
99-
if sync {
100-
execute_nop(|req, cb| unsafe {
101-
uvll::uv_fs_close(loop_.handle, req, fd, cb)
102-
})
103-
} else {
104-
unsafe {
105-
let req = uvll::malloc_req(uvll::UV_FS);
106-
uvll::uv_fs_close(loop_.handle, req, fd, close_cb);
107-
return Ok(());
108-
}
109-
110-
extern fn close_cb(req: *uvll::uv_fs_t) {
111-
unsafe {
112-
uvll::uv_fs_req_cleanup(req);
113-
uvll::free_req(req);
114-
}
115-
}
116-
}
117-
}
118-
11998
pub fn mkdir(loop_: &Loop, path: &CString, mode: c_int)
12099
-> Result<(), UvError>
121100
{
@@ -240,10 +219,12 @@ impl FsRequest {
240219
pub fn utime(loop_: &Loop, path: &CString, atime: u64, mtime: u64)
241220
-> Result<(), UvError>
242221
{
222+
// libuv takes seconds
223+
let atime = atime as libc::c_double / 1000.0;
224+
let mtime = mtime as libc::c_double / 1000.0;
243225
execute_nop(|req, cb| unsafe {
244226
uvll::uv_fs_utime(loop_.handle, req, path.with_ref(|p| p),
245-
atime as libc::c_double, mtime as libc::c_double,
246-
cb)
227+
atime, mtime, cb)
247228
})
248229
}
249230

@@ -368,12 +349,12 @@ impl FileWatcher {
368349
}
369350

370351
fn base_read(&mut self, buf: &mut [u8], offset: i64) -> Result<int, IoError> {
371-
let _m = self.fire_missiles();
352+
let _m = self.fire_homing_missile();
372353
let r = FsRequest::read(&self.loop_, self.fd, buf, offset);
373354
r.map_err(uv_error_to_io_error)
374355
}
375356
fn base_write(&mut self, buf: &[u8], offset: i64) -> Result<(), IoError> {
376-
let _m = self.fire_missiles();
357+
let _m = self.fire_homing_missile();
377358
let r = FsRequest::write(&self.loop_, self.fd, buf, offset);
378359
r.map_err(uv_error_to_io_error)
379360
}
@@ -397,14 +378,26 @@ impl FileWatcher {
397378

398379
impl Drop for FileWatcher {
399380
fn drop(&mut self) {
400-
let _m = self.fire_missiles();
381+
let _m = self.fire_homing_missile();
401382
match self.close {
402383
rtio::DontClose => {}
403384
rtio::CloseAsynchronously => {
404-
FsRequest::close(&self.loop_, self.fd, false);
385+
unsafe {
386+
let req = uvll::malloc_req(uvll::UV_FS);
387+
uvll::uv_fs_close(self.loop_.handle, req, self.fd, close_cb);
388+
}
389+
390+
extern fn close_cb(req: *uvll::uv_fs_t) {
391+
unsafe {
392+
uvll::uv_fs_req_cleanup(req);
393+
uvll::free_req(req);
394+
}
395+
}
405396
}
406397
rtio::CloseSynchronously => {
407-
FsRequest::close(&self.loop_, self.fd, true);
398+
execute_nop(|req, cb| unsafe {
399+
uvll::uv_fs_close(self.loop_.handle, req, self.fd, cb)
400+
});
408401
}
409402
}
410403
}
@@ -439,15 +432,15 @@ impl rtio::RtioFileStream for FileWatcher {
439432
self_.seek_common(0, SEEK_CUR)
440433
}
441434
fn fsync(&mut self) -> Result<(), IoError> {
442-
let _m = self.fire_missiles();
435+
let _m = self.fire_homing_missile();
443436
FsRequest::fsync(&self.loop_, self.fd).map_err(uv_error_to_io_error)
444437
}
445438
fn datasync(&mut self) -> Result<(), IoError> {
446-
let _m = self.fire_missiles();
439+
let _m = self.fire_homing_missile();
447440
FsRequest::datasync(&self.loop_, self.fd).map_err(uv_error_to_io_error)
448441
}
449442
fn truncate(&mut self, offset: i64) -> Result<(), IoError> {
450-
let _m = self.fire_missiles();
443+
let _m = self.fire_homing_missile();
451444
let r = FsRequest::truncate(&self.loop_, self.fd, offset);
452445
r.map_err(uv_error_to_io_error)
453446
}
@@ -482,10 +475,6 @@ mod test {
482475
// write
483476
let result = FsRequest::write(l, fd, "hello".as_bytes(), -1);
484477
assert!(result.is_ok());
485-
486-
// close
487-
let result = FsRequest::close(l, fd, true);
488-
assert!(result.is_ok());
489478
}
490479

491480
{
@@ -505,15 +494,10 @@ mod test {
505494
assert!(nread > 0);
506495
let read_str = str::from_utf8(read_mem.slice(0, nread as uint));
507496
assert_eq!(read_str, ~"hello");
508-
509-
// close
510-
let result = FsRequest::close(l, fd, true);
511-
assert!(result.is_ok());
512-
513-
// unlink
514-
let result = FsRequest::unlink(l, &path_str.to_c_str());
515-
assert!(result.is_ok());
516497
}
498+
// unlink
499+
let result = FsRequest::unlink(l, &path_str.to_c_str());
500+
assert!(result.is_ok());
517501
}
518502
}
519503
@@ -570,12 +554,14 @@ mod test {
570554
let path = &"./tmp/double_create_dir".to_c_str();
571555
let mode = S_IWUSR | S_IRUSR;
572556
557+
let result = FsRequest::stat(l, path);
558+
assert!(result.is_err(), "{:?}", result);
573559
let result = FsRequest::mkdir(l, path, mode as c_int);
574-
assert!(result.is_ok());
560+
assert!(result.is_ok(), "{:?}", result);
575561
let result = FsRequest::mkdir(l, path, mode as c_int);
576-
assert!(result.is_err());
562+
assert!(result.is_err(), "{:?}", result);
577563
let result = FsRequest::rmdir(l, path);
578-
assert!(result.is_ok());
564+
assert!(result.is_ok(), "{:?}", result);
579565
}
580566
}
581567

0 commit comments

Comments
 (0)