wdm 0.0.2-mingw32
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.
- data/LICENSE +22 -0
- data/README.md +58 -0
- data/ext/wdm/entry.c +67 -0
- data/ext/wdm/entry.h +47 -0
- data/ext/wdm/extconf.rb +9 -0
- data/ext/wdm/memory.c +27 -0
- data/ext/wdm/memory.h +32 -0
- data/ext/wdm/monitor.c +70 -0
- data/ext/wdm/monitor.h +50 -0
- data/ext/wdm/queue.c +108 -0
- data/ext/wdm/queue.h +50 -0
- data/ext/wdm/rb_change.c +185 -0
- data/ext/wdm/rb_change.h +28 -0
- data/ext/wdm/rb_monitor.c +531 -0
- data/ext/wdm/rb_monitor.h +39 -0
- data/ext/wdm/utils.c +60 -0
- data/ext/wdm/utils.h +25 -0
- data/ext/wdm/wdm.c +45 -0
- data/ext/wdm/wdm.h +66 -0
- data/ext/wdm/wdm.sln +20 -0
- data/ext/wdm/wdm.vcxproj +104 -0
- data/ext/wdm/wdm.vcxproj.filters +74 -0
- metadata +167 -0
@@ -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
|
data/ext/wdm/utils.c
ADDED
@@ -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
|
+
}
|
data/ext/wdm/utils.h
ADDED
@@ -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
|
data/ext/wdm/wdm.c
ADDED
@@ -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
|
+
}
|
data/ext/wdm/wdm.h
ADDED
@@ -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
|
data/ext/wdm/wdm.sln
ADDED
@@ -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
|
data/ext/wdm/wdm.vcxproj
ADDED
@@ -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: 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:
|