content_server 1.3.1 → 1.4.0

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.
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
-