Skip to content

Commit cac44b1

Browse files
committed
---
yaml --- r: 91611 b: refs/heads/auto c: 5e6bbc6 h: refs/heads/master i: 91609: 285925d 91607: 41a2126 v: v3
1 parent 793f11a commit cac44b1

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
@@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1313
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1414
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1515
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16-
refs/heads/auto: b545751597a8cdeee4554338318f0ed6339634fd
16+
refs/heads/auto: 5e6bbc6bfa82f3ad0a014df24b40cbc042f24035
1717
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1818
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1919
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/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)