1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//! Multi-instance cursor coordination via per-tty file lock (`-c` mode).
//!
//! FR-028/FR-029, AD-011, Clarifications Q6.
//!
//! Uses the `fd-lock` crate's portable lock primitive. On Unix this is
//! `fcntl(F_SETLK)`; on Windows it's `LockFileEx`. v0.1.0 disables `-c` on
//! Windows entirely with a stderr diagnostic at the call site (FR-028).
use RwLock;
use ;
use PathBuf;
/// Compute the per-tty lock-file path per FR-029.
///
/// Resolution order: `$TMPDIR` > `$TMP` > `std::env::temp_dir()`. The filename
/// incorporates the tty device identifier (Unix only) so each tty gets its
/// own lock and multi-user systems can safely share `/tmp`.
/// RAII lock guard. Releases the lock when dropped.
/// Acquire the per-tty cursor lock for the duration of the returned guard.
///
/// Blocks via `fd-lock` until exclusive access is available.
///
/// # Errors
///
/// Returns the underlying I/O error if the lock file cannot be opened.