win32-file-attributes 1.0.2 → 1.0.3
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 +4 -4
- data/CHANGES +6 -0
- data/lib/win32/file/attributes.rb +15 -12
- data/lib/win32/file/windows/functions.rb +20 -9
- data/test/test_win32_file_attributes.rb +1 -1
- data/win32-file-attributes.gemspec +1 -2
- metadata +10 -10
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e979471f10493700b371adf06ef6ae4a78b25daa
         | 
| 4 | 
            +
              data.tar.gz: d9d23da6540f250822ab25ee9ab8cf32e1a734a2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b09b0521108e59e35a98ed8357d7cf2df2f06db138c58cc3ca16efb29ffbcc952c4ed64abd06df76f709a2ef23ed37ea76c2e300a2b927a3eaf9713bd373ca69
         | 
| 7 | 
            +
              data.tar.gz: 414fe460270f5702e118a7b6bda0e23abafb3a600d14bbc2202fa3439e929c6b48e2c21e24260243b108aa6466848cf9861490a50c28124a941dc472b7b29bfe
         | 
    
        data/CHANGES
    CHANGED
    
    | @@ -1,3 +1,9 @@ | |
| 1 | 
            +
            = 1.0.3 - 8-Nov-2014
         | 
| 2 | 
            +
            * Make FFI functions private.
         | 
| 3 | 
            +
            * Removed reference to Rubyforge in gemspec.
         | 
| 4 | 
            +
            * Use require_relative internally.
         | 
| 5 | 
            +
            * Explicitly free some FFI memory pointers where appropriate.
         | 
| 6 | 
            +
             | 
| 1 7 | 
             
            = 1.0.2 - 28-Apr-2014
         | 
| 2 8 | 
             
            * The singleton methods now accept arguments that implement to_str or to_path.
         | 
| 3 9 |  | 
| @@ -1,6 +1,6 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 1 | 
            +
            require_relative 'windows/constants'
         | 
| 2 | 
            +
            require_relative 'windows/structs'
         | 
| 3 | 
            +
            require_relative 'windows/functions'
         | 
| 4 4 |  | 
| 5 5 | 
             
            class File
         | 
| 6 6 | 
             
              include Windows::File::Constants
         | 
| @@ -10,7 +10,7 @@ class File | |
| 10 10 | 
             
              extend Windows::File::Functions
         | 
| 11 11 |  | 
| 12 12 | 
             
              # The version of the win32-file library
         | 
| 13 | 
            -
              WIN32_FILE_ATTRIBUTE_VERSION = '1.0. | 
| 13 | 
            +
              WIN32_FILE_ATTRIBUTE_VERSION = '1.0.3'
         | 
| 14 14 |  | 
| 15 15 | 
             
              ## ABBREVIATED ATTRIBUTE CONSTANTS
         | 
| 16 16 |  | 
| @@ -276,12 +276,6 @@ class File | |
| 276 276 | 
             
              # that compression is the default for newly created files and subdirectories.
         | 
| 277 277 | 
             
              #
         | 
| 278 278 | 
             
              def compressed=(bool)
         | 
| 279 | 
            -
                in_buf = FFI::MemoryPointer.new(:ulong)
         | 
| 280 | 
            -
                bytes  = FFI::MemoryPointer.new(:ulong)
         | 
| 281 | 
            -
             | 
| 282 | 
            -
                compression_value = bool ? COMPRESSION_FORMAT_DEFAULT : COMPRESSION_FORMAT_NONE
         | 
| 283 | 
            -
                in_buf.write_ulong(compression_value)
         | 
| 284 | 
            -
             | 
| 285 279 | 
             
                # We can't use get_osfhandle here because we need specific attributes
         | 
| 286 280 | 
             
                handle = CreateFileW(
         | 
| 287 281 | 
             
                  self.path.wincode,
         | 
| @@ -297,6 +291,12 @@ class File | |
| 297 291 | 
             
                  raise SystemCallError.new("CreateFile", FFI.errno)
         | 
| 298 292 | 
             
                end
         | 
| 299 293 |  | 
| 294 | 
            +
                in_buf = FFI::MemoryPointer.new(:ulong)
         | 
| 295 | 
            +
                bytes  = FFI::MemoryPointer.new(:ulong)
         | 
| 296 | 
            +
             | 
| 297 | 
            +
                compression_value = bool ? COMPRESSION_FORMAT_DEFAULT : COMPRESSION_FORMAT_NONE
         | 
| 298 | 
            +
                in_buf.write_ulong(compression_value)
         | 
| 299 | 
            +
             | 
| 300 300 | 
             
                begin
         | 
| 301 301 | 
             
                  bool = DeviceIoControl(
         | 
| 302 302 | 
             
                    handle,
         | 
| @@ -314,6 +314,8 @@ class File | |
| 314 314 | 
             
                  end
         | 
| 315 315 | 
             
                ensure
         | 
| 316 316 | 
             
                  CloseHandle(handle)
         | 
| 317 | 
            +
                  in_buf.free
         | 
| 318 | 
            +
                  bytes.free
         | 
| 317 319 | 
             
                end
         | 
| 318 320 |  | 
| 319 321 | 
             
                self
         | 
| @@ -449,8 +451,6 @@ class File | |
| 449 451 | 
             
                  return
         | 
| 450 452 | 
             
                end
         | 
| 451 453 |  | 
| 452 | 
            -
                bytes = FFI::MemoryPointer.new(:ulong)
         | 
| 453 | 
            -
             | 
| 454 454 | 
             
                handle = CreateFileW(
         | 
| 455 455 | 
             
                  self.path.wincode,
         | 
| 456 456 | 
             
                  FILE_READ_DATA | FILE_WRITE_DATA,
         | 
| @@ -465,6 +465,8 @@ class File | |
| 465 465 | 
             
                  raise SystemCallError.new("CreateFile", FFI.errno)
         | 
| 466 466 | 
             
                end
         | 
| 467 467 |  | 
| 468 | 
            +
                bytes = FFI::MemoryPointer.new(:ulong)
         | 
| 469 | 
            +
             | 
| 468 470 | 
             
                begin
         | 
| 469 471 | 
             
                  bool = DeviceIoControl(
         | 
| 470 472 | 
             
                    handle,
         | 
| @@ -482,6 +484,7 @@ class File | |
| 482 484 | 
             
                  end
         | 
| 483 485 | 
             
                ensure
         | 
| 484 486 | 
             
                  CloseHandle(handle)
         | 
| 487 | 
            +
                  bytes.free
         | 
| 485 488 | 
             
                end
         | 
| 486 489 |  | 
| 487 490 | 
             
                self
         | 
| @@ -4,16 +4,25 @@ module Windows | |
| 4 4 | 
             
              module File
         | 
| 5 5 | 
             
                module Functions
         | 
| 6 6 | 
             
                  extend FFI::Library
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  private
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  # Wrapper method for attach_function + private
         | 
| 11 | 
            +
                  def self.attach_pfunc(*args)
         | 
| 12 | 
            +
                    attach_function(*args)
         | 
| 13 | 
            +
                    private args[0]
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 7 16 | 
             
                  typedef :ulong, :dword
         | 
| 8 17 | 
             
                  typedef :uintptr_t, :handle
         | 
| 9 18 |  | 
| 10 19 | 
             
                  ffi_lib :kernel32
         | 
| 11 20 |  | 
| 12 | 
            -
                   | 
| 13 | 
            -
                   | 
| 14 | 
            -
                   | 
| 15 | 
            -
                   | 
| 16 | 
            -
                   | 
| 21 | 
            +
                  attach_pfunc :CloseHandle, [:handle], :bool
         | 
| 22 | 
            +
                  attach_pfunc :CreateFileW, [:buffer_in, :dword, :dword, :pointer, :dword, :dword, :handle], :handle
         | 
| 23 | 
            +
                  attach_pfunc :DeviceIoControl, [:handle, :dword, :pointer, :dword, :pointer, :dword, :pointer, :pointer], :bool
         | 
| 24 | 
            +
                  attach_pfunc :GetFileAttributesW, [:buffer_in], :dword
         | 
| 25 | 
            +
                  attach_pfunc :SetFileAttributesW, [:buffer_in, :dword], :bool
         | 
| 17 26 |  | 
| 18 27 | 
             
                  def CTL_CODE(device, function, method, access)
         | 
| 19 28 | 
             
                     ((device) << 16) | ((access) << 14) | ((function) << 2) | (method)
         | 
| @@ -31,9 +40,11 @@ module Windows | |
| 31 40 | 
             
            end
         | 
| 32 41 |  | 
| 33 42 | 
             
            class String
         | 
| 34 | 
            -
               | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
                 | 
| 43 | 
            +
              unless instance_methods.include?(:wincode)
         | 
| 44 | 
            +
                # Convenience method for converting strings to UTF-16LE for wide character
         | 
| 45 | 
            +
                # functions that require it.
         | 
| 46 | 
            +
                def wincode
         | 
| 47 | 
            +
                  (self.tr(File::SEPARATOR, File::ALT_SEPARATOR) + 0.chr).encode('UTF-16LE')
         | 
| 48 | 
            +
                end
         | 
| 38 49 | 
             
              end
         | 
| 39 50 | 
             
            end
         | 
| @@ -28,7 +28,7 @@ class TC_Win32_File_Attributes < Test::Unit::TestCase | |
| 28 28 | 
             
              end
         | 
| 29 29 |  | 
| 30 30 | 
             
              test "version is set to expected value" do
         | 
| 31 | 
            -
                assert_equal('1.0. | 
| 31 | 
            +
                assert_equal('1.0.3', File::WIN32_FILE_ATTRIBUTE_VERSION)
         | 
| 32 32 | 
             
              end
         | 
| 33 33 |  | 
| 34 34 | 
             
              test "temporary? singleton method basic functionality" do
         | 
| @@ -2,7 +2,7 @@ require 'rubygems' | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |spec|
         | 
| 4 4 | 
             
              spec.name       = 'win32-file-attributes'
         | 
| 5 | 
            -
              spec.version    = '1.0. | 
| 5 | 
            +
              spec.version    = '1.0.3'
         | 
| 6 6 | 
             
              spec.authors    = ['Daniel J. Berger', 'Park Heesob']
         | 
| 7 7 | 
             
              spec.license    = 'Artistic 2.0'
         | 
| 8 8 | 
             
              spec.email      = 'djberg96@gmail.com'
         | 
| @@ -11,7 +11,6 @@ Gem::Specification.new do |spec| | |
| 11 11 | 
             
              spec.test_files = Dir['test/test*']
         | 
| 12 12 | 
             
              spec.files      = Dir['**/*'].reject{ |f| f.include?('git') }
         | 
| 13 13 |  | 
| 14 | 
            -
              spec.rubyforge_project = 'win32utils'
         | 
| 15 14 | 
             
              spec.extra_rdoc_files  = ['README', 'CHANGES', 'MANIFEST']
         | 
| 16 15 |  | 
| 17 16 | 
             
              spec.add_dependency('ffi')
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: win32-file-attributes
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Daniel J. Berger
         | 
| @@ -9,34 +9,34 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2014- | 
| 12 | 
            +
            date: 2014-11-08 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: ffi
         | 
| 16 16 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                requirements:
         | 
| 18 | 
            -
                - -  | 
| 18 | 
            +
                - - ">="
         | 
| 19 19 | 
             
                  - !ruby/object:Gem::Version
         | 
| 20 20 | 
             
                    version: '0'
         | 
| 21 21 | 
             
              type: :runtime
         | 
| 22 22 | 
             
              prerelease: false
         | 
| 23 23 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 24 24 | 
             
                requirements:
         | 
| 25 | 
            -
                - -  | 
| 25 | 
            +
                - - ">="
         | 
| 26 26 | 
             
                  - !ruby/object:Gem::Version
         | 
| 27 27 | 
             
                    version: '0'
         | 
| 28 28 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 29 29 | 
             
              name: test-unit
         | 
| 30 30 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 31 31 | 
             
                requirements:
         | 
| 32 | 
            -
                - -  | 
| 32 | 
            +
                - - ">="
         | 
| 33 33 | 
             
                  - !ruby/object:Gem::Version
         | 
| 34 34 | 
             
                    version: '0'
         | 
| 35 35 | 
             
              type: :development
         | 
| 36 36 | 
             
              prerelease: false
         | 
| 37 37 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 38 38 | 
             
                requirements:
         | 
| 39 | 
            -
                - -  | 
| 39 | 
            +
                - - ">="
         | 
| 40 40 | 
             
                  - !ruby/object:Gem::Version
         | 
| 41 41 | 
             
                    version: '0'
         | 
| 42 42 | 
             
            description: |2
         | 
| @@ -71,17 +71,17 @@ require_paths: | |
| 71 71 | 
             
            - lib
         | 
| 72 72 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 73 73 | 
             
              requirements:
         | 
| 74 | 
            -
              - -  | 
| 74 | 
            +
              - - ">="
         | 
| 75 75 | 
             
                - !ruby/object:Gem::Version
         | 
| 76 76 | 
             
                  version: '0'
         | 
| 77 77 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 78 78 | 
             
              requirements:
         | 
| 79 | 
            -
              - -  | 
| 79 | 
            +
              - - ">="
         | 
| 80 80 | 
             
                - !ruby/object:Gem::Version
         | 
| 81 81 | 
             
                  version: '0'
         | 
| 82 82 | 
             
            requirements: []
         | 
| 83 | 
            -
            rubyforge_project:  | 
| 84 | 
            -
            rubygems_version: 2. | 
| 83 | 
            +
            rubyforge_project: 
         | 
| 84 | 
            +
            rubygems_version: 2.4.2
         | 
| 85 85 | 
             
            signing_key: 
         | 
| 86 86 | 
             
            specification_version: 4
         | 
| 87 87 | 
             
            summary: File attribute methods for the File class on MS Windows
         |