lockf.rb 0.13.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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);