ooxml_crypt 0.1.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.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +58 -0
- data/Rakefile +12 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/ext/ooxml_crypt/extconf.rb +18 -0
- data/ext/ooxml_crypt/ooxml_crypt.c +27 -0
- data/ext/ooxml_crypt/ooxml_crypt.h +7 -0
- data/lib/ooxml_crypt/version.rb +5 -0
- data/lib/ooxml_crypt.rb +75 -0
- data/vendor/cybozulib/.github/workflows/main.yml +12 -0
- data/vendor/cybozulib/.gitignore +5 -0
- data/vendor/cybozulib/CMakeLists.txt +6 -0
- data/vendor/cybozulib/COPYRIGHT +27 -0
- data/vendor/cybozulib/Makefile +26 -0
- data/vendor/cybozulib/bin/libeay32.dll +0 -0
- data/vendor/cybozulib/bin/libmecab.dll +0 -0
- data/vendor/cybozulib/bin/ssleay32.dll +0 -0
- data/vendor/cybozulib/common.mk +116 -0
- data/vendor/cybozulib/common.props +25 -0
- data/vendor/cybozulib/cybozulib.sln +286 -0
- data/vendor/cybozulib/debug.props +14 -0
- data/vendor/cybozulib/include/cybozu/array.hpp +197 -0
- data/vendor/cybozulib/include/cybozu/atoi.hpp +238 -0
- data/vendor/cybozulib/include/cybozu/atomic.hpp +146 -0
- data/vendor/cybozulib/include/cybozu/base64.hpp +210 -0
- data/vendor/cybozulib/include/cybozu/benchmark.hpp +212 -0
- data/vendor/cybozulib/include/cybozu/bfd.hpp +105 -0
- data/vendor/cybozulib/include/cybozu/bit_operation.hpp +139 -0
- data/vendor/cybozulib/include/cybozu/bitvector.hpp +358 -0
- data/vendor/cybozulib/include/cybozu/condition_variable.hpp +113 -0
- data/vendor/cybozulib/include/cybozu/condition_variable_cs.hpp +74 -0
- data/vendor/cybozulib/include/cybozu/config.hpp +392 -0
- data/vendor/cybozulib/include/cybozu/critical_section.hpp +60 -0
- data/vendor/cybozulib/include/cybozu/crypto.hpp +321 -0
- data/vendor/cybozulib/include/cybozu/csucvector.hpp +624 -0
- data/vendor/cybozulib/include/cybozu/csv.hpp +294 -0
- data/vendor/cybozulib/include/cybozu/data_type.hpp +27 -0
- data/vendor/cybozulib/include/cybozu/endian.hpp +224 -0
- data/vendor/cybozulib/include/cybozu/env.hpp +63 -0
- data/vendor/cybozulib/include/cybozu/event.hpp +122 -0
- data/vendor/cybozulib/include/cybozu/exception.hpp +253 -0
- data/vendor/cybozulib/include/cybozu/file.hpp +626 -0
- data/vendor/cybozulib/include/cybozu/fmindex.hpp +291 -0
- data/vendor/cybozulib/include/cybozu/format.hpp +93 -0
- data/vendor/cybozulib/include/cybozu/frequency.hpp +264 -0
- data/vendor/cybozulib/include/cybozu/hash.hpp +67 -0
- data/vendor/cybozulib/include/cybozu/inttype.hpp +174 -0
- data/vendor/cybozulib/include/cybozu/itoa.hpp +336 -0
- data/vendor/cybozulib/include/cybozu/json.hpp +120 -0
- data/vendor/cybozulib/include/cybozu/line_stream.hpp +149 -0
- data/vendor/cybozulib/include/cybozu/link_libeay32.hpp +21 -0
- data/vendor/cybozulib/include/cybozu/link_mpir.hpp +18 -0
- data/vendor/cybozulib/include/cybozu/link_ssleay32.hpp +19 -0
- data/vendor/cybozulib/include/cybozu/log.hpp +237 -0
- data/vendor/cybozulib/include/cybozu/minixml.hpp +452 -0
- data/vendor/cybozulib/include/cybozu/mmap.hpp +143 -0
- data/vendor/cybozulib/include/cybozu/mutex.hpp +144 -0
- data/vendor/cybozulib/include/cybozu/nlp/mecab.hpp +96 -0
- data/vendor/cybozulib/include/cybozu/nlp/plsi.hpp +315 -0
- data/vendor/cybozulib/include/cybozu/nlp/random.hpp +74 -0
- data/vendor/cybozulib/include/cybozu/nlp/sparse.hpp +529 -0
- data/vendor/cybozulib/include/cybozu/nlp/svd.hpp +486 -0
- data/vendor/cybozulib/include/cybozu/nlp/tfidf.hpp +226 -0
- data/vendor/cybozulib/include/cybozu/nlp/top_score.hpp +75 -0
- data/vendor/cybozulib/include/cybozu/option.hpp +743 -0
- data/vendor/cybozulib/include/cybozu/parallel.hpp +88 -0
- data/vendor/cybozulib/include/cybozu/pcg.hpp +72 -0
- data/vendor/cybozulib/include/cybozu/process.hpp +324 -0
- data/vendor/cybozulib/include/cybozu/quit_signal_handler.hpp +66 -0
- data/vendor/cybozulib/include/cybozu/random_generator.hpp +144 -0
- data/vendor/cybozulib/include/cybozu/regex.hpp +463 -0
- data/vendor/cybozulib/include/cybozu/select8.hpp +279 -0
- data/vendor/cybozulib/include/cybozu/serializer.hpp +363 -0
- data/vendor/cybozulib/include/cybozu/sha1.hpp +209 -0
- data/vendor/cybozulib/include/cybozu/sha2.hpp +506 -0
- data/vendor/cybozulib/include/cybozu/siphash.hpp +105 -0
- data/vendor/cybozulib/include/cybozu/socket.hpp +785 -0
- data/vendor/cybozulib/include/cybozu/ssl.hpp +203 -0
- data/vendor/cybozulib/include/cybozu/stacktrace.hpp +291 -0
- data/vendor/cybozulib/include/cybozu/stream.hpp +269 -0
- data/vendor/cybozulib/include/cybozu/string.hpp +1746 -0
- data/vendor/cybozulib/include/cybozu/string_operation.hpp +365 -0
- data/vendor/cybozulib/include/cybozu/sucvector.hpp +378 -0
- data/vendor/cybozulib/include/cybozu/test.hpp +373 -0
- data/vendor/cybozulib/include/cybozu/thread.hpp +229 -0
- data/vendor/cybozulib/include/cybozu/time.hpp +281 -0
- data/vendor/cybozulib/include/cybozu/tls.hpp +115 -0
- data/vendor/cybozulib/include/cybozu/unordered_map.hpp +13 -0
- data/vendor/cybozulib/include/cybozu/unordered_set.hpp +13 -0
- data/vendor/cybozulib/include/cybozu/v128.hpp +376 -0
- data/vendor/cybozulib/include/cybozu/wavelet_matrix.hpp +345 -0
- data/vendor/cybozulib/include/cybozu/xorshift.hpp +189 -0
- data/vendor/cybozulib/include/cybozu/zlib.hpp +325 -0
- data/vendor/cybozulib/include/sais.hxx +364 -0
- data/vendor/cybozulib/misc/make_select8tbl.cpp +26 -0
- data/vendor/cybozulib/mk.bat +37 -0
- data/vendor/cybozulib/readme.md +29 -0
- data/vendor/cybozulib/release.props +12 -0
- data/vendor/cybozulib/sample/Makefile +30 -0
- data/vendor/cybozulib/sample/csucvector_smpl.cpp +42 -0
- data/vendor/cybozulib/sample/data/svd/org/test1.S +4 -0
- data/vendor/cybozulib/sample/data/svd/org/test1.U +4 -0
- data/vendor/cybozulib/sample/data/svd/org/test1.V +6 -0
- data/vendor/cybozulib/sample/data/svd/test1 +4 -0
- data/vendor/cybozulib/sample/data/svd/test2 +4 -0
- data/vendor/cybozulib/sample/desymbol.cpp +127 -0
- data/vendor/cybozulib/sample/exception_smpl.cpp +46 -0
- data/vendor/cybozulib/sample/fmindex_smpl.cpp +231 -0
- data/vendor/cybozulib/sample/log_smpl.cpp +19 -0
- data/vendor/cybozulib/sample/mecab_smpl.cpp +37 -0
- data/vendor/cybozulib/sample/option2_smpl.cpp +68 -0
- data/vendor/cybozulib/sample/option_smpl.cpp +42 -0
- data/vendor/cybozulib/sample/plsi_smpl.cpp +207 -0
- data/vendor/cybozulib/sample/proj/exception_smpl.vcproj +184 -0
- data/vendor/cybozulib/sample/proj/mecab_smpl.vcproj +184 -0
- data/vendor/cybozulib/sample/proj/ssl_smpl/ssl_smpl.vcxproj +85 -0
- data/vendor/cybozulib/sample/proj/ssl_smpl.vcproj +347 -0
- data/vendor/cybozulib/sample/proj/stacktrace_smpl/stacktrace_smpl.vcxproj +85 -0
- data/vendor/cybozulib/sample/proj/svd_smpl.vcproj +184 -0
- data/vendor/cybozulib/sample/quit_signal_handler.cpp +30 -0
- data/vendor/cybozulib/sample/serializer_smpl.cpp +196 -0
- data/vendor/cybozulib/sample/socket_smpl.cpp +82 -0
- data/vendor/cybozulib/sample/ssl_smpl.cpp +39 -0
- data/vendor/cybozulib/sample/stacktrace_smpl.cpp +52 -0
- data/vendor/cybozulib/sample/svd_bench_smpl.cpp +143 -0
- data/vendor/cybozulib/sample/svd_smpl.cpp +94 -0
- data/vendor/cybozulib/sample/wm_bench_smpl.cpp +182 -0
- data/vendor/cybozulib/sample/zlib_smpl.cpp +41 -0
- data/vendor/cybozulib/src/Makefile +8 -0
- data/vendor/cybozulib/src/base/Makefile +19 -0
- data/vendor/cybozulib/test/Makefile +12 -0
- data/vendor/cybozulib/test/base/Makefile +37 -0
- data/vendor/cybozulib/test/base/array_test.cpp +173 -0
- data/vendor/cybozulib/test/base/atoi_test.cpp +774 -0
- data/vendor/cybozulib/test/base/atomic_test.cpp +49 -0
- data/vendor/cybozulib/test/base/base64_test.cpp +113 -0
- data/vendor/cybozulib/test/base/bit_operation_test.cpp +134 -0
- data/vendor/cybozulib/test/base/bitvector_test.cpp +204 -0
- data/vendor/cybozulib/test/base/condition_variable_cs_test.cpp +92 -0
- data/vendor/cybozulib/test/base/condition_variable_test.cpp +88 -0
- data/vendor/cybozulib/test/base/config_test.cpp +236 -0
- data/vendor/cybozulib/test/base/crypto_test.cpp +122 -0
- data/vendor/cybozulib/test/base/csucvector_test.cpp +63 -0
- data/vendor/cybozulib/test/base/csv_test.cpp +182 -0
- data/vendor/cybozulib/test/base/data/a.xml +26 -0
- data/vendor/cybozulib/test/base/endian_test.cpp +56 -0
- data/vendor/cybozulib/test/base/env_test.cpp +22 -0
- data/vendor/cybozulib/test/base/event_test.cpp +41 -0
- data/vendor/cybozulib/test/base/file_test.cpp +233 -0
- data/vendor/cybozulib/test/base/fmindex_test.cpp +118 -0
- data/vendor/cybozulib/test/base/format_test.cpp +12 -0
- data/vendor/cybozulib/test/base/frequency_test.cpp +104 -0
- data/vendor/cybozulib/test/base/itoa_test.cpp +522 -0
- data/vendor/cybozulib/test/base/line_stream_test.cpp +208 -0
- data/vendor/cybozulib/test/base/mecab_test.cpp +41 -0
- data/vendor/cybozulib/test/base/minixml_test.cpp +103 -0
- data/vendor/cybozulib/test/base/mmap_test.cpp +15 -0
- data/vendor/cybozulib/test/base/option_test.cpp +487 -0
- data/vendor/cybozulib/test/base/parallel_test.cpp +48 -0
- data/vendor/cybozulib/test/base/proj/array_test/array_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/atoi_test/atoi_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/atomic_test/atomic_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/base64_test/base64_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/condition_variable_cs_test/condition_variable_cs_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/condition_variable_test/condition_variable_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/config_test/config_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/csv_test/csv_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/endian_test/endian_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/env_test/env_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/event_test/event_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/file_test/file_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/itoa_test/itoa_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/mecab_test/mecab_test.vcxproj +88 -0
- data/vendor/cybozulib/test/base/proj/minixml_test/minixml_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/mmap_test/mmap_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/serializer_test/serializer_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/sha1_test/sha1_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/stream_test/stream_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/string_operation_test/string_operation_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/string_test/string_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/thread_test/thread_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/time_test/time_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/tls_test/tls_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/proj/zlib_test/zlib_test.vcxproj +86 -0
- data/vendor/cybozulib/test/base/random_generator_test.cpp +28 -0
- data/vendor/cybozulib/test/base/regex_test.cpp +74 -0
- data/vendor/cybozulib/test/base/serializer_test.cpp +483 -0
- data/vendor/cybozulib/test/base/sha1_test.cpp +61 -0
- data/vendor/cybozulib/test/base/sha2_test.cpp +191 -0
- data/vendor/cybozulib/test/base/siphash_test.cpp +33 -0
- data/vendor/cybozulib/test/base/socket_test.cpp +76 -0
- data/vendor/cybozulib/test/base/stream_test.cpp +101 -0
- data/vendor/cybozulib/test/base/string_operation_test.cpp +340 -0
- data/vendor/cybozulib/test/base/string_test.cpp +1705 -0
- data/vendor/cybozulib/test/base/sucvector_test.cpp +312 -0
- data/vendor/cybozulib/test/base/thread_test.cpp +62 -0
- data/vendor/cybozulib/test/base/time_test.cpp +164 -0
- data/vendor/cybozulib/test/base/tls_test.cpp +50 -0
- data/vendor/cybozulib/test/base/wavelet_matrix_test.cpp +145 -0
- data/vendor/cybozulib/test/base/zlib_test.cpp +371 -0
- data/vendor/cybozulib/test/nlp/Makefile +27 -0
- data/vendor/cybozulib/test/nlp/proj/random_test.vcproj +184 -0
- data/vendor/cybozulib/test/nlp/proj/sparse_test.vcproj +184 -0
- data/vendor/cybozulib/test/nlp/proj/svd_test.vcproj +184 -0
- data/vendor/cybozulib/test/nlp/random_test.cpp +62 -0
- data/vendor/cybozulib/test/nlp/sparse_test.cpp +347 -0
- data/vendor/cybozulib/test/nlp/svd_test.cpp +234 -0
- data/vendor/cybozulib/test/nlp/top_score_test.cpp +40 -0
- data/vendor/cybozulib/tool/create_vcproj.py +186 -0
- data/vendor/cybozulib/tool/vcproj_tmpl.py +185 -0
- data/vendor/msoffice/COPYRIGHT +27 -0
- data/vendor/msoffice/Makefile +29 -0
- data/vendor/msoffice/bin/64/msoc.dll +0 -0
- data/vendor/msoffice/bin/64/msocsample.exe +0 -0
- data/vendor/msoffice/bin/64/msoffice-crypt.exe +0 -0
- data/vendor/msoffice/bin/msoc.dll +0 -0
- data/vendor/msoffice/bin/msocsample.exe +0 -0
- data/vendor/msoffice/bin/msoffice-crypt.exe +0 -0
- data/vendor/msoffice/common.mk +71 -0
- data/vendor/msoffice/common.props +26 -0
- data/vendor/msoffice/debug.props +14 -0
- data/vendor/msoffice/include/attack.hpp +211 -0
- data/vendor/msoffice/include/cfb.hpp +777 -0
- data/vendor/msoffice/include/crypto_util.hpp +450 -0
- data/vendor/msoffice/include/custom_sha1.hpp +342 -0
- data/vendor/msoffice/include/decode.hpp +240 -0
- data/vendor/msoffice/include/encode.hpp +221 -0
- data/vendor/msoffice/include/make_dataspace.hpp +316 -0
- data/vendor/msoffice/include/msoc.h +129 -0
- data/vendor/msoffice/include/resource.hpp +7 -0
- data/vendor/msoffice/include/standard_encryption.hpp +145 -0
- data/vendor/msoffice/include/uint32vec.hpp +179 -0
- data/vendor/msoffice/include/util.hpp +212 -0
- data/vendor/msoffice/lib/.emptydir +0 -0
- data/vendor/msoffice/misc/decrypt-xls.vbs +46 -0
- data/vendor/msoffice/mk.bat +1 -0
- data/vendor/msoffice/mkdll.bat +3 -0
- data/vendor/msoffice/msoc.def +13 -0
- data/vendor/msoffice/msocsample.py +178 -0
- data/vendor/msoffice/msoffice12.sln +31 -0
- data/vendor/msoffice/readme.md +110 -0
- data/vendor/msoffice/release.props +28 -0
- data/vendor/msoffice/src/Makefile +19 -0
- data/vendor/msoffice/src/attack.cpp +124 -0
- data/vendor/msoffice/src/cfb_test.cpp +77 -0
- data/vendor/msoffice/src/minisample.c +54 -0
- data/vendor/msoffice/src/msocdll.cpp +276 -0
- data/vendor/msoffice/src/msocsample.c +136 -0
- data/vendor/msoffice/src/msoffice-crypt.cpp +219 -0
- data/vendor/msoffice/src/proj/attack/attack.vcxproj +88 -0
- data/vendor/msoffice/src/proj/main/msoffice-crypt.vcxproj +88 -0
- data/vendor/msoffice/src/sha1.cpp +234 -0
- data/vendor/msoffice/test/Makefile +20 -0
- data/vendor/msoffice/test/cfb_test.cpp +74 -0
- data/vendor/msoffice/test/hash_test.cpp +59 -0
- data/vendor/msoffice/test/proj/cfb/cfb_test.vcxproj +90 -0
- data/vendor/msoffice/test/proj/hash/hash_test.vcxproj +90 -0
- data/vendor/msoffice/test/sampl.bat +8 -0
- data/vendor/msoffice/test_all.py +46 -0
- data/vendor/update +4 -0
- metadata +351 -0
@@ -0,0 +1,149 @@
|
|
1
|
+
#pragma once
|
2
|
+
/**
|
3
|
+
@file
|
4
|
+
@brief line stream class
|
5
|
+
*/
|
6
|
+
#include <string>
|
7
|
+
#include <memory.h>
|
8
|
+
#include <iosfwd>
|
9
|
+
#include <cybozu/file.hpp>
|
10
|
+
|
11
|
+
namespace cybozu {
|
12
|
+
|
13
|
+
namespace line_stream {
|
14
|
+
|
15
|
+
#define CYBOZU_STREAM_CRLF "\x0d\x0a"
|
16
|
+
|
17
|
+
const char CR = '\x0d';
|
18
|
+
const char LF = '\x0a';
|
19
|
+
const char CRLF[] = CYBOZU_STREAM_CRLF;
|
20
|
+
|
21
|
+
} // line_stream
|
22
|
+
|
23
|
+
/**
|
24
|
+
construct lines from reader
|
25
|
+
accept 0x0d 0xa and 0x0a and remove them
|
26
|
+
next() returns one line without CRLF
|
27
|
+
throw exception if line.size() > maxLineSize (line.size() does not include CRLF)
|
28
|
+
|
29
|
+
Remark:next() may return the last data without CRLF
|
30
|
+
|
31
|
+
Reader must have size_t readSome(char *buf, size_t size); method
|
32
|
+
|
33
|
+
How to use this
|
34
|
+
|
35
|
+
LinstStreamT<Reader> lineStream(reader);
|
36
|
+
for (;;) {
|
37
|
+
std::string line;
|
38
|
+
if (!lineStream.next(line)) break;
|
39
|
+
}
|
40
|
+
*/
|
41
|
+
template<class Reader>
|
42
|
+
class LineStreamT {
|
43
|
+
Reader& reader_;
|
44
|
+
size_t maxLineSize_;
|
45
|
+
std::string buf_;
|
46
|
+
size_t bufSize_;
|
47
|
+
const char *next_;
|
48
|
+
bool eof_;
|
49
|
+
LineStreamT(const LineStreamT&);
|
50
|
+
void operator=(const LineStreamT&);
|
51
|
+
void verifySize(const char *begin, const char *end) const
|
52
|
+
{
|
53
|
+
if (static_cast<uintptr_t>(end - begin) > maxLineSize_) {
|
54
|
+
throw cybozu::Exception("LineStreamT:next:line is too long") << cybozu::exception::makeString(begin, 10);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
public:
|
58
|
+
explicit LineStreamT(Reader& reader, size_t maxLineSize = 1024 * 2)
|
59
|
+
: reader_(reader)
|
60
|
+
, maxLineSize_(maxLineSize)
|
61
|
+
, buf_(maxLineSize * 2, 0)
|
62
|
+
, bufSize_(0)
|
63
|
+
, next_(buf_.data())
|
64
|
+
, eof_(false)
|
65
|
+
{
|
66
|
+
}
|
67
|
+
/**
|
68
|
+
get line without CRLF
|
69
|
+
@param begin [out] begin of line
|
70
|
+
@param end [out] end of line
|
71
|
+
@retval true if sucess
|
72
|
+
@retval false if not data
|
73
|
+
*/
|
74
|
+
bool next(const char **begin, const char **end)
|
75
|
+
{
|
76
|
+
if (eof_) return false;
|
77
|
+
for (;;) {
|
78
|
+
const size_t remainSize = &buf_[bufSize_] - next_;
|
79
|
+
if (remainSize > 0) {
|
80
|
+
const char *endl = static_cast<const char *>(memchr(next_, cybozu::line_stream::LF, remainSize));
|
81
|
+
if (endl) {
|
82
|
+
if (endl > next_ && endl[-1] == cybozu::line_stream::CR) {
|
83
|
+
*end = endl - 1;
|
84
|
+
} else {
|
85
|
+
*end = endl;
|
86
|
+
}
|
87
|
+
*begin = next_;
|
88
|
+
verifySize(*begin, *end);
|
89
|
+
next_ = endl + 1;
|
90
|
+
return true;
|
91
|
+
}
|
92
|
+
// move next_ to top of buf_
|
93
|
+
for (size_t i = 0; i < remainSize; i++) {
|
94
|
+
buf_[i] = next_[i];
|
95
|
+
}
|
96
|
+
bufSize_ = remainSize;
|
97
|
+
} else {
|
98
|
+
bufSize_ = 0;
|
99
|
+
}
|
100
|
+
next_ = buf_.data();
|
101
|
+
size_t readSize = reader_.readSome(&buf_[bufSize_], buf_.size() - bufSize_);
|
102
|
+
if (readSize == 0) {
|
103
|
+
eof_ = true;
|
104
|
+
if (bufSize_ == 0) return false;
|
105
|
+
if (bufSize_ > maxLineSize_) {
|
106
|
+
throw cybozu::Exception("LineStreamT:next:no CRLF");
|
107
|
+
}
|
108
|
+
// take all remain buffer
|
109
|
+
*begin= buf_.data();
|
110
|
+
*end = &buf_[bufSize_];
|
111
|
+
verifySize(*begin, *end);
|
112
|
+
return true;
|
113
|
+
}
|
114
|
+
bufSize_ += readSize;
|
115
|
+
}
|
116
|
+
}
|
117
|
+
/**
|
118
|
+
get line
|
119
|
+
*/
|
120
|
+
bool next(std::string& line)
|
121
|
+
{
|
122
|
+
const char *begin;
|
123
|
+
const char *end;
|
124
|
+
if (next(&begin, &end)) {
|
125
|
+
line.assign(begin, end);
|
126
|
+
return true;
|
127
|
+
}
|
128
|
+
return false;
|
129
|
+
}
|
130
|
+
/*
|
131
|
+
get remaining raw data
|
132
|
+
*/
|
133
|
+
void getRemain(std::string& remain) const
|
134
|
+
{
|
135
|
+
if (eof_) {
|
136
|
+
remain.clear();
|
137
|
+
} else {
|
138
|
+
remain.assign(next_, &buf_[bufSize_]);
|
139
|
+
}
|
140
|
+
}
|
141
|
+
std::string getRemain() const
|
142
|
+
{
|
143
|
+
std::string remain;
|
144
|
+
getRemain(remain);
|
145
|
+
return remain;
|
146
|
+
}
|
147
|
+
};
|
148
|
+
|
149
|
+
} // cybozu
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#pragma once
|
2
|
+
/**
|
3
|
+
@file
|
4
|
+
@brief link libeay32.lib of openssl
|
5
|
+
@author MITSUNARI Shigeo(@herumi)
|
6
|
+
*/
|
7
|
+
#if defined(_WIN32) && defined(_MT)
|
8
|
+
#if _MSC_VER >= 1900 // VC2015
|
9
|
+
#ifdef _WIN64
|
10
|
+
#pragma comment(lib, "mt/14/libeay32.lib")
|
11
|
+
#else
|
12
|
+
#pragma comment(lib, "mt/14/32/libeay32.lib")
|
13
|
+
#endif
|
14
|
+
// #elif _MSC_VER == 1800 // VC2013
|
15
|
+
#else
|
16
|
+
#pragma comment(lib, "mt/12/libeay32.lib")
|
17
|
+
#endif
|
18
|
+
#pragma comment(lib, "advapi32.lib")
|
19
|
+
#pragma comment(lib, "gdi32.lib")
|
20
|
+
#pragma comment(lib, "user32.lib")
|
21
|
+
#endif
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#pragma once
|
2
|
+
/**
|
3
|
+
@file
|
4
|
+
@brief link mpir/mpirxx of mpir
|
5
|
+
@author MITSUNARI Shigeo(@herumi)
|
6
|
+
*/
|
7
|
+
#if defined(_WIN32) && defined(_MT)
|
8
|
+
#if _MSC_VER >= 1900 // VC2015, VC2017(1910)
|
9
|
+
#pragma comment(lib, "mt/14/mpir.lib")
|
10
|
+
#pragma comment(lib, "mt/14/mpirxx.lib")
|
11
|
+
#elif _MSC_VER == 1800 // VC2013
|
12
|
+
#pragma comment(lib, "mt/12/mpir.lib")
|
13
|
+
#pragma comment(lib, "mt/12/mpirxx.lib")
|
14
|
+
#elif _MSC_VER == 1700 // VC2012
|
15
|
+
#pragma comment(lib, "mt/11/mpir.lib")
|
16
|
+
#pragma comment(lib, "mt/11/mpirxx.lib")
|
17
|
+
#endif
|
18
|
+
#endif
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#pragma once
|
2
|
+
/**
|
3
|
+
@file
|
4
|
+
@brief link ssleay32.lib of openssl
|
5
|
+
@author MITSUNARI Shigeo(@herumi)
|
6
|
+
*/
|
7
|
+
#if defined(_WIN32) && defined(_MT)
|
8
|
+
#if _MSC_VER >= 1900 // VC2015
|
9
|
+
#ifdef _WIN64
|
10
|
+
#pragma comment(lib, "mt/14/ssleay32.lib")
|
11
|
+
#else
|
12
|
+
#pragma comment(lib, "mt/14/32/ssleay32.lib")
|
13
|
+
#endif
|
14
|
+
// #elif _MSC_VER == 1800 // VC2013
|
15
|
+
#else
|
16
|
+
#pragma comment(lib, "mt/12/ssleay32.lib")
|
17
|
+
#endif
|
18
|
+
#pragma comment(lib, "user32.lib")
|
19
|
+
#endif
|
@@ -0,0 +1,237 @@
|
|
1
|
+
#pragma once
|
2
|
+
/**
|
3
|
+
@file
|
4
|
+
@brief logger
|
5
|
+
|
6
|
+
@author MITSUNARI Shigeo(@herumi)
|
7
|
+
*/
|
8
|
+
#include <cybozu/format.hpp>
|
9
|
+
#include <cybozu/time.hpp>
|
10
|
+
#ifdef _WIN32
|
11
|
+
#else
|
12
|
+
#include <syslog.h>
|
13
|
+
#endif
|
14
|
+
|
15
|
+
namespace cybozu {
|
16
|
+
|
17
|
+
enum LogPriority {
|
18
|
+
LogDebug = 0,
|
19
|
+
LogInfo = 1,
|
20
|
+
LogWarning = 2,
|
21
|
+
LogError = 3
|
22
|
+
};
|
23
|
+
|
24
|
+
namespace log_local {
|
25
|
+
|
26
|
+
class Logger {
|
27
|
+
int priority_;
|
28
|
+
FILE *fp_;
|
29
|
+
bool doClose_;
|
30
|
+
bool useSyslog_;
|
31
|
+
bool useMsec_;
|
32
|
+
public:
|
33
|
+
Logger()
|
34
|
+
: priority_(cybozu::LogInfo)
|
35
|
+
, fp_(stderr)
|
36
|
+
, doClose_(false)
|
37
|
+
, useSyslog_(true)
|
38
|
+
, useMsec_(false)
|
39
|
+
{
|
40
|
+
}
|
41
|
+
~Logger() CYBOZU_NOEXCEPT
|
42
|
+
{
|
43
|
+
closeFile();
|
44
|
+
}
|
45
|
+
void put(LogPriority priority, const std::string& str)
|
46
|
+
{
|
47
|
+
if (priority < priority_) return;
|
48
|
+
if (fp_) {
|
49
|
+
cybozu::Time cur(true);
|
50
|
+
if (fprintf(fp_, "%s %s\n", cur.toString(useMsec_).c_str(), str.c_str()) < 0) {
|
51
|
+
fprintf(stderr, "ERR:cybozu:Logger:put:fprintf:%s\n", str.c_str());
|
52
|
+
}
|
53
|
+
if (fflush(fp_) < 0) {
|
54
|
+
fprintf(stderr, "ERR:cybozu:Logger:put:fflush:%s\n", str.c_str());
|
55
|
+
}
|
56
|
+
}
|
57
|
+
if (useSyslog_) {
|
58
|
+
#ifdef __linux__
|
59
|
+
int pri = LOG_CRIT;
|
60
|
+
if (priority == LogDebug) {
|
61
|
+
pri = LOG_DEBUG;
|
62
|
+
} else if (priority == LogInfo) {
|
63
|
+
pri = LOG_INFO;
|
64
|
+
} else if (priority == LogWarning) {
|
65
|
+
pri = LOG_WARNING;
|
66
|
+
}
|
67
|
+
::syslog(pri, "%s\n", str.c_str());
|
68
|
+
#endif
|
69
|
+
}
|
70
|
+
}
|
71
|
+
void put(LogPriority priority, const char *format, va_list args)
|
72
|
+
{
|
73
|
+
if (priority < priority_) return;
|
74
|
+
std::string str;
|
75
|
+
cybozu::vformat(str, format, args);
|
76
|
+
put(priority, str);
|
77
|
+
}
|
78
|
+
|
79
|
+
static Logger& getInstance()
|
80
|
+
{
|
81
|
+
static Logger logger;
|
82
|
+
return logger;
|
83
|
+
}
|
84
|
+
/*
|
85
|
+
@note : not thread safe
|
86
|
+
@param path [in] open path for log
|
87
|
+
*/
|
88
|
+
void openFile(const std::string& path)
|
89
|
+
{
|
90
|
+
FILE *fp = 0;
|
91
|
+
#ifdef _MSC_VER
|
92
|
+
if (fopen_s(&fp, path.c_str(), "a+b")) fp = 0;
|
93
|
+
#else
|
94
|
+
fp = fopen(path.c_str(), "a+b");
|
95
|
+
#endif
|
96
|
+
if (fp == 0) throw cybozu::Exception("cybozu:Logger:openFile") << path;
|
97
|
+
if (!closeFile()) throw cybozu::Exception("cybozu:Logger:openFile:fail to closeFile");
|
98
|
+
fp_ = fp;
|
99
|
+
doClose_ = true;
|
100
|
+
useSyslog_ = false;
|
101
|
+
}
|
102
|
+
/*
|
103
|
+
set FILE pointer
|
104
|
+
@param fp [in] write log to fp if fp != NULL
|
105
|
+
@note Logger does not close the pointer
|
106
|
+
*/
|
107
|
+
void set(FILE *fp)
|
108
|
+
{
|
109
|
+
if (!closeFile()) throw cybozu::Exception("cybozu:Logger:set:fail to closeFile");
|
110
|
+
fp_ = fp;
|
111
|
+
doClose_ = false;
|
112
|
+
useSyslog_ = false;
|
113
|
+
}
|
114
|
+
/*
|
115
|
+
use syslog if useSyslog is true
|
116
|
+
*/
|
117
|
+
void useSyslog(bool useSyslog)
|
118
|
+
{
|
119
|
+
useSyslog_ = useSyslog;
|
120
|
+
}
|
121
|
+
bool closeFile() CYBOZU_NOEXCEPT
|
122
|
+
{
|
123
|
+
if (!doClose_ || fp_ == 0) return true;
|
124
|
+
if (fp_ == stdout || fp_ == stderr) {
|
125
|
+
fp_ = NULL;
|
126
|
+
return true;
|
127
|
+
}
|
128
|
+
bool isOK = fclose(fp_) == 0;
|
129
|
+
fp_ = NULL;
|
130
|
+
return isOK;
|
131
|
+
}
|
132
|
+
void setPriority(LogPriority priority)
|
133
|
+
{
|
134
|
+
priority_ = priority;
|
135
|
+
}
|
136
|
+
void setUseMsec(bool useMsec)
|
137
|
+
{
|
138
|
+
useMsec_ = useMsec;
|
139
|
+
}
|
140
|
+
};
|
141
|
+
|
142
|
+
} // cybozu::log_local
|
143
|
+
|
144
|
+
/*
|
145
|
+
write log to path(default is stderr, syslog)
|
146
|
+
@param path [in] open path for log
|
147
|
+
@note this function is not thread safe
|
148
|
+
*/
|
149
|
+
inline void OpenLogFile(const std::string& path)
|
150
|
+
{
|
151
|
+
return log_local::Logger::getInstance().openFile(path);
|
152
|
+
}
|
153
|
+
|
154
|
+
/*
|
155
|
+
set FILE pointer
|
156
|
+
@param fp [in] write log to fp if fp != NULL
|
157
|
+
@note Logger does not close the pointer
|
158
|
+
@note this function is not thread safe
|
159
|
+
*/
|
160
|
+
inline void SetLogFILE(FILE *fp)
|
161
|
+
{
|
162
|
+
return log_local::Logger::getInstance().set(fp);
|
163
|
+
}
|
164
|
+
|
165
|
+
/*
|
166
|
+
use syslog if useSyslog is true
|
167
|
+
*/
|
168
|
+
inline void useSyslog(bool useSyslog)
|
169
|
+
{
|
170
|
+
log_local::Logger::getInstance().useSyslog(useSyslog);
|
171
|
+
}
|
172
|
+
/*
|
173
|
+
set priority(default cybozu::LogInfo)
|
174
|
+
does not show the message of which is less or equal to the priority
|
175
|
+
*/
|
176
|
+
inline void SetLogPriority(LogPriority priority)
|
177
|
+
{
|
178
|
+
log_local::Logger::getInstance().setPriority(priority);
|
179
|
+
}
|
180
|
+
/*
|
181
|
+
set useMsec
|
182
|
+
*/
|
183
|
+
inline void SetLogUseMsec(bool useMsec = true)
|
184
|
+
{
|
185
|
+
log_local::Logger::getInstance().setUseMsec(useMsec);
|
186
|
+
}
|
187
|
+
/*
|
188
|
+
write log like printf
|
189
|
+
Linux : default is syslog
|
190
|
+
Windows : default is file(use openFile)
|
191
|
+
*/
|
192
|
+
#ifdef __GNUC__
|
193
|
+
inline void PutLog(LogPriority priority, const char *format, ...) CYBOZU_NOEXCEPT __attribute__((format(printf, 2, 3)));
|
194
|
+
#endif
|
195
|
+
inline void PutLog(LogPriority priority, const char *format, ...) CYBOZU_NOEXCEPT
|
196
|
+
try
|
197
|
+
{
|
198
|
+
va_list args;
|
199
|
+
va_start(args, format);
|
200
|
+
log_local::Logger::getInstance().put(priority, format, args);
|
201
|
+
va_end(args);
|
202
|
+
} catch (std::exception& e) {
|
203
|
+
fprintf(stderr, "faital error in cybozu::PutLog %s\n", e.what());
|
204
|
+
} catch (...) {
|
205
|
+
fprintf(stderr, "faital error in cybozu::PutLog\n");
|
206
|
+
}
|
207
|
+
|
208
|
+
} // cybozu
|
209
|
+
|
210
|
+
namespace cybozu {
|
211
|
+
/*
|
212
|
+
write log like std::cout
|
213
|
+
Linux : default is syslog
|
214
|
+
Windows : default is file(use openFile)
|
215
|
+
*/
|
216
|
+
class Log {
|
217
|
+
LogPriority pri_;
|
218
|
+
std::ostringstream os_;
|
219
|
+
Log(const Log&);
|
220
|
+
void operator=(const Log&);
|
221
|
+
public:
|
222
|
+
explicit Log(LogPriority priority = cybozu::LogInfo) : pri_(priority) { }
|
223
|
+
~Log() CYBOZU_NOEXCEPT
|
224
|
+
{
|
225
|
+
try {
|
226
|
+
log_local::Logger::getInstance().put(pri_, os_.str());
|
227
|
+
} catch (std::exception& e) {
|
228
|
+
fprintf(stderr, "faital error in cybozu::Log %s\n", e.what());
|
229
|
+
} catch (...) {
|
230
|
+
fprintf(stderr, "faital error in cybozu::Log\n");
|
231
|
+
}
|
232
|
+
}
|
233
|
+
template<class T>
|
234
|
+
Log& operator<<(const T& t) { os_ << t; return *this; }
|
235
|
+
};
|
236
|
+
|
237
|
+
} // cybozu
|