content_server 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/lib/content_data/content_data.rb +194 -56
  2. data/lib/content_data/version.rb +1 -1
  3. data/lib/content_server/backup_server.rb +4 -27
  4. data/lib/content_server/content_server.rb +3 -27
  5. data/lib/content_server/file_streamer.rb +2 -0
  6. data/lib/content_server/remote_content.rb +1 -2
  7. data/lib/content_server/server.rb +23 -3
  8. data/lib/content_server/version.rb +1 -1
  9. data/lib/email/version.rb +1 -1
  10. data/lib/file_copy/version.rb +1 -1
  11. data/lib/file_indexing/index_agent.rb +1 -1
  12. data/lib/file_indexing/version.rb +1 -1
  13. data/lib/file_monitoring/file_monitoring.rb +45 -32
  14. data/lib/file_monitoring/monitor_path.rb +219 -181
  15. data/lib/file_monitoring/version.rb +1 -1
  16. data/lib/file_utils/file_generator/file_generator.rb +1 -1
  17. data/lib/file_utils/file_utils.rb +2 -2
  18. data/lib/file_utils/version.rb +1 -1
  19. data/lib/log/version.rb +1 -1
  20. data/lib/networking/version.rb +1 -1
  21. data/lib/params/version.rb +1 -1
  22. data/lib/process_monitoring/version.rb +1 -1
  23. data/lib/run_in_background/version.rb +1 -1
  24. data/lib/testing_memory/testing_memory.rb +1 -1
  25. data/lib/testing_server/testing_server.rb +1 -1
  26. data/lib/testing_server/version.rb +1 -1
  27. data/spec/content_data/validations_spec.rb +2 -2
  28. data/spec/content_server/file_streamer_spec.rb +5 -0
  29. data/spec/networking/tcp_spec.rb +1 -3
  30. data/spec/validations/index_validations_spec.rb +2 -2
  31. data/test/content_data/content_data_test.rb +8 -7
  32. data/test/file_generator/file_generator_spec.rb +3 -2
  33. data/test/file_monitoring/monitor_path_test.rb +38 -4
  34. data/test/file_utils/fileutil_mksymlink_test.rb +9 -0
  35. data/test/file_utils/time_modification_test.rb +6 -2
  36. data/test/run_in_background/test_app +17 -15
  37. metadata +2 -93
  38. data/lib/content_server/queue_indexer.rb +0 -86
  39. data/test/file_indexing/index_agent_test.rb +0 -51
  40. data/test/file_indexing/index_agent_test/New.txt +0 -0
  41. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/libexslt.dll +0 -0
  42. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/libxslt.dll +0 -0
  43. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/xsltproc.exe +0 -0
  44. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exslt.h +0 -102
  45. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exsltconfig.h +0 -73
  46. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exsltexports.h +0 -140
  47. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/libexslt.h +0 -29
  48. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/attributes.h +0 -38
  49. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/documents.h +0 -93
  50. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/extensions.h +0 -262
  51. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/extra.h +0 -80
  52. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/functions.h +0 -78
  53. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/imports.h +0 -75
  54. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/keys.h +0 -53
  55. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/libxslt.h +0 -30
  56. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/namespaces.h +0 -68
  57. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/numbersInternals.h +0 -69
  58. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/pattern.h +0 -81
  59. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/preproc.h +0 -43
  60. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/security.h +0 -104
  61. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/templates.h +0 -77
  62. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/transform.h +0 -207
  63. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/trio.h +0 -216
  64. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/triodef.h +0 -220
  65. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/variables.h +0 -91
  66. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/win32config.h +0 -101
  67. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xslt.h +0 -103
  68. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltInternals.h +0 -1967
  69. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltconfig.h +0 -172
  70. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltexports.h +0 -142
  71. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltlocale.h +0 -57
  72. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltutils.h +0 -309
  73. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltwin32config.h +0 -105
  74. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libexslt.lib +0 -0
  75. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libexslt_a.lib +0 -0
  76. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libxslt.lib +0 -0
  77. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libxslt_a.lib +0 -0
  78. data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/readme.txt +0 -22
  79. data/test/file_indexing/index_agent_test/patterns.input +0 -3
  80. data/test/file_monitoring/file_monitoring_test.rb +0 -0
  81. data/test/file_monitoring/file_monitoring_test/conf.yml +0 -4
  82. data/test/file_monitoring/file_monitoring_test/conf_win32.yml +0 -5
  83. data/test/file_monitoring/file_monitoring_test/log +0 -56
@@ -1,86 +0,0 @@
1
- require 'file_indexing/index_agent'
2
- require 'file_indexing/indexer_patterns'
3
- require 'content_server/server'
4
- require 'log'
5
- require 'params'
6
-
7
- module ContentServer
8
-
9
- # Simple indexer, gets inputs events (files to index) and outputs
10
- # content data updates into output queue.
11
- class QueueIndexer
12
-
13
- def initialize(input_queue)
14
- @input_queue = input_queue
15
- end
16
-
17
- # index files and add to copy queue
18
- # delete directory with it's sub files
19
- # delete file
20
- def run
21
- # Start indexing on demand and write changes to queue
22
- thread = Thread.new do
23
- while true do
24
- (state, is_dir, path, mtime, size) = @input_queue.pop
25
- $process_vars.set('monitor to index queue size', @input_queue.size)
26
- Log.debug1("index event: state:%s dir?%s path:%s time:%s size:%s ",
27
- state, is_dir, path, mtime, size)
28
- if state == FileMonitoring::FileStatEnum::STABLE && !is_dir
29
- # Calculating checksum
30
- checksum = calc_SHA1(path)
31
- $process_vars.inc('indexed_files')
32
- $indexed_file_count += 1
33
- Log.debug1("Index checksum:%s Adding index to content data. put in queue for dynamic update.",
34
- checksum)
35
- $local_content_data_lock.synchronize{
36
- $local_content_data.add_instance(checksum, size, Params['local_server_name'], path, mtime)
37
- }
38
- elsif ((state == FileMonitoring::FileStatEnum::NON_EXISTING ||
39
- state == FileMonitoring::FileStatEnum::CHANGED) && !is_dir)
40
- # Remove file but only when non-existing.
41
- Log.debug1("File to remove: %s", path)
42
- $local_content_data_lock.synchronize{
43
- $local_content_data.remove_instance(Params['local_server_name'], path)
44
- }
45
- elsif state == FileMonitoring::FileStatEnum::NON_EXISTING && is_dir
46
- # Remove directory but only when non-existing.
47
- Log.debug1("Directory to remove: %s", path)
48
- $local_content_data_lock.synchronize{
49
- $local_content_data.remove_directory(Params['local_server_name'], path)
50
- }
51
- else
52
- Log.debug1("This case should not be handled: %s, %s, %s", state, is_dir, path)
53
- end
54
- end # while true do
55
- end # Thread.new do
56
- thread
57
- end # def run
58
-
59
- # Opens file and calculates SHA1 of it's content, returns SHA1
60
- def calc_SHA1(path)
61
- begin
62
- digest = Digest::SHA1.new
63
- File.open(path, 'rb') { |f|
64
- while buffer = f.read(65536) do
65
- digest << buffer
66
- end
67
- }
68
- rescue
69
- Log.warning("Monitored path'#{path}' does not exist. Probably file changed")
70
- end
71
- return digest.hexdigest.downcase
72
- end
73
-
74
- # Remove when not needed.
75
- # Check file existence, check it's size and modification date.
76
- # If something wrong reindex the file and update content data.
77
- #def shallow_check(file_name, file_size, file_mod_time)
78
- # shallow_instance = FileIndexing::IndexAgent.create_shallow_instance(file_name)
79
- # return false unless shallow_instance
80
- # return (shallow_instance[0] == file_size &&
81
- # shallow_instance[2] == file_mod_time)
82
- #end
83
-
84
- end # class QueueIndexer
85
- end
86
-
@@ -1,51 +0,0 @@
1
- require 'test/unit'
2
-
3
- require_relative '../../lib/file_indexing/index_agent'
4
- require 'log'
5
- require 'params'
6
-
7
- module FileIndexing
8
- module Test
9
- class IndexAgentTest < ::Test::Unit::TestCase
10
- def test_index
11
- indexer = IndexAgent.new
12
- patterns = IndexerPatterns.new
13
- patterns.add_pattern File.join(File.dirname(__FILE__), 'index_agent_test\**\*')
14
- patterns.add_pattern File.join(File.dirname(__FILE__), 'index_agent_test\**\*.h'), false
15
-
16
- indexer.index(patterns)
17
- # ./index_agent_test/lib/libexslt.lib
18
- Log.info "Contents: #{indexer.indexed_content}."
19
- assert(indexer.indexed_content.content_exists('c6d9d837659e38d906a4bbdcc6703bc37e9ac7e8'))
20
- # .index_agent_test/include/libexslt/exsltexports.h
21
- assert_equal(false, indexer.indexed_content.content_exists('5c87a31b0106b3c4bb1768e43f5b8c41139882c2'))
22
- # ./index_agent_test/bin/xsltproc.exe
23
- assert(indexer.indexed_content.content_exists('d0d57ff4834a517a52004f59ee5cdb63f2f0427b'))
24
-
25
- patterns.add_pattern('./resources/index_agent_test/lib/**/*', false)
26
- indexer = IndexAgent.new
27
-
28
- indexer.index(patterns)
29
- # ./index_agent_test/lib/libexslt.lib
30
- assert_equal(false, indexer.indexed_content.content_exists('9e409338c0d8e0bbdbf5316cb569a0afcdb321db'))
31
-
32
- # checking that existing db as a prameter for indexer is really working
33
- # i.e. no checksum calculation performs for files that were indexed but weren't changed
34
- new_indexer = IndexAgent.new
35
- event_regex = /^(call)/
36
- id_regex = /get_checksum/
37
- get_checksum_num = 0
38
- set_trace_func Proc.new { |event, file, line, id, binding, classname|
39
- if event =~ event_regex and id.to_s =~ id_regex
40
- Log.info sprintf "[%8s] %30s %30s (%s:%-2d)\n", event, id, classname, file, line
41
- get_checksum_num +=1
42
- end
43
- }
44
- new_indexer.index(patterns, indexer.indexed_content)
45
- set_trace_func nil
46
- assert_equal(new_indexer.indexed_content, indexer.indexed_content)
47
- assert_equal(0, get_checksum_num)
48
- end
49
- end
50
- end
51
- end
@@ -1,102 +0,0 @@
1
-
2
- #ifndef __EXSLT_H__
3
- #define __EXSLT_H__
4
-
5
- #include <libxml/tree.h>
6
- #include <libxml/xpath.h>
7
- #include "exsltexports.h"
8
- #include <libexslt/exsltconfig.h>
9
-
10
- #ifdef __cplusplus
11
- extern "C" {
12
- #endif
13
-
14
- EXSLTPUBVAR const char *exsltLibraryVersion;
15
- EXSLTPUBVAR const int exsltLibexsltVersion;
16
- EXSLTPUBVAR const int exsltLibxsltVersion;
17
- EXSLTPUBVAR const int exsltLibxmlVersion;
18
-
19
- /**
20
- * EXSLT_COMMON_NAMESPACE:
21
- *
22
- * Namespace for EXSLT common functions
23
- */
24
- #define EXSLT_COMMON_NAMESPACE ((const xmlChar *) "http://exslt.org/common")
25
- /**
26
- * EXSLT_CRYPTO_NAMESPACE:
27
- *
28
- * Namespace for EXSLT crypto functions
29
- */
30
- #define EXSLT_CRYPTO_NAMESPACE ((const xmlChar *) "http://exslt.org/crypto")
31
- /**
32
- * EXSLT_MATH_NAMESPACE:
33
- *
34
- * Namespace for EXSLT math functions
35
- */
36
- #define EXSLT_MATH_NAMESPACE ((const xmlChar *) "http://exslt.org/math")
37
- /**
38
- * EXSLT_SETS_NAMESPACE:
39
- *
40
- * Namespace for EXSLT set functions
41
- */
42
- #define EXSLT_SETS_NAMESPACE ((const xmlChar *) "http://exslt.org/sets")
43
- /**
44
- * EXSLT_FUNCTIONS_NAMESPACE:
45
- *
46
- * Namespace for EXSLT functions extension functions
47
- */
48
- #define EXSLT_FUNCTIONS_NAMESPACE ((const xmlChar *) "http://exslt.org/functions")
49
- /**
50
- * EXSLT_STRINGS_NAMESPACE:
51
- *
52
- * Namespace for EXSLT strings functions
53
- */
54
- #define EXSLT_STRINGS_NAMESPACE ((const xmlChar *) "http://exslt.org/strings")
55
- /**
56
- * EXSLT_DATE_NAMESPACE:
57
- *
58
- * Namespace for EXSLT date functions
59
- */
60
- #define EXSLT_DATE_NAMESPACE ((const xmlChar *) "http://exslt.org/dates-and-times")
61
- /**
62
- * EXSLT_DYNAMIC_NAMESPACE:
63
- *
64
- * Namespace for EXSLT dynamic functions
65
- */
66
- #define EXSLT_DYNAMIC_NAMESPACE ((const xmlChar *) "http://exslt.org/dynamic")
67
-
68
- /**
69
- * SAXON_NAMESPACE:
70
- *
71
- * Namespace for SAXON extensions functions
72
- */
73
- #define SAXON_NAMESPACE ((const xmlChar *) "http://icl.com/saxon")
74
-
75
- EXSLTPUBFUN void EXSLTCALL exsltCommonRegister (void);
76
- #ifdef EXSLT_CRYPTO_ENABLED
77
- EXSLTPUBFUN void EXSLTCALL exsltCryptoRegister (void);
78
- #endif
79
- EXSLTPUBFUN void EXSLTCALL exsltMathRegister (void);
80
- EXSLTPUBFUN void EXSLTCALL exsltSetsRegister (void);
81
- EXSLTPUBFUN void EXSLTCALL exsltFuncRegister (void);
82
- EXSLTPUBFUN void EXSLTCALL exsltStrRegister (void);
83
- EXSLTPUBFUN void EXSLTCALL exsltDateRegister (void);
84
- EXSLTPUBFUN void EXSLTCALL exsltSaxonRegister (void);
85
- EXSLTPUBFUN void EXSLTCALL exsltDynRegister(void);
86
-
87
- EXSLTPUBFUN void EXSLTCALL exsltRegisterAll (void);
88
-
89
- EXSLTPUBFUN int EXSLTCALL exsltDateXpathCtxtRegister (xmlXPathContextPtr ctxt,
90
- const xmlChar *prefix);
91
- EXSLTPUBFUN int EXSLTCALL exsltMathXpathCtxtRegister (xmlXPathContextPtr ctxt,
92
- const xmlChar *prefix);
93
- EXSLTPUBFUN int EXSLTCALL exsltSetsXpathCtxtRegister (xmlXPathContextPtr ctxt,
94
- const xmlChar *prefix);
95
- EXSLTPUBFUN int EXSLTCALL exsltStrXpathCtxtRegister (xmlXPathContextPtr ctxt,
96
- const xmlChar *prefix);
97
-
98
- #ifdef __cplusplus
99
- }
100
- #endif
101
- #endif /* __EXSLT_H__ */
102
-
@@ -1,73 +0,0 @@
1
- /*
2
- * exsltconfig.h: compile-time version informations for the EXSLT library
3
- *
4
- * See Copyright for the status of this software.
5
- *
6
- * daniel@veillard.com
7
- */
8
-
9
- #ifndef __XML_EXSLTCONFIG_H__
10
- #define __XML_EXSLTCONFIG_H__
11
-
12
- #ifdef __cplusplus
13
- extern "C" {
14
- #endif
15
-
16
- /**
17
- * LIBEXSLT_DOTTED_VERSION:
18
- *
19
- * the version string like "1.2.3"
20
- */
21
- #define LIBEXSLT_DOTTED_VERSION "0.8.15"
22
-
23
- /**
24
- * LIBEXSLT_VERSION:
25
- *
26
- * the version number: 1.2.3 value is 10203
27
- */
28
- #define LIBEXSLT_VERSION 815
29
-
30
- /**
31
- * LIBEXSLT_VERSION_STRING:
32
- *
33
- * the version number string, 1.2.3 value is "10203"
34
- */
35
- #define LIBEXSLT_VERSION_STRING "815"
36
-
37
- /**
38
- * LIBEXSLT_VERSION_EXTRA:
39
- *
40
- * extra version information, used to show a CVS compilation
41
- */
42
- #define LIBEXSLT_VERSION_EXTRA ""
43
-
44
- /**
45
- * WITH_CRYPTO:
46
- *
47
- * Whether crypto support is configured into exslt
48
- */
49
- #if 1
50
- #define EXSLT_CRYPTO_ENABLED
51
- #endif
52
-
53
- /**
54
- * ATTRIBUTE_UNUSED:
55
- *
56
- * This macro is used to flag unused function parameters to GCC
57
- */
58
- #ifdef __GNUC__
59
- #ifdef HAVE_ANSIDECL_H
60
- #include <ansidecl.h>
61
- #endif
62
- #ifndef ATTRIBUTE_UNUSED
63
- #define ATTRIBUTE_UNUSED __attribute__((unused))
64
- #endif
65
- #else
66
- #define ATTRIBUTE_UNUSED
67
- #endif
68
-
69
- #ifdef __cplusplus
70
- }
71
- #endif
72
-
73
- #endif /* __XML_EXSLTCONFIG_H__ */
@@ -1,140 +0,0 @@
1
- /*
2
- * exsltexports.h : macros for marking symbols as exportable/importable.
3
- *
4
- * See Copyright for the status of this software.
5
- *
6
- * igor@zlatkovic.com
7
- */
8
-
9
- #ifndef __EXSLT_EXPORTS_H__
10
- #define __EXSLT_EXPORTS_H__
11
-
12
- /**
13
- * EXSLTPUBFUN, EXSLTPUBVAR, EXSLTCALL
14
- *
15
- * Macros which declare an exportable function, an exportable variable and
16
- * the calling convention used for functions.
17
- *
18
- * Please use an extra block for every platform/compiler combination when
19
- * modifying this, rather than overlong #ifdef lines. This helps
20
- * readability as well as the fact that different compilers on the same
21
- * platform might need different definitions.
22
- */
23
-
24
- /**
25
- * EXSLTPUBFUN:
26
- *
27
- * Macros which declare an exportable function
28
- */
29
- #define EXSLTPUBFUN
30
- /**
31
- * EXSLTPUBVAR:
32
- *
33
- * Macros which declare an exportable variable
34
- */
35
- #define EXSLTPUBVAR extern
36
- /**
37
- * EXSLTCALL:
38
- *
39
- * Macros which declare the called convention for exported functions
40
- */
41
- #define EXSLTCALL
42
-
43
- /** DOC_DISABLE */
44
-
45
- /* Windows platform with MS compiler */
46
- #if defined(_WIN32) && defined(_MSC_VER)
47
- #undef EXSLTPUBFUN
48
- #undef EXSLTPUBVAR
49
- #undef EXSLTCALL
50
- #if defined(IN_LIBEXSLT) && !defined(LIBEXSLT_STATIC)
51
- #define EXSLTPUBFUN __declspec(dllexport)
52
- #define EXSLTPUBVAR __declspec(dllexport)
53
- #else
54
- #define EXSLTPUBFUN
55
- #if !defined(LIBEXSLT_STATIC)
56
- #define EXSLTPUBVAR __declspec(dllimport) extern
57
- #else
58
- #define EXSLTPUBVAR extern
59
- #endif
60
- #endif
61
- #define EXSLTCALL __cdecl
62
- #if !defined _REENTRANT
63
- #define _REENTRANT
64
- #endif
65
- #endif
66
-
67
- /* Windows platform with Borland compiler */
68
- #if defined(_WIN32) && defined(__BORLANDC__)
69
- #undef EXSLTPUBFUN
70
- #undef EXSLTPUBVAR
71
- #undef EXSLTCALL
72
- #if defined(IN_LIBEXSLT) && !defined(LIBEXSLT_STATIC)
73
- #define EXSLTPUBFUN __declspec(dllexport)
74
- #define EXSLTPUBVAR __declspec(dllexport) extern
75
- #else
76
- #define EXSLTPUBFUN
77
- #if !defined(LIBEXSLT_STATIC)
78
- #define EXSLTPUBVAR __declspec(dllimport) extern
79
- #else
80
- #define EXSLTPUBVAR extern
81
- #endif
82
- #endif
83
- #define EXSLTCALL __cdecl
84
- #if !defined _REENTRANT
85
- #define _REENTRANT
86
- #endif
87
- #endif
88
-
89
- /* Windows platform with GNU compiler (Mingw) */
90
- #if defined(_WIN32) && defined(__MINGW32__)
91
- #undef EXSLTPUBFUN
92
- #undef EXSLTPUBVAR
93
- #undef EXSLTCALL
94
- /*
95
- #if defined(IN_LIBEXSLT) && !defined(LIBEXSLT_STATIC)
96
- */
97
- #if !defined(LIBEXSLT_STATIC)
98
- #define EXSLTPUBFUN __declspec(dllexport)
99
- #define EXSLTPUBVAR __declspec(dllexport) extern
100
- #else
101
- #define EXSLTPUBFUN
102
- #if !defined(LIBEXSLT_STATIC)
103
- #define EXSLTPUBVAR __declspec(dllimport) extern
104
- #else
105
- #define EXSLTPUBVAR extern
106
- #endif
107
- #endif
108
- #define EXSLTCALL __cdecl
109
- #if !defined _REENTRANT
110
- #define _REENTRANT
111
- #endif
112
- #endif
113
-
114
- /* Cygwin platform, GNU compiler */
115
- #if defined(_WIN32) && defined(__CYGWIN__)
116
- #undef EXSLTPUBFUN
117
- #undef EXSLTPUBVAR
118
- #undef EXSLTCALL
119
- #if defined(IN_LIBEXSLT) && !defined(LIBEXSLT_STATIC)
120
- #define EXSLTPUBFUN __declspec(dllexport)
121
- #define EXSLTPUBVAR __declspec(dllexport)
122
- #else
123
- #define EXSLTPUBFUN
124
- #if !defined(LIBEXSLT_STATIC)
125
- #define EXSLTPUBVAR __declspec(dllimport) extern
126
- #else
127
- #define EXSLTPUBVAR
128
- #endif
129
- #endif
130
- #define EXSLTCALL __cdecl
131
- #endif
132
-
133
- /* Compatibility */
134
- #if !defined(LIBEXSLT_PUBLIC)
135
- #define LIBEXSLT_PUBLIC EXSLTPUBVAR
136
- #endif
137
-
138
- #endif /* __EXSLT_EXPORTS_H__ */
139
-
140
-