recls-ruby 2.11.0 → 2.11.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +27 -24
  3. data/README.md +242 -1
  4. data/examples/find_files_and_directories.md +33 -30
  5. data/examples/find_files_and_directories.recursive.md +255 -254
  6. data/examples/show_hidden_files.md +4 -1
  7. data/examples/show_hidden_files.rb +1 -1
  8. data/examples/show_readonly_files.md +4 -1
  9. data/examples/show_readonly_files.rb +1 -1
  10. data/lib/recls/api.rb +75 -73
  11. data/lib/recls/combine_paths_1.rb +25 -23
  12. data/lib/recls/combine_paths_2plus.rb +31 -29
  13. data/lib/recls/entry.rb +276 -273
  14. data/lib/recls/file_search.rb +195 -193
  15. data/lib/recls/flags.rb +46 -45
  16. data/lib/recls/foreach.rb +103 -98
  17. data/lib/recls/obsolete.rb +80 -79
  18. data/lib/recls/recls.rb +16 -15
  19. data/lib/recls/stat.rb +136 -134
  20. data/lib/recls/util.rb +94 -92
  21. data/lib/recls/version.rb +17 -17
  22. data/lib/recls/ximpl/os.rb +45 -43
  23. data/lib/recls/ximpl/unix.rb +38 -35
  24. data/lib/recls/ximpl/util.rb +597 -596
  25. data/lib/recls/ximpl/windows.rb +139 -136
  26. data/lib/recls.rb +10 -9
  27. data/test/scratch/test_display_parts.rb +33 -33
  28. data/test/scratch/test_entry.rb +6 -6
  29. data/test/scratch/test_files_and_directories.rb +8 -8
  30. data/test/scratch/test_foreach.rb +10 -10
  31. data/test/scratch/test_module_function.rb +33 -33
  32. data/test/scratch/test_pattern_arrays.rb +5 -5
  33. data/test/scratch/test_show_dev_and_ino.rb +1 -1
  34. data/test/scratch/test_show_hidden.rb +3 -3
  35. data/test/unit/tc_recls_entries.rb +31 -31
  36. data/test/unit/tc_recls_entry.rb +19 -19
  37. data/test/unit/tc_recls_file_search.rb +32 -32
  38. data/test/unit/tc_recls_module.rb +25 -25
  39. data/test/unit/tc_recls_util.rb +161 -161
  40. data/test/unit/tc_recls_ximpl_util.rb +676 -676
  41. data/test/unit/test_all_separately.sh +1 -1
  42. data/test/unit/ts_all.rb +4 -4
  43. metadata +6 -6
@@ -1,13 +1,14 @@
1
- # ######################################################################### #
2
- # File: recls/file_search.rb
1
+ # ######################################################################## #
2
+ # File: recls/file_search.rb
3
3
  #
4
- # Purpose: Defines the Recls::FileSearch class for the recls.Ruby library.
4
+ # Purpose: Defines the Recls::FileSearch class for the recls.Ruby library.
5
5
  #
6
- # Created: 24th July 2012
7
- # Updated: 14th April 2019
6
+ # Created: 24th July 2012
7
+ # Updated: 20th April 2024
8
8
  #
9
- # Author: Matthew Wilson
9
+ # Author: Matthew Wilson
10
10
  #
11
+ # Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
11
12
  # Copyright (c) 2012-2019, Matthew Wilson and Synesis Software
12
13
  # All rights reserved.
13
14
  #
@@ -33,13 +34,14 @@
33
34
  # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
35
  # POSSIBILITY OF SUCH DAMAGE.
35
36
  #
36
- # ######################################################################### #
37
+ # ######################################################################## #
37
38
 
38
39
 
39
40
  require 'recls/entry'
40
41
  require 'recls/flags'
41
42
  require 'recls/ximpl/os'
42
43
 
44
+
43
45
  =begin
44
46
  =end
45
47
 
@@ -47,281 +49,281 @@ class Object; end # :nodoc:
47
49
 
48
50
  module Recls
49
51
 
50
- class FileSearch # :nodoc: all
52
+ class FileSearch # :nodoc: all
51
53
 
52
- include Enumerable
54
+ include Enumerable
53
55
 
54
- # Initialises a +FileSearch+ instance, which acts as an +Enumerable+
55
- # of Recls::Entry
56
- #
57
- # === Signature
58
- #
59
- # * *Parameters:*
60
- # - +search_root+ (String, Recls::Entry) The root directory of the search. May be +nil+, in which case the current directory is assumed
61
- # - +patterns+ (String, Array) The pattern(s) for which to search. May be +nil+, in which case +Recls::WILDCARDS_ALL+ is assumed
62
- # - +options+ (Hash, Integer) Combination of flags (with behaviour as described below for the +flags+ option), or an options hash
63
- #
64
- # * *Options:*
65
- # - +flags+ (Integer) Combination of flags - FILES, DIRECTORIES, RECURSIVE, etc. If the value modulo TYPEMASK is 0, then FILES is assumed
66
- #
67
- # === Return
68
- # An instance of the class
69
- #
70
- def initialize(search_root, patterns, options={})
56
+ # Initialises a +FileSearch+ instance, which acts as an +Enumerable+
57
+ # of Recls::Entry
58
+ #
59
+ # === Signature
60
+ #
61
+ # * *Parameters:*
62
+ # - +search_root+ (String, Recls::Entry) The root directory of the search. May be +nil+, in which case the current directory is assumed
63
+ # - +patterns+ (String, Array) The pattern(s) for which to search. May be +nil+, in which case +Recls::WILDCARDS_ALL+ is assumed
64
+ # - +options+ (Hash, Integer) Combination of flags (with behaviour as described below for the +flags+ option), or an options hash
65
+ #
66
+ # * *Options:*
67
+ # - +flags+ (Integer) Combination of flags - FILES, DIRECTORIES, RECURSIVE, etc. If the value modulo TYPEMASK is 0, then FILES is assumed
68
+ #
69
+ # === Return
70
+ # An instance of the class
71
+ #
72
+ def initialize(search_root, patterns, options={})
71
73
 
72
- # for backwards compatibility, we allow for options to
73
- # be a number
74
+ # for backwards compatibility, we allow for options to
75
+ # be a number
74
76
 
75
- flags = 0
77
+ flags = 0
76
78
 
77
- case options
78
- when ::NilClass
79
+ case options
80
+ when ::NilClass
79
81
 
80
- options = { flags: 0 }
81
- when ::Integer
82
+ options = { flags: 0 }
83
+ when ::Integer
82
84
 
83
- flags = options
84
- options = { flags: flags }
85
- when ::Hash
85
+ flags = options
86
+ options = { flags: flags }
87
+ when ::Hash
86
88
 
87
- flags = options[:flags] || 0
88
- else
89
+ flags = options[:flags] || 0
90
+ else
89
91
 
90
- raise ArgumentError, "options parameter must a #{::Hash}, nil, or an integer specifying flags - an instance of #{options.class} given"
91
- end
92
+ raise ArgumentError, "options parameter must a #{::Hash}, nil, or an integer specifying flags - an instance of #{options.class} given"
93
+ end
92
94
 
93
95
 
94
- if not search_root
96
+ if not search_root
95
97
 
96
- search_root = '.'
97
- else
98
+ search_root = '.'
99
+ else
98
100
 
99
- search_root = search_root.to_s
100
- end
101
- search_root = '.' if search_root.empty?
102
- search_root = File.expand_path(search_root) if '~' == search_root[0]
101
+ search_root = search_root.to_s
102
+ end
103
+ search_root = '.' if search_root.empty?
104
+ search_root = File.expand_path(search_root) if '~' == search_root[0]
103
105
 
104
- case patterns
105
- when NilClass
106
+ case patterns
107
+ when NilClass
106
108
 
107
- patterns = []
108
- when String
109
+ patterns = []
110
+ when String
109
111
 
110
- patterns = patterns.split(/[|#{Recls::Ximpl::OS::PATH_SEPARATOR}]/)
111
- when Array
112
- else
112
+ patterns = patterns.split(/[|#{Recls::Ximpl::OS::PATH_SEPARATOR}]/)
113
+ when Array
114
+ else
113
115
 
114
- patterns = patterns.to_a
115
- end
116
+ patterns = patterns.to_a
117
+ end
116
118
 
117
- patterns = [ Recls::WILDCARDS_ALL ] if patterns.empty?
119
+ patterns = [ Recls::WILDCARDS_ALL ] if patterns.empty?
118
120
 
119
- if(0 == (Recls::TYPEMASK & flags))
121
+ if(0 == (Recls::TYPEMASK & flags))
120
122
 
121
- flags |= Recls::FILES
122
- end
123
+ flags |= Recls::FILES
124
+ end
123
125
 
124
- # now de-dup the patterns, to avoid duplicates in search
125
- patterns = patterns.flatten
126
- patterns = patterns.uniq
126
+ # now de-dup the patterns, to avoid duplicates in search
127
+ patterns = patterns.flatten
128
+ patterns = patterns.uniq
127
129
 
128
- @search_root = search_root
129
- @patterns = patterns
130
- @flags = flags
131
- end
130
+ @search_root = search_root
131
+ @patterns = patterns
132
+ @flags = flags
133
+ end
132
134
 
133
- # (String) The search root
134
- attr_reader :search_root
135
- # (String) The search patterns
136
- attr_reader :patterns
137
- # (Integer) The search flags
138
- attr_reader :flags
135
+ # (String) The search root
136
+ attr_reader :search_root
137
+ # (String) The search patterns
138
+ attr_reader :patterns
139
+ # (Integer) The search flags
140
+ attr_reader :flags
139
141
 
140
- # Calls the block once for each found file, passing a single
141
- # parameter that is a Recls::Entry instance
142
- #
143
- # @!visibility private
144
- def each(&blk) # :nodoc:
142
+ # Calls the block once for each found file, passing a single
143
+ # parameter that is a Recls::Entry instance
144
+ #
145
+ # @!visibility private
146
+ def each(&blk) # :nodoc:
145
147
 
146
- search_root = @search_root
147
- search_root = Recls::Ximpl::absolute_path search_root
148
+ search_root = @search_root
149
+ search_root = Recls::Ximpl::absolute_path search_root
148
150
 
149
- search_root = search_root.gsub(/\\/, '/') if Recls::Ximpl::OS::OS_IS_WINDOWS
151
+ search_root = search_root.gsub(/\\/, '/') if Recls::Ximpl::OS::OS_IS_WINDOWS
150
152
 
151
- # set the (type part of the) flags to zero if we want
152
- # everything, to facilitate later optimisation
153
+ # set the (type part of the) flags to zero if we want
154
+ # everything, to facilitate later optimisation
153
155
 
154
- flags = @flags
156
+ flags = @flags
155
157
 
156
- if(Recls::Ximpl::OS::OS_IS_WINDOWS)
158
+ if(Recls::Ximpl::OS::OS_IS_WINDOWS)
157
159
 
158
- mask = (Recls::FILES | Recls::DIRECTORIES)
159
- else
160
+ mask = (Recls::FILES | Recls::DIRECTORIES)
161
+ else
160
162
 
161
- mask = (Recls::FILES | Recls::DIRECTORIES | Recls::LINKS | Recls::DEVICES)
162
- end
163
+ mask = (Recls::FILES | Recls::DIRECTORIES | Recls::LINKS | Recls::DEVICES)
164
+ end
163
165
 
164
- if(mask == (mask & flags))
166
+ if(mask == (mask & flags))
165
167
 
166
- flags = flags & ~Recls::TYPEMASK
167
- end
168
+ flags = flags & ~Recls::TYPEMASK
169
+ end
168
170
 
169
- patterns = @patterns
171
+ patterns = @patterns
170
172
 
171
- patterns = patterns.map do |pattern|
173
+ patterns = patterns.map do |pattern|
172
174
 
173
- pattern = pattern.gsub(/\./, '\\.')
174
- pattern = pattern.gsub(/\?/, '.')
175
- pattern = pattern.gsub(/\*/, '.*')
176
- pattern
177
- end
175
+ pattern = pattern.gsub(/\./, '\\.')
176
+ pattern = pattern.gsub(/\?/, '.')
177
+ pattern = pattern.gsub(/\*/, '.*')
178
+ pattern
179
+ end
178
180
 
179
- search_dir = search_root
180
- search_root = Recls::Ximpl::Util.append_trailing_slash search_root
181
+ search_dir = search_root
182
+ search_root = Recls::Ximpl::Util.append_trailing_slash search_root
181
183
 
182
- FileSearch::search_directory_(search_root, search_dir, patterns, flags, &blk)
183
- end
184
+ FileSearch::search_directory_(search_root, search_dir, patterns, flags, &blk)
185
+ end
184
186
 
185
- private
186
- # @!visibility private
187
- def FileSearch.is_dots(name) # :nodoc:
187
+ private
188
+ # @!visibility private
189
+ def FileSearch.is_dots(name) # :nodoc:
188
190
 
189
- case name
190
- when '.', '..'
191
- true
192
- else
193
- false
194
- end
195
- end
191
+ case name
192
+ when '.', '..'
193
+ true
194
+ else
195
+ false
196
+ end
197
+ end
196
198
 
197
- # @!visibility private
198
- def FileSearch.stat_or_nil_(path, flags) # :nodoc:
199
+ # @!visibility private
200
+ def FileSearch.stat_or_nil_(path, flags) # :nodoc:
199
201
 
200
- begin
202
+ begin
201
203
 
202
- Recls::Ximpl::FileStat.stat path
203
- rescue Errno::ENOENT, Errno::ENXIO
204
+ Recls::Ximpl::FileStat.stat path
205
+ rescue Errno::ENOENT, Errno::ENXIO
204
206
 
205
- nil
206
- rescue SystemCallError => x
207
+ nil
208
+ rescue SystemCallError => x
207
209
 
208
- # TODO this should be filtered up and/or logged
210
+ # TODO this should be filtered up and/or logged
209
211
 
210
- if(0 != (STOP_ON_ACCESS_FAILURE & flags))
212
+ if(0 != (STOP_ON_ACCESS_FAILURE & flags))
211
213
 
212
- raise
213
- end
214
+ raise
215
+ end
214
216
 
215
- nil
216
- end
217
- end
217
+ nil
218
+ end
219
+ end
218
220
 
219
- # searches all entries - files, directories, links, devices
220
- # - that match the given (patterns) in the given directory
221
- # (dir) according to the given (flags), invoking the given
222
- # block (blk). The search directory (search_root) is passed in
223
- # order to allow calculation of search_relative_path in the
224
- # entry.
221
+ # searches all entries - files, directories, links, devices
222
+ # - that match the given (patterns) in the given directory
223
+ # (dir) according to the given (flags), invoking the given
224
+ # block (blk). The search directory (search_root) is passed in
225
+ # order to allow calculation of search_relative_path in the
226
+ # entry.
225
227
 
226
- # @!visibility private
227
- def FileSearch.search_directory_(search_root, dir, patterns, flags, &blk) # :nodoc:
228
+ # @!visibility private
229
+ def FileSearch.search_directory_(search_root, dir, patterns, flags, &blk) # :nodoc:
228
230
 
229
- # array of FileStat instances
230
- entries = []
231
+ # array of FileStat instances
232
+ entries = []
231
233
 
232
- patterns.each do |pattern|
234
+ patterns.each do |pattern|
233
235
 
234
- Recls::Ximpl::dir_entries_maybe(dir, flags).each do |name|
236
+ Recls::Ximpl::dir_entries_maybe(dir, flags).each do |name|
235
237
 
236
- next if is_dots(name)
238
+ next if is_dots(name)
237
239
 
238
- if not name =~ /^#{pattern}$/
240
+ if not name =~ /^#{pattern}$/
239
241
 
240
- next
241
- end
242
+ next
243
+ end
242
244
 
243
- entry_path = File::join(dir, name)
245
+ entry_path = File::join(dir, name)
244
246
 
245
- fs = stat_or_nil_(entry_path, flags)
247
+ fs = stat_or_nil_(entry_path, flags)
246
248
 
247
- entries << fs
248
- end
249
- end
249
+ entries << fs
250
+ end
251
+ end
250
252
 
251
- # array of FileStat instances
252
- subdirectories = []
253
+ # array of FileStat instances
254
+ subdirectories = []
253
255
 
254
- Recls::Ximpl::dir_entries_maybe(dir, flags).each do |subdir|
256
+ Recls::Ximpl::dir_entries_maybe(dir, flags).each do |subdir|
255
257
 
256
- next if is_dots(subdir)
258
+ next if is_dots(subdir)
257
259
 
258
- subdir_path = File::join(dir, subdir)
260
+ subdir_path = File::join(dir, subdir)
259
261
 
260
- fs = stat_or_nil_(subdir_path, flags)
262
+ fs = stat_or_nil_(subdir_path, flags)
261
263
 
262
- next if not fs
264
+ next if not fs
263
265
 
264
- next unless fs.directory?
266
+ next unless fs.directory?
265
267
 
266
- subdirectories << fs
267
- end
268
+ subdirectories << fs
269
+ end
268
270
 
269
271
 
270
- # now filter the file-stat instances and send each
271
- # remaining to the block in Entry instance
272
- entries.each do |fs|
272
+ # now filter the file-stat instances and send each
273
+ # remaining to the block in Entry instance
274
+ entries.each do |fs|
273
275
 
274
- next if not fs
276
+ next if not fs
275
277
 
276
- if(0 == (Recls::SHOW_HIDDEN & flags))
278
+ if(0 == (Recls::SHOW_HIDDEN & flags))
277
279
 
278
- if fs.hidden?
280
+ if fs.hidden?
279
281
 
280
- next
281
- end
282
- end
282
+ next
283
+ end
284
+ end
283
285
 
284
- match = false
286
+ match = false
285
287
 
286
- match ||= (0 == (Recls::TYPEMASK & flags))
288
+ match ||= (0 == (Recls::TYPEMASK & flags))
287
289
 
288
- match ||= (0 != (Recls::FILES & flags) && fs.file?)
289
- match ||= (0 != (Recls::DIRECTORIES & flags) && fs.directory?)
290
- match ||= (0 != (Recls::DEVICES & flags) && fs.blockdev?)
290
+ match ||= (0 != (Recls::FILES & flags) && fs.file?)
291
+ match ||= (0 != (Recls::DIRECTORIES & flags) && fs.directory?)
292
+ match ||= (0 != (Recls::DEVICES & flags) && fs.blockdev?)
291
293
 
292
- next unless match
294
+ next unless match
293
295
 
294
- blk.call Recls::Entry.new(fs.path, fs, search_root, flags)
295
- end
296
+ blk.call Recls::Entry.new(fs.path, fs, search_root, flags)
297
+ end
296
298
 
297
- # sub-directories
299
+ # sub-directories
298
300
 
299
- return unless (0 != (Recls::RECURSIVE & flags))
301
+ return unless (0 != (Recls::RECURSIVE & flags))
300
302
 
301
- subdirectories.each do |fs|
303
+ subdirectories.each do |fs|
302
304
 
303
- if(0 == (Recls::SHOW_HIDDEN & flags))
305
+ if(0 == (Recls::SHOW_HIDDEN & flags))
304
306
 
305
- if fs.hidden?
307
+ if fs.hidden?
306
308
 
307
- next
308
- end
309
- end
309
+ next
310
+ end
311
+ end
310
312
 
311
- if(0 == (Recls::SEARCH_THROUGH_LINKS & flags))
313
+ if(0 == (Recls::SEARCH_THROUGH_LINKS & flags))
312
314
 
313
- if File.symlink? fs.path
315
+ if File.symlink? fs.path
314
316
 
315
- next
316
- end
317
- end
317
+ next
318
+ end
319
+ end
318
320
 
319
- FileSearch::search_directory_(search_root, fs.path, patterns, flags, &blk)
320
- end
321
- end
322
- end # class FileSearch
321
+ FileSearch::search_directory_(search_root, fs.path, patterns, flags, &blk)
322
+ end
323
+ end
324
+ end # class FileSearch
323
325
  end # module Recls
324
326
 
325
- # ############################## end of file ############################# #
326
327
 
328
+ # ############################## end of file ############################# #
327
329
 
data/lib/recls/flags.rb CHANGED
@@ -1,13 +1,14 @@
1
- # ######################################################################### #
2
- # File: recls/flags.rb
1
+ # ######################################################################## #
2
+ # File: recls/flags.rb
3
3
  #
4
- # Purpose: Defines the Recls::Flags module for the recls.Ruby library.
4
+ # Purpose: Defines the Recls::Flags module for the recls.Ruby library.
5
5
  #
6
- # Created: 24th July 2012
7
- # Updated: 14th April 2019
6
+ # Created: 24th July 2012
7
+ # Updated: 20th April 2024
8
8
  #
9
- # Author: Matthew Wilson
9
+ # Author: Matthew Wilson
10
10
  #
11
+ # Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
11
12
  # Copyright (c) 2012-2019, Matthew Wilson and Synesis Software
12
13
  # All rights reserved.
13
14
  #
@@ -33,7 +34,7 @@
33
34
  # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
35
  # POSSIBILITY OF SUCH DAMAGE.
35
36
  #
36
- # ######################################################################### #
37
+ # ######################################################################## #
37
38
 
38
39
 
39
40
  =begin
@@ -43,52 +44,52 @@ class Object; end # :nodoc:
43
44
 
44
45
  module Recls
45
46
 
46
- # Specifies that files are to be listed
47
- FILES = 0x00000001
48
- # Specifies that directories are to be listed
49
- DIRECTORIES = 0x00000002
50
- # Specifies that links are to be listed (and not followed)
51
- LINKS = 0x00000004
52
- # Specifies that devices are to be listed
53
- DEVICES = 0x00000008
54
- # Type mask (combination of Recls::FILES, Recls::DIRECTORIES, Recls::LINKS, Recls::DEVICES)
55
- TYPEMASK = 0x000000ff
47
+ # Specifies that files are to be listed
48
+ FILES = 0x00000001
49
+ # Specifies that directories are to be listed
50
+ DIRECTORIES = 0x00000002
51
+ # Specifies that links are to be listed (and not followed)
52
+ LINKS = 0x00000004
53
+ # Specifies that devices are to be listed
54
+ DEVICES = 0x00000008
55
+ # Type mask (combination of Recls::FILES, Recls::DIRECTORIES, Recls::LINKS, Recls::DEVICES)
56
+ TYPEMASK = 0x000000ff
56
57
 
57
- # Specifies that hidden items are to be shown and hidden directories are
58
- # to be searched
59
- SHOW_HIDDEN = 0x00000100
58
+ # Specifies that hidden items are to be shown and hidden directories are
59
+ # to be searched
60
+ SHOW_HIDDEN = 0x00000100
60
61
 
61
- # [IGNORED] This for compatibility with *recls* libraries written in other languages
62
- DIR_PROGRESS = 0x00001000
63
- # Causes search to terminate if a directory cannot be entered or an
64
- # entry's information cannot be stat()'d
65
- STOP_ON_ACCESS_FAILURE = 0x00002000
66
- # [IGNORED] This for compatibility with *recls* libraries written in other languages
67
- LINK_COUNT = 0000004000
68
- # [IGNORED] This for compatibility with *recls* libraries written in other languages
69
- NODE_INDEX = 0x00008000
62
+ # [IGNORED] This for compatibility with *recls* libraries written in other languages
63
+ DIR_PROGRESS = 0x00001000
64
+ # Causes search to terminate if a directory cannot be entered or an
65
+ # entry's information cannot be stat()'d
66
+ STOP_ON_ACCESS_FAILURE = 0x00002000
67
+ # [IGNORED] This for compatibility with *recls* libraries written in other languages
68
+ LINK_COUNT = 0000004000
69
+ # [IGNORED] This for compatibility with *recls* libraries written in other languages
70
+ NODE_INDEX = 0x00008000
70
71
 
71
- # Causes search to operate recursively
72
- RECURSIVE = 0x00010000
72
+ # Causes search to operate recursively
73
+ RECURSIVE = 0x00010000
73
74
  private
74
- NO_SEARCH_LINKS = 0x00020000 # :nodoc:
75
+ NO_SEARCH_LINKS = 0x00020000 # :nodoc:
75
76
  public
76
- # [IGNORED] In previous versions the Recls::Entry#directory_parts property was not obtained (for performance reasons) unless this flag was specified. In current version the parts are always obtained
77
- DIRECTORY_PARTS = 0x00040000
78
- # Causes operations (such as Recls::stat()) to obtain a result even when
79
- # no corresponding file-system entity does not exist
80
- DETAILS_LATER = 0x00080000
77
+ # [IGNORED] In previous versions the Recls::Entry#directory_parts property was not obtained (for performance reasons) unless this flag was specified. In current version the parts are always obtained
78
+ DIRECTORY_PARTS = 0x00040000
79
+ # Causes operations (such as Recls::stat()) to obtain a result even when
80
+ # no corresponding file-system entity does not exist
81
+ DETAILS_LATER = 0x00080000
81
82
 
82
- # Causes the Recls::Entry#path and Recls::Entry#search_relative_path
83
- # attributes to contain a trailing path-name-separator for directory
84
- # entries
85
- MARK_DIRECTORIES = 0x00200000
83
+ # Causes the Recls::Entry#path and Recls::Entry#search_relative_path
84
+ # attributes to contain a trailing path-name-separator for directory
85
+ # entries
86
+ MARK_DIRECTORIES = 0x00200000
86
87
 
87
- # Causes sub-directories that are links to be searched; default is not
88
- # to search through links
89
- SEARCH_THROUGH_LINKS = 0x00100000
88
+ # Causes sub-directories that are links to be searched; default is not
89
+ # to search through links
90
+ SEARCH_THROUGH_LINKS = 0x00100000
90
91
  end # module Recls
91
92
 
92
- # ############################## end of file ############################# #
93
93
 
94
+ # ############################## end of file ############################# #
94
95