wdm 0.0.2-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,39 @@
1
+ #ifndef WDM_RB_MONITOR_H
2
+ #define WDM_RB_MONITOR_H
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif // __cplusplus
7
+
8
+ // ---------------------------------------------------------
9
+ // Constants
10
+ // ---------------------------------------------------------
11
+
12
+ #define WDM_MONITOR_FLAGS_DEFAULT \
13
+ FILE_NOTIFY_CHANGE_FILE_NAME \
14
+ | FILE_NOTIFY_CHANGE_DIR_NAME \
15
+ | FILE_NOTIFY_CHANGE_LAST_WRITE
16
+
17
+ // ----------------------------------------------------------
18
+ // Global variables
19
+ // ----------------------------------------------------------
20
+
21
+ extern VALUE cWDM_Monitor;
22
+
23
+ extern VALUE eWDM_UnknownFlagError;
24
+ extern VALUE eWDM_MonitorRunningError;
25
+ extern VALUE eWDM_InvalidDirectoryError;
26
+
27
+ // ---------------------------------------------------------
28
+ // Prototypes
29
+ // ---------------------------------------------------------
30
+
31
+ void wdm_rb_monitor_init();
32
+
33
+ // ---------------------------------------------------------
34
+
35
+ #ifdef __cplusplus
36
+ }
37
+ #endif // __cplusplus
38
+
39
+ #endif // WDM_RB_MONITOR_H
@@ -0,0 +1,60 @@
1
+ #include "wdm.h"
2
+
3
+ #include "memory.h"
4
+ #include "utils.h"
5
+
6
+ // ---------------------------------------------------------
7
+ // Paths functions
8
+ // ---------------------------------------------------------
9
+
10
+ LPWSTR
11
+ wdm_utils_convert_back_to_forward_slashes(LPWSTR path, DWORD path_len) {
12
+ UINT i;
13
+
14
+ for(i = 0; i < (path_len - 1); ++i) { // path_len-1 because we don't need to check the NULL-char!
15
+ if ( path[i] == L'\\' ) path[i] = L'/';
16
+ }
17
+
18
+ return path;
19
+ }
20
+
21
+ LPWSTR
22
+ wdm_utils_full_pathname(const LPWSTR path) {
23
+ WCHAR maxed_path[WDM_MAX_WCHAR_LONG_PATH];
24
+ LPWSTR full_path;
25
+ size_t full_path_len;
26
+ BOOL is_directory;
27
+
28
+ if ( GetFullPathNameW(path, WDM_MAX_WCHAR_LONG_PATH, maxed_path, NULL) == 0 ) {
29
+ return 0;
30
+ }
31
+
32
+ is_directory = wdm_utils_unicode_is_directory(maxed_path);
33
+
34
+ full_path_len = wcslen(maxed_path);
35
+ full_path = WDM_ALLOC_N(WCHAR, full_path_len + (is_directory ? 2 : 1)); // When it's a directory, add extra 1 for the (\) at the end
36
+
37
+ wcscpy(full_path, maxed_path);
38
+
39
+ if ( is_directory ) wcscat(full_path, L"\\");
40
+
41
+ return full_path;
42
+ }
43
+
44
+ BOOL
45
+ wdm_utils_unicode_is_directory(const LPWSTR path) {
46
+ WCHAR unicode_path[WDM_MAX_WCHAR_LONG_PATH];
47
+
48
+ wcscpy(unicode_path, L"\\\\?\\");
49
+ wcscat(unicode_path, path);
50
+
51
+ return wdm_utils_is_directory(unicode_path);
52
+ }
53
+
54
+ BOOL
55
+ wdm_utils_is_directory(const LPWSTR path) {
56
+ DWORD dwAttrib = GetFileAttributesW(path);
57
+
58
+ return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
59
+ (dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
60
+ }
@@ -0,0 +1,25 @@
1
+ #include <Windows.h>
2
+
3
+ #ifndef WDM_UTILS_H
4
+ #define WDM_UTILS_H
5
+
6
+ #ifdef __cplusplus
7
+ extern "C" {
8
+ #endif // __cplusplus
9
+
10
+ // ---------------------------------------------------------
11
+ // Prototypes
12
+ // ---------------------------------------------------------
13
+
14
+ LPWSTR wdm_utils_convert_back_to_forward_slashes(LPWSTR, DWORD);
15
+ LPWSTR wdm_utils_full_pathname(const LPWSTR path);
16
+ BOOL wdm_utils_is_directory(const LPWSTR);
17
+ BOOL wdm_utils_unicode_is_directory(const LPWSTR);
18
+
19
+ // ---------------------------------------------------------
20
+
21
+ #ifdef __cplusplus
22
+ }
23
+ #endif // __cplusplus
24
+
25
+ #endif // WDM_UTILS_H
@@ -0,0 +1,45 @@
1
+ #include "wdm.h"
2
+
3
+ #include "entry.h"
4
+ #include "queue.h"
5
+ #include "monitor.h"
6
+
7
+ #include "rb_monitor.h"
8
+ #include "rb_change.h"
9
+
10
+ // ----------------------------------------------------------
11
+ // Global variables
12
+ // ----------------------------------------------------------
13
+
14
+ VALUE mWDM;
15
+
16
+ VALUE eWDM_Error;
17
+ VALUE eWDM_MonitorRunningError;
18
+ VALUE eWDM_InvalidDirectoryError;
19
+
20
+ ID wdm_rb_sym_call;
21
+ ID wdm_rb_sym_at_file;
22
+ ID wdm_rb_sym_at_type;
23
+ ID wdm_rb_sym_added;
24
+ ID wdm_rb_sym_modified;
25
+ ID wdm_rb_sym_removed;
26
+ ID wdm_rb_sym_renamed_old_file;
27
+ ID wdm_rb_sym_renamed_new_file;
28
+
29
+ rb_encoding *wdm_rb_enc_utf8;
30
+
31
+ // ----------------------------------------------------------
32
+
33
+ void
34
+ Init_wdm() {
35
+ WDM_DEBUG("Registering WDM with Ruby!");
36
+
37
+ wdm_rb_enc_utf8 = rb_utf8_encoding();
38
+
39
+ mWDM = rb_define_module("WDM");
40
+
41
+ eWDM_Error = rb_define_class_under(mWDM, "Error", rb_eStandardError);
42
+
43
+ wdm_rb_monitor_init();
44
+ wdm_rb_change_init();
45
+ }
@@ -0,0 +1,66 @@
1
+ #include <stdio.h>
2
+
3
+ #define WINVER 0x0500 // Support Windows 2000 and later,
4
+ #define _WIN32_WINNT 0x0500 // this is needed for 'GetLongPathNameW'
5
+
6
+ #ifndef VC_EXTRALEAN
7
+ #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
8
+ #endif
9
+
10
+ #include <Windows.h>
11
+
12
+ #include <ruby.h>
13
+ #include <ruby/encoding.h>
14
+
15
+ #ifndef WDM_H
16
+ #define WDM_H
17
+
18
+ #ifdef __cplusplus
19
+ extern "C" {
20
+ #endif // __cplusplus
21
+
22
+ // ---------------------------------------------------------
23
+ // Constants
24
+ // ---------------------------------------------------------
25
+
26
+ #define WDM_DEBUG_ENABLED FALSE
27
+
28
+ #define WDM_BUFFER_SIZE 16384 // 2^14 or 16Kb
29
+
30
+ // The maximum WCHAR's for buffers used in functions that have
31
+ // a unicode variant and require to prepend "\\?\" to the path
32
+ #define WDM_MAX_WCHAR_LONG_PATH 32767
33
+
34
+ // ---------------------------------------------------------
35
+ // Macros
36
+ // ---------------------------------------------------------
37
+
38
+ #if WDM_DEBUG_ENABLED == TRUE
39
+ #define WDM_DEBUG(str, ...) \
40
+ fprintf(stderr, "[DEBUG] (%s@%d): " str "\n", __FILE__, __LINE__, ##__VA_ARGS__)
41
+
42
+ #define WDM_WDEBUG(str, ...) \
43
+ fwprintf(stderr, L"[DEBUG] (%S@%d): " str "\n", __FILE__, __LINE__, ##__VA_ARGS__)
44
+
45
+ #else
46
+ #define WDM_DEBUG(str, ...)
47
+ #define WDM_WDEBUG(str, ...)
48
+ #endif
49
+
50
+ // ----------------------------------------------------------
51
+ // Extern global variables
52
+ // ----------------------------------------------------------
53
+
54
+ extern VALUE mWDM;
55
+
56
+ extern VALUE eWDM_Error;
57
+
58
+ extern rb_encoding *wdm_rb_enc_utf8;
59
+
60
+ // ---------------------------------------------------------
61
+
62
+ #ifdef __cplusplus
63
+ }
64
+ #endif // __cplusplus
65
+
66
+ #endif // WDM_H
@@ -0,0 +1,20 @@
1
+ 
2
+ Microsoft Visual Studio Solution File, Format Version 11.00
3
+ # Visual Studio 2010
4
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wdm", "wdm.vcxproj", "{5FFD32C8-057E-4390-BB51-1A4391488DEC}"
5
+ EndProject
6
+ Global
7
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
8
+ Debug|Win32 = Debug|Win32
9
+ Release|Win32 = Release|Win32
10
+ EndGlobalSection
11
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
12
+ {5FFD32C8-057E-4390-BB51-1A4391488DEC}.Debug|Win32.ActiveCfg = Debug|Win32
13
+ {5FFD32C8-057E-4390-BB51-1A4391488DEC}.Debug|Win32.Build.0 = Debug|Win32
14
+ {5FFD32C8-057E-4390-BB51-1A4391488DEC}.Release|Win32.ActiveCfg = Release|Win32
15
+ {5FFD32C8-057E-4390-BB51-1A4391488DEC}.Release|Win32.Build.0 = Release|Win32
16
+ EndGlobalSection
17
+ GlobalSection(SolutionProperties) = preSolution
18
+ HideSolutionNode = FALSE
19
+ EndGlobalSection
20
+ EndGlobal
@@ -0,0 +1,104 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup Label="ProjectConfigurations">
4
+ <ProjectConfiguration Include="Debug|Win32">
5
+ <Configuration>Debug</Configuration>
6
+ <Platform>Win32</Platform>
7
+ </ProjectConfiguration>
8
+ <ProjectConfiguration Include="Release|Win32">
9
+ <Configuration>Release</Configuration>
10
+ <Platform>Win32</Platform>
11
+ </ProjectConfiguration>
12
+ </ItemGroup>
13
+ <PropertyGroup Label="Globals">
14
+ <ProjectGuid>{5FFD32C8-057E-4390-BB51-1A4391488DEC}</ProjectGuid>
15
+ <Keyword>Win32Proj</Keyword>
16
+ <RootNamespace>wdm</RootNamespace>
17
+ </PropertyGroup>
18
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
19
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
20
+ <ConfigurationType>Application</ConfigurationType>
21
+ <UseDebugLibraries>true</UseDebugLibraries>
22
+ <CharacterSet>Unicode</CharacterSet>
23
+ </PropertyGroup>
24
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
25
+ <ConfigurationType>Application</ConfigurationType>
26
+ <UseDebugLibraries>false</UseDebugLibraries>
27
+ <WholeProgramOptimization>true</WholeProgramOptimization>
28
+ <CharacterSet>Unicode</CharacterSet>
29
+ </PropertyGroup>
30
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
31
+ <ImportGroup Label="ExtensionSettings">
32
+ </ImportGroup>
33
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
34
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
35
+ </ImportGroup>
36
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
37
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
38
+ </ImportGroup>
39
+ <PropertyGroup Label="UserMacros" />
40
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
41
+ <LinkIncremental>true</LinkIncremental>
42
+ <IncludePath>C:\Ruby193\include\ruby-1.9.1;$(IncludePath)</IncludePath>
43
+ </PropertyGroup>
44
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
45
+ <LinkIncremental>false</LinkIncremental>
46
+ </PropertyGroup>
47
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
48
+ <ClCompile>
49
+ <PrecompiledHeader>
50
+ </PrecompiledHeader>
51
+ <WarningLevel>Level3</WarningLevel>
52
+ <Optimization>Disabled</Optimization>
53
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
54
+ <CompileAs>CompileAsC</CompileAs>
55
+ </ClCompile>
56
+ <Link>
57
+ <SubSystem>Console</SubSystem>
58
+ <GenerateDebugInformation>true</GenerateDebugInformation>
59
+ </Link>
60
+ </ItemDefinitionGroup>
61
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
62
+ <ClCompile>
63
+ <WarningLevel>Level3</WarningLevel>
64
+ <PrecompiledHeader>
65
+ </PrecompiledHeader>
66
+ <Optimization>MaxSpeed</Optimization>
67
+ <FunctionLevelLinking>true</FunctionLevelLinking>
68
+ <IntrinsicFunctions>true</IntrinsicFunctions>
69
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
70
+ </ClCompile>
71
+ <Link>
72
+ <SubSystem>Console</SubSystem>
73
+ <GenerateDebugInformation>true</GenerateDebugInformation>
74
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
75
+ <OptimizeReferences>true</OptimizeReferences>
76
+ </Link>
77
+ </ItemDefinitionGroup>
78
+ <ItemGroup>
79
+ <ClInclude Include="entry.h" />
80
+ <ClInclude Include="memory.h" />
81
+ <ClInclude Include="monitor.h" />
82
+ <ClInclude Include="queue.h" />
83
+ <ClInclude Include="rb_change.h" />
84
+ <ClInclude Include="rb_monitor.h" />
85
+ <ClInclude Include="utils.h" />
86
+ <ClInclude Include="wdm.h" />
87
+ </ItemGroup>
88
+ <ItemGroup>
89
+ <ClCompile Include="entry.c" />
90
+ <ClCompile Include="memory.c" />
91
+ <ClCompile Include="monitor.c" />
92
+ <ClCompile Include="queue.c" />
93
+ <ClCompile Include="rb_change.c" />
94
+ <ClCompile Include="rb_monitor.c" />
95
+ <ClCompile Include="utils.c" />
96
+ <ClCompile Include="wdm.c" />
97
+ </ItemGroup>
98
+ <ItemGroup>
99
+ <None Include="extconf.rb" />
100
+ </ItemGroup>
101
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
102
+ <ImportGroup Label="ExtensionTargets">
103
+ </ImportGroup>
104
+ </Project>
@@ -0,0 +1,74 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup>
4
+ <Filter Include="Source Files">
5
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7
+ </Filter>
8
+ <Filter Include="Header Files">
9
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
11
+ </Filter>
12
+ <Filter Include="Resource Files">
13
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15
+ </Filter>
16
+ </ItemGroup>
17
+ <ItemGroup>
18
+ <ClInclude Include="entry.h">
19
+ <Filter>Header Files</Filter>
20
+ </ClInclude>
21
+ <ClInclude Include="monitor.h">
22
+ <Filter>Header Files</Filter>
23
+ </ClInclude>
24
+ <ClInclude Include="queue.h">
25
+ <Filter>Header Files</Filter>
26
+ </ClInclude>
27
+ <ClInclude Include="wdm.h">
28
+ <Filter>Header Files</Filter>
29
+ </ClInclude>
30
+ <ClInclude Include="rb_change.h">
31
+ <Filter>Header Files</Filter>
32
+ </ClInclude>
33
+ <ClInclude Include="rb_monitor.h">
34
+ <Filter>Header Files</Filter>
35
+ </ClInclude>
36
+ <ClInclude Include="utils.h">
37
+ <Filter>Header Files</Filter>
38
+ </ClInclude>
39
+ <ClInclude Include="memory.h">
40
+ <Filter>Header Files</Filter>
41
+ </ClInclude>
42
+ </ItemGroup>
43
+ <ItemGroup>
44
+ <ClCompile Include="entry.c">
45
+ <Filter>Source Files</Filter>
46
+ </ClCompile>
47
+ <ClCompile Include="monitor.c">
48
+ <Filter>Source Files</Filter>
49
+ </ClCompile>
50
+ <ClCompile Include="queue.c">
51
+ <Filter>Source Files</Filter>
52
+ </ClCompile>
53
+ <ClCompile Include="wdm.c">
54
+ <Filter>Source Files</Filter>
55
+ </ClCompile>
56
+ <ClCompile Include="rb_change.c">
57
+ <Filter>Source Files</Filter>
58
+ </ClCompile>
59
+ <ClCompile Include="rb_monitor.c">
60
+ <Filter>Source Files</Filter>
61
+ </ClCompile>
62
+ <ClCompile Include="utils.c">
63
+ <Filter>Source Files</Filter>
64
+ </ClCompile>
65
+ <ClCompile Include="memory.c">
66
+ <Filter>Source Files</Filter>
67
+ </ClCompile>
68
+ </ItemGroup>
69
+ <ItemGroup>
70
+ <None Include="extconf.rb">
71
+ <Filter>Source Files</Filter>
72
+ </None>
73
+ </ItemGroup>
74
+ </Project>
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wdm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: x86-mingw32
7
+ authors:
8
+ - Maher Sallam
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake-compiler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: guard-rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: guard-shell
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rb-readline
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rb-notifu
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: Windows Directory Monitor (WDM) is a library which can be used to monitor
111
+ directories for changes. It's mostly implemented in C and uses the Win32 API for
112
+ a better performance.
113
+ email:
114
+ - maher@sallam.me
115
+ executables: []
116
+ extensions:
117
+ - ext/wdm/extconf.rb
118
+ extra_rdoc_files: []
119
+ files:
120
+ - ext/wdm/entry.c
121
+ - ext/wdm/entry.h
122
+ - ext/wdm/extconf.rb
123
+ - ext/wdm/memory.c
124
+ - ext/wdm/memory.h
125
+ - ext/wdm/monitor.c
126
+ - ext/wdm/monitor.h
127
+ - ext/wdm/queue.c
128
+ - ext/wdm/queue.h
129
+ - ext/wdm/rb_change.c
130
+ - ext/wdm/rb_change.h
131
+ - ext/wdm/rb_monitor.c
132
+ - ext/wdm/rb_monitor.h
133
+ - ext/wdm/utils.c
134
+ - ext/wdm/utils.h
135
+ - ext/wdm/wdm.c
136
+ - ext/wdm/wdm.h
137
+ - ext/wdm/wdm.sln
138
+ - ext/wdm/wdm.vcxproj
139
+ - ext/wdm/wdm.vcxproj.filters
140
+ - LICENSE
141
+ - README.md
142
+ homepage: https://github.com/Maher4Ever/wdm
143
+ licenses: []
144
+ post_install_message:
145
+ rdoc_options: []
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: 1.9.2
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 1.8.24
163
+ signing_key:
164
+ specification_version: 3
165
+ summary: Windows Directory Monitor (WDM) is a threaded directories monitor for Windows.
166
+ test_files: []
167
+ has_rdoc: