wdm 0.0.2-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|