lockf.rb 0.13.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07acab1cbd6394d179fafd3fed888bdb56f7bc52868a8557a6b2114500a409ca
4
- data.tar.gz: '0178e4e393991e7b3ab099ba2491aa7888fb30e1f096d785d4797f6bbb30a048'
3
+ metadata.gz: 05e204191db7552902307b79f09636be97f36fba053a89c5ab849c6dd0205830
4
+ data.tar.gz: 82167b478eae279325094a0ba29b8d75500dc6d0a53ea32fd24ed0ef200fa643
5
5
  SHA512:
6
- metadata.gz: 80e87c4f223f90db7ffb518dcf969342125c546b8d3a839af8a36086caeca67a7155b90953c883dab3f598c5f17d5d827b8fe72c2e53b841b6260a789fc6deeb
7
- data.tar.gz: ad79f9b41adb8ea5fd4a891eabd0f8488bfe5a5afd80a27ccacc81f2e06eae1bd7530fd74edb985f988aad559f59176ed61392e87829fb7d9e65395d23f99e7c
6
+ metadata.gz: 31b69f15f99e3a4b6f522de3b708130ee67ab3a3c5498df989e034bf281f0c02463f360d948150ca9cd562e85a9fd4a8d802d27dad6fa014e289abaa33c6f5d6
7
+ data.tar.gz: 8b9d9b5979cf813a0234054531e0fe4e6d7c7be83221f49540aeaec97d94347db851756fece830b4f711da42683d4195589f7d3578264a232d6aedd37d7d0377
data/.clang-format ADDED
@@ -0,0 +1,11 @@
1
+ BasedOnStyle: LLVM
2
+ IndentWidth: 2
3
+ SortIncludes: false
4
+ UseTab: Never
5
+ BreakBeforeBraces: Allman
6
+ AllowShortFunctionsOnASingleLine: Inline
7
+ AlwaysBreakAfterDefinitionReturnType: TopLevel
8
+ BreakBeforeBinaryOperators: All
9
+ BinPackArguments: false
10
+ AlignConsecutiveAssignments: true
11
+ AlwaysBreakAfterReturnType: None
data/.rubocop.yml CHANGED
@@ -18,4 +18,8 @@ Layout/ArgumentAlignment:
18
18
  ##
19
19
  # Options for all cops.
20
20
  AllCops:
21
- TargetRubyVersion: 2.7
21
+ TargetRubyVersion: 3.2
22
+ Include:
23
+ - lib/*.rb
24
+ - lib/**/*.rb
25
+ - test/*.rb
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
- gem "test-cmd.rb", github: "0x1eef/test-cmd.rb", tag: "v0.4.0"
data/README.md CHANGED
@@ -7,14 +7,6 @@ The
7
7
  function implements an advisory-mode lock that can be placed on select
8
8
  regions of a file, or on the entire contents of a file.
9
9
 
10
- [lockf(3)](https://man.freebsd.org/cgi/man.cgi?query=lockf&sektion=3)
11
- can synchronize access to a file between multiple processes, or
12
- synchronize access to a shared resource being accessed by multiple
13
- processes at the same time. When used with a shared resource,
14
- [lockf(3)](https://man.freebsd.org/cgi/man.cgi?query=lockf&sektion=3)
15
- can provide something similar to a mutex that works across multiple
16
- processes rather than multiple threads.
17
-
18
10
  ## Examples
19
11
 
20
12
  ### LockFile
@@ -43,7 +35,7 @@ end
43
35
  sleep(3)
44
36
  lockf.release
45
37
  Process.wait(pid)
46
- lockf.file.close
38
+ lockf.close
47
39
 
48
40
  ##
49
41
  # Lock acquired by parent process (2023-02-11 16:43:15 UTC)
@@ -75,7 +67,7 @@ end
75
67
  sleep 3
76
68
  lockf.release
77
69
  Process.wait(pid)
78
- lockf.file.close
70
+ lockf.close
79
71
 
80
72
  ##
81
73
  # Lock acquired by parent process (2023-02-11 19:03:05 UTC)
@@ -130,6 +122,11 @@ file.close
130
122
  # Lock released
131
123
  ```
132
124
 
125
+ ## Documentation
126
+
127
+ A complete API reference is available at
128
+ [0x1eef.github.io/x/lockf.rb](https://0x1eef.github.io/x/lockf.rb).
129
+
133
130
  ## Install
134
131
 
135
132
  **Rubygems.org**
data/Rakefile.rb CHANGED
@@ -2,21 +2,22 @@ require "bundler/setup"
2
2
  require "rake/extensiontask"
3
3
  require "rake/testtask"
4
4
 
5
- namespace :linters do
6
- desc "Run the C linter"
7
- task :c do
8
- sh "uncrustify -c .uncrustify.cfg --no-backup --replace ext/lockf.rb/*.c"
5
+ namespace :clang do
6
+ desc "Run clang-format"
7
+ task :format do
8
+ sh "clang-format -style=file:.clang-format -i ext/lockf.rb/*.c"
9
9
  end
10
+ end
10
11
 
11
- desc "Run the Ruby linter"
12
- task :ruby do
13
- sh "bundle exec rubocop -A Rakefile.rb lib/**/*.rb spec/**/*.rb"
12
+ namespace :ruby do
13
+ desc "Run rubocop"
14
+ task :format do
15
+ sh "bundle exec rubocop -A"
14
16
  end
15
17
  end
16
- task lint: ["linters:c", "linters:ruby"]
18
+ task format: %w[clang:format ruby:format]
17
19
 
18
20
  Rake::ExtensionTask.new("lockf.rb")
19
-
20
21
  Rake::TestTask.new do |t|
21
22
  t.test_files = FileList["test/*_test.rb"]
22
23
  t.verbose = true
data/ext/lockf.rb/lockf.c CHANGED
@@ -1,7 +1,6 @@
1
1
  #include <ruby.h>
2
2
  #include <unistd.h>
3
3
  #include <errno.h>
4
- #include "lockf.h"
5
4
 
6
5
  static VALUE
7
6
  lockf_lock(VALUE self, VALUE fd, VALUE cmd, VALUE len)
@@ -11,11 +10,14 @@ lockf_lock(VALUE self, VALUE fd, VALUE cmd, VALUE len)
11
10
  Check_Type(fd, T_FIXNUM);
12
11
  Check_Type(cmd, T_FIXNUM);
13
12
  Check_Type(len, T_FIXNUM);
14
- errno = 0;
13
+ errno = 0;
15
14
  result = lockf(NUM2INT(fd), NUM2INT(cmd), NUM2INT(len));
16
- if (result == 0) {
15
+ if (result == 0)
16
+ {
17
17
  return INT2NUM(result);
18
- } else {
18
+ }
19
+ else
20
+ {
19
21
  rb_syserr_fail(errno, "lockf");
20
22
  }
21
23
  }
data/lib/lockf/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class LockFile
2
- VERSION = "0.13.0"
2
+ VERSION = "1.0.0"
3
3
  end
data/lib/lockf.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  # The
3
- # [`LockFile`](https://0x1eef.github.io/x/lockf.rb/LockFile.html)
4
- # class provides a Ruby-oriented interface to the C function
3
+ # [LockFile](https://0x1eef.github.io/x/lockf.rb/LockFile.html)
4
+ # class provides a Ruby interface to
5
5
  # [lockf(3)](https://man.freebsd.org/cgi/man.cgi?query=lockf&sektion=3).
6
6
  class LockFile
7
7
  require "tmpdir"
@@ -79,7 +79,8 @@ class LockFile
79
79
  end
80
80
 
81
81
  ##
82
- # Acquire a lock (blocking)
82
+ # Acquire a lock (blocking).
83
+ #
83
84
  # @raise [Errno::EBADF]
84
85
  # @raise [Errno::EDEADLK]
85
86
  # @raise [Errno::EINTR]
@@ -94,7 +95,8 @@ class LockFile
94
95
  end
95
96
 
96
97
  ##
97
- # Acquire a lock (non-blocking)
98
+ # Acquire a lock (non-blocking).
99
+ #
98
100
  # @raise [Errno::EAGAIN]
99
101
  # @raise [Errno::EBADF]
100
102
  # @raise [Errno::ENOLCK]
@@ -105,7 +107,8 @@ class LockFile
105
107
  end
106
108
 
107
109
  ##
108
- # Release a lock
110
+ # Release a lock.
111
+ #
109
112
  # @raise [Errno::EBADF]
110
113
  # @raise [Errno::ENOLCK]
111
114
  # @return [Integer]
data/lockf.rb.gemspec CHANGED
@@ -13,12 +13,9 @@ Gem::Specification.new do |gem|
13
13
  gem.summary = "Ruby bindings for lockf(3)"
14
14
  gem.description = gem.summary
15
15
  gem.add_development_dependency "yard", "~> 0.9"
16
- gem.add_development_dependency "redcarpet", "~> 3.5"
17
- gem.add_development_dependency "standard", "= 1.12.1"
18
- gem.add_development_dependency "rubocop", "= 1.29.1"
19
- gem.add_development_dependency "test-unit", "~> 3.5.7"
20
- gem.add_development_dependency "rake-compiler", "= 1.2.0"
21
- gem.add_development_dependency "rack", "~> 3.0"
22
- gem.add_development_dependency "rackup", "~> 2.1"
23
- gem.add_development_dependency "test-cmd.rb", "~> 0.4"
16
+ gem.add_development_dependency "standard", "~> 1.12"
17
+ gem.add_development_dependency "rubocop", "~> 1.29"
18
+ gem.add_development_dependency "test-unit", "~> 3.5"
19
+ gem.add_development_dependency "rake-compiler", "~> 1.2"
20
+ gem.add_development_dependency "test-cmd.rb", "~> 0.6"
24
21
  end
@@ -11,7 +11,7 @@ end
11
11
  sleep(3)
12
12
  lockf.release
13
13
  Process.wait(pid)
14
- lockf.file.close
14
+ lockf.close
15
15
 
16
16
  ##
17
17
  # Lock acquired by parent process (2023-02-11 16:43:15 UTC)
@@ -14,7 +14,7 @@ end
14
14
  sleep 3
15
15
  lockf.release
16
16
  Process.wait(pid)
17
- lockf.file.close
17
+ lockf.close
18
18
 
19
19
  ##
20
20
  # Lock acquired by parent process (2023-02-11 19:03:05 UTC)
@@ -4,7 +4,7 @@ class LockFile::Test < Test::Unit::TestCase
4
4
  attr_reader :lockf
5
5
 
6
6
  def setup
7
- @file = Tempfile.new("lockf-test").tap(&:unlink)
7
+ @file = Tempfile.new("lockf-test").tap(&:unlink)
8
8
  @lockf = LockFile.new(file)
9
9
  end
10
10
 
@@ -13,7 +13,7 @@ class LockFile::Test < Test::Unit::TestCase
13
13
  end
14
14
 
15
15
  ##
16
- # Lock::File#lock
16
+ # LockFile#lock
17
17
  def test_lock
18
18
  assert_equal 0, lockf.lock
19
19
  ensure
@@ -30,7 +30,7 @@ class LockFile::Test < Test::Unit::TestCase
30
30
  end
31
31
 
32
32
  ##
33
- # Lock::File#lock_nonblock
33
+ # LockFile#lock_nonblock
34
34
  def test_lock_nonblock
35
35
  assert_equal 0, lockf.lock_nonblock
36
36
  ensure
@@ -47,7 +47,7 @@ class LockFile::Test < Test::Unit::TestCase
47
47
  end
48
48
 
49
49
  ##
50
- # Lock::File#locked?
50
+ # LockFile#locked?
51
51
  def test_locked?
52
52
  pid = fork_sleep { lockf.lock }
53
53
  sleep(0.1)
data/test/readme_test.rb CHANGED
@@ -4,8 +4,6 @@ require_relative "setup"
4
4
  require "test/cmd"
5
5
 
6
6
  class LockFile::ReadmeTest < Test::Unit::TestCase
7
- include Test::Cmd
8
-
9
7
  def test_lockfile_blocking_variant
10
8
  r = 'Lock acquired by parent process \(.+\)\s*' \
11
9
  'Child process waiting on lock \(.+\)\s*' \
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lockf.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - '0x1eef'
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-16 00:00:00.000000000 Z
11
+ date: 2024-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -25,117 +25,75 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.9'
27
27
  - !ruby/object:Gem::Dependency
28
- name: redcarpet
28
+ name: standard
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.5'
33
+ version: '1.12'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.5'
41
- - !ruby/object:Gem::Dependency
42
- name: standard
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 1.12.1
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 1.12.1
40
+ version: '1.12'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rubocop
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 1.29.1
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 1.29.1
69
- - !ruby/object:Gem::Dependency
70
- name: test-unit
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: 3.5.7
47
+ version: '1.29'
76
48
  type: :development
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: 3.5.7
83
- - !ruby/object:Gem::Dependency
84
- name: rake-compiler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 1.2.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 1.2.0
54
+ version: '1.29'
97
55
  - !ruby/object:Gem::Dependency
98
- name: rack
56
+ name: test-unit
99
57
  requirement: !ruby/object:Gem::Requirement
100
58
  requirements:
101
59
  - - "~>"
102
60
  - !ruby/object:Gem::Version
103
- version: '3.0'
61
+ version: '3.5'
104
62
  type: :development
105
63
  prerelease: false
106
64
  version_requirements: !ruby/object:Gem::Requirement
107
65
  requirements:
108
66
  - - "~>"
109
67
  - !ruby/object:Gem::Version
110
- version: '3.0'
68
+ version: '3.5'
111
69
  - !ruby/object:Gem::Dependency
112
- name: rackup
70
+ name: rake-compiler
113
71
  requirement: !ruby/object:Gem::Requirement
114
72
  requirements:
115
73
  - - "~>"
116
74
  - !ruby/object:Gem::Version
117
- version: '2.1'
75
+ version: '1.2'
118
76
  type: :development
119
77
  prerelease: false
120
78
  version_requirements: !ruby/object:Gem::Requirement
121
79
  requirements:
122
80
  - - "~>"
123
81
  - !ruby/object:Gem::Version
124
- version: '2.1'
82
+ version: '1.2'
125
83
  - !ruby/object:Gem::Dependency
126
84
  name: test-cmd.rb
127
85
  requirement: !ruby/object:Gem::Requirement
128
86
  requirements:
129
87
  - - "~>"
130
88
  - !ruby/object:Gem::Version
131
- version: '0.4'
89
+ version: '0.6'
132
90
  type: :development
133
91
  prerelease: false
134
92
  version_requirements: !ruby/object:Gem::Requirement
135
93
  requirements:
136
94
  - - "~>"
137
95
  - !ruby/object:Gem::Version
138
- version: '0.4'
96
+ version: '0.6'
139
97
  description: Ruby bindings for lockf(3)
140
98
  email:
141
99
  - 0x1eef@protonmail.com
@@ -145,6 +103,7 @@ extensions:
145
103
  extra_rdoc_files: []
146
104
  files:
147
105
  - ".bundle/config"
106
+ - ".clang-format"
148
107
  - ".github/workflows/tests.yml"
149
108
  - ".gitignore"
150
109
  - ".projectile"
@@ -157,7 +116,6 @@ files:
157
116
  - Rakefile.rb
158
117
  - ext/lockf.rb/extconf.rb
159
118
  - ext/lockf.rb/lockf.c
160
- - ext/lockf.rb/lockf.h
161
119
  - lib/lockf.rb
162
120
  - lib/lockf/version.rb
163
121
  - lockf.rb.gemspec
data/ext/lockf.rb/lockf.h DELETED
@@ -1 +0,0 @@
1
- void Init_lockf(void);