Compare commits

8 Commits

Author SHA1 Message Date
tomasz.sowa 8196fb77d1 changed: now we do not use std::string and char* in the Winix API
everywhere we are using std::wstring and wchar_t*
         (std::string and char* is used only locally in some places
         especially when creating a path to OS file system etc.)
added:   to the special thread when winix closes:
         a write function for curl: FetchPageOnExitCurlCallback()
         without this function the curl library will print
         the page's content to the standart output
changed: TextStream<> class from core can make
         UTF8<->wide strings conversions
removed: from config: utf8 option
         now winix expects UTF8 from the user's input (html forms, url-es)
         and outputs strings in the UTF8 format




git-svn-id: svn://ttmath.org/publicrep/winix/trunk@965 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-10-09 20:44:56 +00:00
tomasz.sowa 4abf6642f7 setting a Winix Licence: 2 Clause BSD Licence
changed: version to 0.6.2



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@963 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-10-04 18:04:03 +00:00
tomasz.sowa e3284dcfbc fixed: winix incorrectly used config options: upload_dirs_chmod and upload_files_chmod
added: to config: upload_group
       a group name for newly uploaded files (and created necessary directories in the file system)




git-svn-id: svn://ttmath.org/publicrep/winix/trunk@961 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-09-28 17:30:05 +00:00
tomasz.sowa f064ff6b3d added: htmltextstream escapes more characters now:
added characters:
          "  -> &#quot;
          '  -> &#39; (&apos; but IE8 has a problem with &apos;)
          10 -> &#10;
          13 -> &#13;
added: two ezc filters:
       fil_html_quote
          "  -> &#quot;
          '  -> &#39; (&apos; but IE8 has a problem with &apos;)
       fil_html_newline
          10 -> &#10;
          13 -> &#13;
changed: fun_subject.html uses <div class="winix_input_a"> now





git-svn-id: svn://ttmath.org/publicrep/winix/trunk@959 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-09-22 23:54:24 +00:00
tomasz.sowa bfa5d8cc05 changed: plugin jQuery File Upload has been updated to version 9.7.0
(changed 'upload' and 'rm' winix functions)



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@958 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-08-06 20:14:10 +00:00
tomasz.sowa 6614919c13 added: possibility to save a pid file
new config option: pid_file (a full path to a pid file)



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@957 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-08-04 21:11:14 +00:00
tomasz.sowa 8379acdb7f fixed: item content should not be escaped in 'raw' mode
(it was not escaped only when execute bits were set)



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@956 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-08-03 18:33:07 +00:00
tomasz.sowa 160ddc258d added: to htmlfilter: the filter is able to recognize a special tag, default called: <nofilter>
content between <nofilter>...</nofilter> will not be filtered



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@955 e52654a7-88a9-db11-a3e9-0013d4bc506e
2014-06-18 23:18:28 +00:00
354 changed files with 11512 additions and 2525 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+248 -220
View File
@@ -1,6 +1,15 @@
# DO NOT DELETE # DO NOT DELETE
acceptbaseparser.o: acceptbaseparser.h acceptbaseparser.o: acceptbaseparser.h misc.h item.h
acceptbaseparser.o: ../../pikotools/space/space.h
acceptbaseparser.o: ../../pikotools/textstream/types.h
acceptbaseparser.o: ../../pikotools/date/date.h requesttypes.h
acceptbaseparser.o: ../../pikotools/textstream/textstream.h
acceptbaseparser.o: ../../pikotools/convert/convert.h
acceptbaseparser.o: ../../pikotools/convert/inttostr.h
acceptbaseparser.o: ../../pikotools/membuffer/membuffer.h
acceptbaseparser.o: ../../pikotools/textstream/types.h
acceptbaseparser.o: ../../pikotools/utf8/utf8.h winix_const.h
app.o: app.h config.h ../../pikotools/space/spaceparser.h app.o: app.h config.h ../../pikotools/space/spaceparser.h
app.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h app.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
app.o: htmlfilter.h system.h job.h basethread.h synchro.h app.o: htmlfilter.h system.h job.h basethread.h synchro.h
@@ -12,7 +21,7 @@ app.o: requesttypes.h ../../pikotools/textstream/textstream.h
app.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h app.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
app.o: ../../pikotools/membuffer/membuffer.h app.o: ../../pikotools/membuffer/membuffer.h
app.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h app.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
app.o: ../../winix/core/error.h ../../winix/db/dbitemquery.h app.o: winix_const.h ../../winix/core/error.h ../../winix/db/dbitemquery.h
app.o: ../../winix/core/item.h ../../winix/db/dbitemcolumns.h app.o: ../../winix/core/item.h ../../winix/db/dbitemcolumns.h
app.o: ../../winix/core/user.h ../../winix/core/group.h app.o: ../../winix/core/user.h ../../winix/core/group.h
app.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h log.h app.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h log.h
@@ -66,18 +75,18 @@ app.o: postmultiparser.h acceptencodingparser.h acceptbaseparser.h
basethread.o: basethread.h synchro.h basethread.o: basethread.h synchro.h
bbcodeparser.o: bbcodeparser.h htmlfilter.h bbcodeparser.o: bbcodeparser.h htmlfilter.h
compress.o: compress.h requesttypes.h ../../pikotools/textstream/textstream.h compress.o: compress.h requesttypes.h ../../pikotools/textstream/textstream.h
compress.o: ../../pikotools/space/space.h ../../pikotools/date/date.h compress.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
compress.o: ../../pikotools/convert/convert.h compress.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h
compress.o: ../../pikotools/convert/inttostr.h compress.o: ../../pikotools/convert/inttostr.h
compress.o: ../../pikotools/membuffer/membuffer.h compress.o: ../../pikotools/membuffer/membuffer.h
compress.o: ../../pikotools/textstream/types.h log.h textstream.h compress.o: ../../pikotools/textstream/types.h log.h textstream.h
compress.o: logmanipulators.h slog.h cur.h request.h item.h error.h config.h compress.o: logmanipulators.h slog.h cur.h request.h item.h error.h config.h
compress.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h compress.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
compress.o: ../../pikotools/textstream/types.h htmlfilter.h compress.o: htmlfilter.h ../../winix/templates/htmltextstream.h
compress.o: ../../winix/templates/htmltextstream.h
compress.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h compress.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
compress.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h compress.o: winix_const.h ../../pikotools/space/spacetojson.h session.h
compress.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h compress.o: user.h plugindata.h rebus.h ipban.h mount.h
compress.o: ../../winix/templates/locale.h
config.o: config.h ../../pikotools/space/spaceparser.h config.o: config.h ../../pikotools/space/spaceparser.h
config.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h config.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
config.o: htmlfilter.h log.h textstream.h logmanipulators.h config.o: htmlfilter.h log.h textstream.h logmanipulators.h
@@ -90,9 +99,9 @@ config.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
config.o: requesttypes.h item.h error.h config.o: requesttypes.h item.h error.h
config.o: ../../winix/templates/htmltextstream.h config.o: ../../winix/templates/htmltextstream.h
config.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h config.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
config.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h config.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
config.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h plugin.h config.o: plugindata.h rebus.h ipban.h mount.h ../../winix/templates/locale.h
config.o: pluginmsg.h system.h job.h basethread.h synchro.h dirs.h config.o: plugin.h pluginmsg.h system.h job.h basethread.h synchro.h dirs.h
config.o: dircontainer.h ../../winix/db/db.h ../../winix/db/dbbase.h config.o: dircontainer.h ../../winix/db/db.h ../../winix/db/dbbase.h
config.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h config.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h
config.o: ../../winix/core/error.h ../../winix/db/dbitemquery.h config.o: ../../winix/core/error.h ../../winix/db/dbitemquery.h
@@ -151,10 +160,11 @@ crypt.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
crypt.o: ../../pikotools/membuffer/membuffer.h crypt.o: ../../pikotools/membuffer/membuffer.h
crypt.o: ../../pikotools/textstream/types.h slog.h cur.h request.h crypt.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
crypt.o: requesttypes.h item.h error.h ../../winix/templates/htmltextstream.h crypt.o: requesttypes.h item.h error.h ../../winix/templates/htmltextstream.h
crypt.o: ../../winix/core/textstream.h misc.h crypt.o: ../../winix/core/textstream.h misc.h winix_const.h
crypt.o: ../../pikotools/space/spacetojson.h session.h plugindata.h rebus.h crypt.o: ../../pikotools/space/spacetojson.h session.h plugindata.h rebus.h
crypt.o: ipban.h mount.h ../../winix/templates/locale.h crypt.o: ipban.h mount.h ../../winix/templates/locale.h
dircontainer.o: dircontainer.h item.h ../../pikotools/space/space.h dircontainer.o: dircontainer.h item.h ../../pikotools/space/space.h
dircontainer.o: ../../pikotools/textstream/types.h
dircontainer.o: ../../pikotools/date/date.h log.h textstream.h dircontainer.o: ../../pikotools/date/date.h log.h textstream.h
dircontainer.o: logmanipulators.h ../../pikotools/textstream/textstream.h dircontainer.o: logmanipulators.h ../../pikotools/textstream/textstream.h
dircontainer.o: ../../pikotools/convert/convert.h dircontainer.o: ../../pikotools/convert/convert.h
@@ -163,24 +173,24 @@ dircontainer.o: ../../pikotools/membuffer/membuffer.h
dircontainer.o: ../../pikotools/textstream/types.h slog.h cur.h request.h dircontainer.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
dircontainer.o: requesttypes.h error.h config.h dircontainer.o: requesttypes.h error.h config.h
dircontainer.o: ../../pikotools/space/spaceparser.h dircontainer.o: ../../pikotools/space/spaceparser.h
dircontainer.o: ../../pikotools/space/space.h dircontainer.o: ../../pikotools/space/space.h htmlfilter.h
dircontainer.o: ../../pikotools/textstream/types.h htmlfilter.h
dircontainer.o: ../../winix/templates/htmltextstream.h dircontainer.o: ../../winix/templates/htmltextstream.h
dircontainer.o: ../../winix/core/textstream.h misc.h dircontainer.o: ../../winix/core/textstream.h misc.h
dircontainer.o: ../../pikotools/utf8/utf8.h dircontainer.o: ../../pikotools/utf8/utf8.h winix_const.h
dircontainer.o: ../../pikotools/space/spacetojson.h session.h user.h dircontainer.o: ../../pikotools/space/spacetojson.h session.h user.h
dircontainer.o: plugindata.h rebus.h ipban.h mount.h dircontainer.o: plugindata.h rebus.h ipban.h mount.h
dircontainer.o: ../../winix/templates/locale.h dircontainer.o: ../../winix/templates/locale.h
dirs.o: dirs.h item.h ../../pikotools/space/space.h dirs.o: dirs.h item.h ../../pikotools/space/space.h
dirs.o: ../../pikotools/date/date.h dircontainer.h ../../winix/db/db.h dirs.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
dirs.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h dirs.o: dircontainer.h ../../winix/db/db.h ../../winix/db/dbbase.h
dirs.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h dirs.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h
dirs.o: requesttypes.h ../../pikotools/textstream/textstream.h dirs.o: ../../winix/core/textstream.h misc.h requesttypes.h
dirs.o: ../../pikotools/textstream/textstream.h
dirs.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h dirs.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
dirs.o: ../../pikotools/membuffer/membuffer.h dirs.o: ../../pikotools/membuffer/membuffer.h
dirs.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h dirs.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
dirs.o: ../../winix/core/error.h ../../pikotools/space/spaceparser.h dirs.o: winix_const.h ../../winix/core/error.h
dirs.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h dirs.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
dirs.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h dirs.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
dirs.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h dirs.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h
dirs.o: ../../winix/core/group.h ../../winix/core/dircontainer.h dirs.o: ../../winix/core/group.h ../../winix/core/dircontainer.h
@@ -201,14 +211,15 @@ dirs.o: lastcontainer.h
groups.o: groups.h group.h ugcontainer.h ../../winix/db/db.h groups.o: groups.h group.h ugcontainer.h ../../winix/db/db.h
groups.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h groups.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h
groups.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h groups.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h
groups.o: item.h ../../pikotools/space/space.h ../../pikotools/date/date.h groups.o: item.h ../../pikotools/space/space.h
groups.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
groups.o: requesttypes.h ../../pikotools/textstream/textstream.h groups.o: requesttypes.h ../../pikotools/textstream/textstream.h
groups.o: ../../pikotools/convert/convert.h groups.o: ../../pikotools/convert/convert.h
groups.o: ../../pikotools/convert/inttostr.h groups.o: ../../pikotools/convert/inttostr.h
groups.o: ../../pikotools/membuffer/membuffer.h groups.o: ../../pikotools/membuffer/membuffer.h
groups.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h groups.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
groups.o: ../../winix/core/error.h ../../pikotools/space/spaceparser.h groups.o: winix_const.h ../../winix/core/error.h
groups.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h groups.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
groups.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h groups.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
groups.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h groups.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h
groups.o: ../../winix/core/group.h ../../winix/core/dircontainer.h groups.o: ../../winix/core/group.h ../../winix/core/dircontainer.h
@@ -218,17 +229,27 @@ groups.o: ../../winix/templates/htmltextstream.h
groups.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h groups.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h
groups.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h groups.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h
htmlfilter.o: htmlfilter.h htmlfilter.o: htmlfilter.h
httpsimpleparser.o: httpsimpleparser.h httpsimpleparser.o: httpsimpleparser.h misc.h item.h
httpsimpleparser.o: ../../pikotools/space/space.h
httpsimpleparser.o: ../../pikotools/textstream/types.h
httpsimpleparser.o: ../../pikotools/date/date.h requesttypes.h
httpsimpleparser.o: ../../pikotools/textstream/textstream.h
httpsimpleparser.o: ../../pikotools/convert/convert.h
httpsimpleparser.o: ../../pikotools/convert/inttostr.h
httpsimpleparser.o: ../../pikotools/membuffer/membuffer.h
httpsimpleparser.o: ../../pikotools/textstream/types.h
httpsimpleparser.o: ../../pikotools/utf8/utf8.h winix_const.h
image.o: image.h basethread.h synchro.h textstream.h ../../winix/db/db.h image.o: image.h basethread.h synchro.h textstream.h ../../winix/db/db.h
image.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h image.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h
image.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h image.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h
image.o: item.h ../../pikotools/space/space.h ../../pikotools/date/date.h image.o: item.h ../../pikotools/space/space.h
image.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
image.o: requesttypes.h ../../pikotools/textstream/textstream.h image.o: requesttypes.h ../../pikotools/textstream/textstream.h
image.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h image.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
image.o: ../../pikotools/membuffer/membuffer.h image.o: ../../pikotools/membuffer/membuffer.h
image.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h image.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
image.o: ../../winix/core/error.h ../../pikotools/space/spaceparser.h image.o: winix_const.h ../../winix/core/error.h
image.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h image.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
image.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h image.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
image.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h image.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h
image.o: ../../winix/core/group.h ../../winix/core/dircontainer.h image.o: ../../winix/core/group.h ../../winix/core/dircontainer.h
@@ -283,42 +304,45 @@ image.o: ../../winix/templates/htmltextstream.h
image.o: ../../winix/core/sessionmanager.h lock.h image.o: ../../winix/core/sessionmanager.h lock.h
ipbancontainer.o: ipbancontainer.h ipban.h log.h textstream.h ipbancontainer.o: ipbancontainer.h ipban.h log.h textstream.h
ipbancontainer.o: logmanipulators.h ../../pikotools/textstream/textstream.h ipbancontainer.o: logmanipulators.h ../../pikotools/textstream/textstream.h
ipbancontainer.o: ../../pikotools/space/space.h ../../pikotools/date/date.h ipbancontainer.o: ../../pikotools/space/space.h
ipbancontainer.o: ../../pikotools/textstream/types.h
ipbancontainer.o: ../../pikotools/date/date.h
ipbancontainer.o: ../../pikotools/convert/convert.h ipbancontainer.o: ../../pikotools/convert/convert.h
ipbancontainer.o: ../../pikotools/convert/inttostr.h ipbancontainer.o: ../../pikotools/convert/inttostr.h
ipbancontainer.o: ../../pikotools/membuffer/membuffer.h ipbancontainer.o: ../../pikotools/membuffer/membuffer.h
ipbancontainer.o: ../../pikotools/textstream/types.h slog.h cur.h request.h ipbancontainer.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
ipbancontainer.o: requesttypes.h item.h error.h config.h ipbancontainer.o: requesttypes.h item.h error.h config.h
ipbancontainer.o: ../../pikotools/space/spaceparser.h ipbancontainer.o: ../../pikotools/space/spaceparser.h
ipbancontainer.o: ../../pikotools/space/space.h ipbancontainer.o: ../../pikotools/space/space.h htmlfilter.h
ipbancontainer.o: ../../pikotools/textstream/types.h htmlfilter.h
ipbancontainer.o: ../../winix/templates/htmltextstream.h ipbancontainer.o: ../../winix/templates/htmltextstream.h
ipbancontainer.o: ../../winix/core/textstream.h misc.h ipbancontainer.o: ../../winix/core/textstream.h misc.h
ipbancontainer.o: ../../pikotools/utf8/utf8.h ipbancontainer.o: ../../pikotools/utf8/utf8.h winix_const.h
ipbancontainer.o: ../../pikotools/space/spacetojson.h session.h user.h ipbancontainer.o: ../../pikotools/space/spacetojson.h session.h user.h
ipbancontainer.o: plugindata.h rebus.h mount.h ../../winix/templates/locale.h ipbancontainer.o: plugindata.h rebus.h mount.h ../../winix/templates/locale.h
item.o: item.h ../../pikotools/space/space.h ../../pikotools/date/date.h item.o: item.h ../../pikotools/space/space.h
item.o: misc.h requesttypes.h ../../pikotools/textstream/textstream.h item.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h misc.h
item.o: requesttypes.h ../../pikotools/textstream/textstream.h
item.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h item.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
item.o: ../../pikotools/membuffer/membuffer.h item.o: ../../pikotools/membuffer/membuffer.h
item.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h item.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
item.o: crypt.h run.h config.h ../../pikotools/space/spaceparser.h item.o: winix_const.h crypt.h run.h config.h
item.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h item.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
item.o: htmlfilter.h user.h item.o: htmlfilter.h user.h
job.o: job.h basethread.h synchro.h ../../pikotools/space/space.h plugin.h job.o: job.h basethread.h synchro.h ../../pikotools/space/space.h
job.o: pluginmsg.h log.h textstream.h logmanipulators.h job.o: ../../pikotools/textstream/types.h plugin.h pluginmsg.h log.h
job.o: ../../pikotools/textstream/textstream.h ../../pikotools/date/date.h job.o: textstream.h logmanipulators.h ../../pikotools/textstream/textstream.h
job.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h job.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h
job.o: ../../pikotools/convert/inttostr.h
job.o: ../../pikotools/membuffer/membuffer.h job.o: ../../pikotools/membuffer/membuffer.h
job.o: ../../pikotools/textstream/types.h slog.h cur.h request.h job.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
job.o: requesttypes.h item.h error.h config.h job.o: requesttypes.h item.h error.h config.h
job.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h job.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
job.o: ../../pikotools/textstream/types.h htmlfilter.h job.o: htmlfilter.h ../../winix/templates/htmltextstream.h
job.o: ../../winix/templates/htmltextstream.h ../../winix/core/textstream.h job.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
job.o: misc.h ../../pikotools/utf8/utf8.h ../../pikotools/space/spacetojson.h job.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
job.o: session.h user.h plugindata.h rebus.h ipban.h mount.h job.o: plugindata.h rebus.h ipban.h mount.h ../../winix/templates/locale.h
job.o: ../../winix/templates/locale.h system.h dirs.h dircontainer.h job.o: system.h dirs.h dircontainer.h ../../winix/db/db.h
job.o: ../../winix/db/db.h ../../winix/db/dbbase.h ../../winix/db/dbconn.h job.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h
job.o: ../../winix/db/dbtextstream.h ../../winix/core/error.h job.o: ../../winix/db/dbtextstream.h ../../winix/core/error.h
job.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h job.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
job.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h job.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h
@@ -368,62 +392,62 @@ lastcontainer.o: lastcontainer.h ../../pikotools/date/date.h log.h
lastcontainer.o: textstream.h logmanipulators.h lastcontainer.o: textstream.h logmanipulators.h
lastcontainer.o: ../../pikotools/textstream/textstream.h lastcontainer.o: ../../pikotools/textstream/textstream.h
lastcontainer.o: ../../pikotools/space/space.h lastcontainer.o: ../../pikotools/space/space.h
lastcontainer.o: ../../pikotools/textstream/types.h
lastcontainer.o: ../../pikotools/convert/convert.h lastcontainer.o: ../../pikotools/convert/convert.h
lastcontainer.o: ../../pikotools/convert/inttostr.h lastcontainer.o: ../../pikotools/convert/inttostr.h
lastcontainer.o: ../../pikotools/membuffer/membuffer.h lastcontainer.o: ../../pikotools/membuffer/membuffer.h
lastcontainer.o: ../../pikotools/textstream/types.h slog.h cur.h request.h lastcontainer.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
lastcontainer.o: requesttypes.h item.h error.h config.h lastcontainer.o: requesttypes.h item.h error.h config.h
lastcontainer.o: ../../pikotools/space/spaceparser.h lastcontainer.o: ../../pikotools/space/spaceparser.h
lastcontainer.o: ../../pikotools/space/space.h lastcontainer.o: ../../pikotools/space/space.h htmlfilter.h
lastcontainer.o: ../../pikotools/textstream/types.h htmlfilter.h
lastcontainer.o: ../../winix/templates/htmltextstream.h lastcontainer.o: ../../winix/templates/htmltextstream.h
lastcontainer.o: ../../winix/core/textstream.h misc.h lastcontainer.o: ../../winix/core/textstream.h misc.h
lastcontainer.o: ../../pikotools/utf8/utf8.h lastcontainer.o: ../../pikotools/utf8/utf8.h winix_const.h
lastcontainer.o: ../../pikotools/space/spacetojson.h session.h user.h lastcontainer.o: ../../pikotools/space/spacetojson.h session.h user.h
lastcontainer.o: plugindata.h rebus.h ipban.h mount.h lastcontainer.o: plugindata.h rebus.h ipban.h mount.h
lastcontainer.o: ../../winix/templates/locale.h lastcontainer.o: ../../winix/templates/locale.h
loadavg.o: loadavg.h log.h textstream.h logmanipulators.h loadavg.o: loadavg.h log.h textstream.h logmanipulators.h
loadavg.o: ../../pikotools/textstream/textstream.h loadavg.o: ../../pikotools/textstream/textstream.h
loadavg.o: ../../pikotools/space/space.h ../../pikotools/date/date.h loadavg.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
loadavg.o: ../../pikotools/convert/convert.h loadavg.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h
loadavg.o: ../../pikotools/convert/inttostr.h loadavg.o: ../../pikotools/convert/inttostr.h
loadavg.o: ../../pikotools/membuffer/membuffer.h loadavg.o: ../../pikotools/membuffer/membuffer.h
loadavg.o: ../../pikotools/textstream/types.h slog.h cur.h request.h loadavg.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
loadavg.o: requesttypes.h item.h error.h config.h loadavg.o: requesttypes.h item.h error.h config.h
loadavg.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h loadavg.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
loadavg.o: ../../pikotools/textstream/types.h htmlfilter.h loadavg.o: htmlfilter.h ../../winix/templates/htmltextstream.h
loadavg.o: ../../winix/templates/htmltextstream.h
loadavg.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h loadavg.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
loadavg.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h loadavg.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
loadavg.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h loadavg.o: plugindata.h rebus.h ipban.h mount.h
loadavg.o: ../../winix/templates/locale.h
lock.o: lock.h synchro.h lock.o: lock.h synchro.h
log.o: log.h textstream.h logmanipulators.h log.o: log.h textstream.h logmanipulators.h
log.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h log.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h
log.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h log.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
log.o: ../../pikotools/convert/inttostr.h log.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
log.o: ../../pikotools/membuffer/membuffer.h log.o: ../../pikotools/membuffer/membuffer.h
log.o: ../../pikotools/textstream/types.h slog.h cur.h request.h log.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
log.o: requesttypes.h item.h error.h config.h log.o: requesttypes.h item.h error.h config.h
log.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h log.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
log.o: ../../pikotools/textstream/types.h htmlfilter.h log.o: htmlfilter.h ../../winix/templates/htmltextstream.h
log.o: ../../winix/templates/htmltextstream.h ../../winix/core/textstream.h log.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
log.o: misc.h ../../pikotools/utf8/utf8.h ../../pikotools/space/spacetojson.h log.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
log.o: session.h user.h plugindata.h rebus.h ipban.h mount.h log.o: plugindata.h rebus.h ipban.h mount.h ../../winix/templates/locale.h
log.o: ../../winix/templates/locale.h timezones.h timezone.h log.o: timezones.h timezone.h
misc.o: misc.h item.h ../../pikotools/space/space.h misc.o: misc.h item.h ../../pikotools/space/space.h
misc.o: ../../pikotools/date/date.h requesttypes.h misc.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
misc.o: ../../pikotools/textstream/textstream.h misc.o: requesttypes.h ../../pikotools/textstream/textstream.h
misc.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h misc.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
misc.o: ../../pikotools/membuffer/membuffer.h misc.o: ../../pikotools/membuffer/membuffer.h
misc.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h log.h misc.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
misc.o: textstream.h logmanipulators.h slog.h cur.h request.h error.h misc.o: winix_const.h log.h textstream.h logmanipulators.h slog.h cur.h
misc.o: config.h ../../pikotools/space/spaceparser.h misc.o: request.h error.h config.h ../../pikotools/space/spaceparser.h
misc.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h misc.o: ../../pikotools/space/space.h htmlfilter.h
misc.o: htmlfilter.h ../../winix/templates/htmltextstream.h misc.o: ../../winix/templates/htmltextstream.h ../../winix/core/textstream.h
misc.o: ../../winix/core/textstream.h ../../pikotools/space/spacetojson.h misc.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h
misc.o: session.h user.h plugindata.h rebus.h ipban.h mount.h misc.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h
misc.o: ../../winix/templates/locale.h ../../winix/templates/templates.h misc.o: ../../winix/templates/templates.h ../../ezc/src/ezc.h
misc.o: ../../ezc/src/ezc.h ../../ezc/src/generator.h ../../ezc/src/pattern.h misc.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
misc.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h misc.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
misc.o: ../../ezc/src/stringconv.h ../../winix/templates/patterncacher.h misc.o: ../../ezc/src/stringconv.h ../../winix/templates/patterncacher.h
misc.o: ../../winix/core/item.h ../../winix/templates/indexpatterns.h misc.o: ../../winix/core/item.h ../../winix/templates/indexpatterns.h
@@ -439,30 +463,31 @@ misc.o: ../../winix/db/dbitemquery.h ../../winix/db/dbitemcolumns.h
misc.o: ../../winix/core/user.h ../../winix/core/group.h misc.o: ../../winix/core/user.h ../../winix/core/group.h
misc.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h misc.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h
mount.o: mount.h misc.h item.h ../../pikotools/space/space.h mount.o: mount.h misc.h item.h ../../pikotools/space/space.h
mount.o: ../../pikotools/date/date.h requesttypes.h mount.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
mount.o: ../../pikotools/textstream/textstream.h mount.o: requesttypes.h ../../pikotools/textstream/textstream.h
mount.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h mount.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
mount.o: ../../pikotools/membuffer/membuffer.h mount.o: ../../pikotools/membuffer/membuffer.h
mount.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h mount.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
mount.o: winix_const.h
mountparser.o: mountparser.h mount.h item.h ../../pikotools/space/space.h mountparser.o: mountparser.h mount.h item.h ../../pikotools/space/space.h
mountparser.o: ../../pikotools/date/date.h dirs.h dircontainer.h mountparser.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
mountparser.o: ../../winix/db/db.h ../../winix/db/dbbase.h mountparser.o: dirs.h dircontainer.h ../../winix/db/db.h
mountparser.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h mountparser.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h
mountparser.o: ../../winix/core/textstream.h misc.h requesttypes.h mountparser.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h
mountparser.o: ../../pikotools/textstream/textstream.h mountparser.o: misc.h requesttypes.h ../../pikotools/textstream/textstream.h
mountparser.o: ../../pikotools/convert/convert.h mountparser.o: ../../pikotools/convert/convert.h
mountparser.o: ../../pikotools/convert/inttostr.h mountparser.o: ../../pikotools/convert/inttostr.h
mountparser.o: ../../pikotools/membuffer/membuffer.h mountparser.o: ../../pikotools/membuffer/membuffer.h
mountparser.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h mountparser.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
mountparser.o: ../../winix/core/error.h ../../pikotools/space/spaceparser.h mountparser.o: winix_const.h ../../winix/core/error.h
mountparser.o: ../../pikotools/space/space.h mountparser.o: ../../pikotools/space/spaceparser.h
mountparser.o: ../../pikotools/textstream/types.h mountparser.o: ../../pikotools/space/space.h ../../winix/db/dbitemquery.h
mountparser.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h mountparser.o: ../../winix/core/item.h ../../winix/db/dbitemcolumns.h
mountparser.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h mountparser.o: ../../winix/core/user.h ../../winix/core/group.h
mountparser.o: ../../winix/core/group.h ../../winix/core/dircontainer.h mountparser.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h
mountparser.o: ../../winix/core/ugcontainer.h log.h textstream.h mountparser.o: log.h textstream.h logmanipulators.h slog.h cur.h request.h
mountparser.o: logmanipulators.h slog.h cur.h request.h error.h config.h mountparser.o: error.h config.h htmlfilter.h
mountparser.o: htmlfilter.h ../../winix/templates/htmltextstream.h mountparser.o: ../../winix/templates/htmltextstream.h
mountparser.o: ../../pikotools/space/spacetojson.h session.h user.h mountparser.o: ../../pikotools/space/spacetojson.h session.h user.h
mountparser.o: plugindata.h rebus.h ipban.h ../../winix/templates/locale.h mountparser.o: plugindata.h rebus.h ipban.h ../../winix/templates/locale.h
mountparser.o: ../../winix/notify/notify.h ../../winix/notify/notifypool.h mountparser.o: ../../winix/notify/notify.h ../../winix/notify/notifypool.h
@@ -476,17 +501,17 @@ mountparser.o: ../../winix/core/basethread.h
mountparser.o: ../../winix/notify/templatesnotify.h ../../winix/core/config.h mountparser.o: ../../winix/notify/templatesnotify.h ../../winix/core/config.h
mountparser.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mountparser.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h
mounts.o: mounts.h mount.h error.h dirs.h item.h mounts.o: mounts.h mount.h error.h dirs.h item.h
mounts.o: ../../pikotools/space/space.h ../../pikotools/date/date.h mounts.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
mounts.o: dircontainer.h ../../winix/db/db.h ../../winix/db/dbbase.h mounts.o: ../../pikotools/date/date.h dircontainer.h ../../winix/db/db.h
mounts.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h mounts.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h
mounts.o: ../../winix/core/textstream.h misc.h requesttypes.h mounts.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h
mounts.o: ../../pikotools/textstream/textstream.h mounts.o: requesttypes.h ../../pikotools/textstream/textstream.h
mounts.o: ../../pikotools/convert/convert.h mounts.o: ../../pikotools/convert/convert.h
mounts.o: ../../pikotools/convert/inttostr.h mounts.o: ../../pikotools/convert/inttostr.h
mounts.o: ../../pikotools/membuffer/membuffer.h mounts.o: ../../pikotools/membuffer/membuffer.h
mounts.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h mounts.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
mounts.o: ../../winix/core/error.h ../../pikotools/space/spaceparser.h mounts.o: winix_const.h ../../winix/core/error.h
mounts.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h mounts.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
mounts.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h mounts.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
mounts.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h mounts.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h
mounts.o: ../../winix/core/group.h ../../winix/core/dircontainer.h mounts.o: ../../winix/core/group.h ../../winix/core/dircontainer.h
@@ -541,19 +566,18 @@ mounts.o: ../../winix/templates/htmltextstream.h
mounts.o: ../../winix/core/sessionmanager.h mounts.o: ../../winix/core/sessionmanager.h
plugin.o: plugin.h pluginmsg.h log.h textstream.h logmanipulators.h plugin.o: plugin.h pluginmsg.h log.h textstream.h logmanipulators.h
plugin.o: ../../pikotools/textstream/textstream.h plugin.o: ../../pikotools/textstream/textstream.h
plugin.o: ../../pikotools/space/space.h ../../pikotools/date/date.h plugin.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
plugin.o: ../../pikotools/convert/convert.h plugin.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h
plugin.o: ../../pikotools/convert/inttostr.h plugin.o: ../../pikotools/convert/inttostr.h
plugin.o: ../../pikotools/membuffer/membuffer.h plugin.o: ../../pikotools/membuffer/membuffer.h
plugin.o: ../../pikotools/textstream/types.h slog.h cur.h request.h plugin.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
plugin.o: requesttypes.h item.h error.h config.h plugin.o: requesttypes.h item.h error.h config.h
plugin.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h plugin.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
plugin.o: ../../pikotools/textstream/types.h htmlfilter.h plugin.o: htmlfilter.h ../../winix/templates/htmltextstream.h
plugin.o: ../../winix/templates/htmltextstream.h
plugin.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h plugin.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
plugin.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h plugin.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
plugin.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h system.h plugin.o: plugindata.h rebus.h ipban.h mount.h ../../winix/templates/locale.h
plugin.o: job.h basethread.h synchro.h dirs.h dircontainer.h plugin.o: system.h job.h basethread.h synchro.h dirs.h dircontainer.h
plugin.o: ../../winix/db/db.h ../../winix/db/dbbase.h ../../winix/db/dbconn.h plugin.o: ../../winix/db/db.h ../../winix/db/dbbase.h ../../winix/db/dbconn.h
plugin.o: ../../winix/db/dbtextstream.h ../../winix/core/error.h plugin.o: ../../winix/db/dbtextstream.h ../../winix/core/error.h
plugin.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h plugin.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
@@ -605,28 +629,28 @@ plugin.o: ../../winix/templates/htmltextstream.h
plugin.o: ../../winix/core/sessionmanager.h plugin.o: ../../winix/core/sessionmanager.h
plugindata.o: plugindata.h plugin.h pluginmsg.h log.h textstream.h plugindata.o: plugindata.h plugin.h pluginmsg.h log.h textstream.h
plugindata.o: logmanipulators.h ../../pikotools/textstream/textstream.h plugindata.o: logmanipulators.h ../../pikotools/textstream/textstream.h
plugindata.o: ../../pikotools/space/space.h ../../pikotools/date/date.h plugindata.o: ../../pikotools/space/space.h
plugindata.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
plugindata.o: ../../pikotools/convert/convert.h plugindata.o: ../../pikotools/convert/convert.h
plugindata.o: ../../pikotools/convert/inttostr.h plugindata.o: ../../pikotools/convert/inttostr.h
plugindata.o: ../../pikotools/membuffer/membuffer.h plugindata.o: ../../pikotools/membuffer/membuffer.h
plugindata.o: ../../pikotools/textstream/types.h slog.h cur.h request.h plugindata.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
plugindata.o: requesttypes.h item.h error.h config.h plugindata.o: requesttypes.h item.h error.h config.h
plugindata.o: ../../pikotools/space/spaceparser.h plugindata.o: ../../pikotools/space/spaceparser.h
plugindata.o: ../../pikotools/space/space.h plugindata.o: ../../pikotools/space/space.h htmlfilter.h
plugindata.o: ../../pikotools/textstream/types.h htmlfilter.h
plugindata.o: ../../winix/templates/htmltextstream.h plugindata.o: ../../winix/templates/htmltextstream.h
plugindata.o: ../../winix/core/textstream.h misc.h plugindata.o: ../../winix/core/textstream.h misc.h
plugindata.o: ../../pikotools/utf8/utf8.h ../../pikotools/space/spacetojson.h plugindata.o: ../../pikotools/utf8/utf8.h winix_const.h
plugindata.o: session.h user.h rebus.h ipban.h mount.h plugindata.o: ../../pikotools/space/spacetojson.h session.h user.h rebus.h
plugindata.o: ../../winix/templates/locale.h system.h job.h basethread.h plugindata.o: ipban.h mount.h ../../winix/templates/locale.h system.h job.h
plugindata.o: synchro.h dirs.h dircontainer.h ../../winix/db/db.h plugindata.o: basethread.h synchro.h dirs.h dircontainer.h
plugindata.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h plugindata.o: ../../winix/db/db.h ../../winix/db/dbbase.h
plugindata.o: ../../winix/db/dbtextstream.h ../../winix/core/error.h plugindata.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h
plugindata.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h plugindata.o: ../../winix/core/error.h ../../winix/db/dbitemquery.h
plugindata.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h plugindata.o: ../../winix/core/item.h ../../winix/db/dbitemcolumns.h
plugindata.o: ../../winix/core/group.h ../../winix/core/dircontainer.h plugindata.o: ../../winix/core/user.h ../../winix/core/group.h
plugindata.o: ../../winix/core/ugcontainer.h ../../winix/notify/notify.h plugindata.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h
plugindata.o: ../../winix/notify/notifypool.h plugindata.o: ../../winix/notify/notify.h ../../winix/notify/notifypool.h
plugindata.o: ../../winix/templates/patterns.h ../../winix/templates/locale.h plugindata.o: ../../winix/templates/patterns.h ../../winix/templates/locale.h
plugindata.o: ../../winix/templates/localefilter.h ../../ezc/src/ezc.h plugindata.o: ../../winix/templates/localefilter.h ../../ezc/src/ezc.h
plugindata.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h plugindata.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
@@ -673,16 +697,17 @@ plugindata.o: ../../winix/templates/htmltextstream.h
plugindata.o: ../../winix/core/sessionmanager.h plugindata.o: ../../winix/core/sessionmanager.h
postmultiparser.o: postmultiparser.h error.h requesttypes.h postmultiparser.o: postmultiparser.h error.h requesttypes.h
postmultiparser.o: ../../pikotools/textstream/textstream.h postmultiparser.o: ../../pikotools/textstream/textstream.h
postmultiparser.o: ../../pikotools/space/space.h ../../pikotools/date/date.h postmultiparser.o: ../../pikotools/space/space.h
postmultiparser.o: ../../pikotools/textstream/types.h
postmultiparser.o: ../../pikotools/date/date.h
postmultiparser.o: ../../pikotools/convert/convert.h postmultiparser.o: ../../pikotools/convert/convert.h
postmultiparser.o: ../../pikotools/convert/inttostr.h postmultiparser.o: ../../pikotools/convert/inttostr.h
postmultiparser.o: ../../pikotools/membuffer/membuffer.h postmultiparser.o: ../../pikotools/membuffer/membuffer.h
postmultiparser.o: ../../pikotools/textstream/types.h config.h postmultiparser.o: ../../pikotools/textstream/types.h config.h
postmultiparser.o: ../../pikotools/space/spaceparser.h postmultiparser.o: ../../pikotools/space/spaceparser.h
postmultiparser.o: ../../pikotools/space/space.h postmultiparser.o: ../../pikotools/space/space.h htmlfilter.h misc.h item.h
postmultiparser.o: ../../pikotools/textstream/types.h htmlfilter.h misc.h postmultiparser.o: ../../pikotools/utf8/utf8.h winix_const.h log.h
postmultiparser.o: item.h ../../pikotools/utf8/utf8.h log.h textstream.h postmultiparser.o: textstream.h logmanipulators.h slog.h cur.h request.h
postmultiparser.o: logmanipulators.h slog.h cur.h request.h
postmultiparser.o: ../../winix/templates/htmltextstream.h postmultiparser.o: ../../winix/templates/htmltextstream.h
postmultiparser.o: ../../winix/core/textstream.h postmultiparser.o: ../../winix/core/textstream.h
postmultiparser.o: ../../pikotools/space/spacetojson.h session.h user.h postmultiparser.o: ../../pikotools/space/spacetojson.h session.h user.h
@@ -690,39 +715,38 @@ postmultiparser.o: plugindata.h rebus.h ipban.h mount.h
postmultiparser.o: ../../winix/templates/locale.h postmultiparser.o: ../../winix/templates/locale.h
rebus.o: log.h textstream.h logmanipulators.h rebus.o: log.h textstream.h logmanipulators.h
rebus.o: ../../pikotools/textstream/textstream.h rebus.o: ../../pikotools/textstream/textstream.h
rebus.o: ../../pikotools/space/space.h ../../pikotools/date/date.h rebus.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
rebus.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h rebus.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h
rebus.o: ../../pikotools/convert/inttostr.h
rebus.o: ../../pikotools/membuffer/membuffer.h rebus.o: ../../pikotools/membuffer/membuffer.h
rebus.o: ../../pikotools/textstream/types.h slog.h cur.h request.h rebus.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
rebus.o: requesttypes.h item.h error.h config.h rebus.o: requesttypes.h item.h error.h config.h
rebus.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h rebus.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
rebus.o: ../../pikotools/textstream/types.h htmlfilter.h rebus.o: htmlfilter.h ../../winix/templates/htmltextstream.h
rebus.o: ../../winix/templates/htmltextstream.h ../../winix/core/textstream.h rebus.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
rebus.o: misc.h ../../pikotools/utf8/utf8.h rebus.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
rebus.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h rebus.o: plugindata.h rebus.h ipban.h mount.h ../../winix/templates/locale.h
rebus.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h
request.o: request.h requesttypes.h ../../pikotools/textstream/textstream.h request.o: request.h requesttypes.h ../../pikotools/textstream/textstream.h
request.o: ../../pikotools/space/space.h ../../pikotools/date/date.h request.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
request.o: ../../pikotools/convert/convert.h request.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h
request.o: ../../pikotools/convert/inttostr.h request.o: ../../pikotools/convert/inttostr.h
request.o: ../../pikotools/membuffer/membuffer.h request.o: ../../pikotools/membuffer/membuffer.h
request.o: ../../pikotools/textstream/types.h item.h error.h config.h request.o: ../../pikotools/textstream/types.h item.h error.h config.h
request.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h request.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
request.o: ../../pikotools/textstream/types.h htmlfilter.h textstream.h request.o: htmlfilter.h textstream.h ../../winix/templates/htmltextstream.h
request.o: ../../winix/templates/htmltextstream.h
request.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h request.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
request.o: ../../pikotools/space/spacetojson.h log.h logmanipulators.h slog.h request.o: winix_const.h ../../pikotools/space/spacetojson.h log.h
request.o: cur.h session.h user.h plugindata.h rebus.h ipban.h mount.h request.o: logmanipulators.h slog.h cur.h session.h user.h plugindata.h
request.o: ../../winix/templates/locale.h plugin.h pluginmsg.h system.h job.h request.o: rebus.h ipban.h mount.h ../../winix/templates/locale.h plugin.h
request.o: basethread.h synchro.h dirs.h dircontainer.h ../../winix/db/db.h request.o: pluginmsg.h system.h job.h basethread.h synchro.h dirs.h
request.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h request.o: dircontainer.h ../../winix/db/db.h ../../winix/db/dbbase.h
request.o: ../../winix/db/dbtextstream.h ../../winix/core/error.h request.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h
request.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h request.o: ../../winix/core/error.h ../../winix/db/dbitemquery.h
request.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h request.o: ../../winix/core/item.h ../../winix/db/dbitemcolumns.h
request.o: ../../winix/core/group.h ../../winix/core/dircontainer.h request.o: ../../winix/core/user.h ../../winix/core/group.h
request.o: ../../winix/core/ugcontainer.h ../../winix/notify/notify.h request.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h
request.o: ../../winix/notify/notifypool.h ../../winix/templates/patterns.h request.o: ../../winix/notify/notify.h ../../winix/notify/notifypool.h
request.o: ../../winix/templates/locale.h request.o: ../../winix/templates/patterns.h ../../winix/templates/locale.h
request.o: ../../winix/templates/localefilter.h ../../ezc/src/ezc.h request.o: ../../winix/templates/localefilter.h ../../ezc/src/ezc.h
request.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h request.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
request.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h request.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
@@ -767,57 +791,57 @@ request.o: ../../winix/templates/htmltextstream.h
request.o: ../../winix/core/sessionmanager.h request.o: ../../winix/core/sessionmanager.h
run.o: run.h log.h textstream.h logmanipulators.h run.o: run.h log.h textstream.h logmanipulators.h
run.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h run.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h
run.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h run.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
run.o: ../../pikotools/convert/inttostr.h run.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
run.o: ../../pikotools/membuffer/membuffer.h run.o: ../../pikotools/membuffer/membuffer.h
run.o: ../../pikotools/textstream/types.h slog.h cur.h request.h run.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
run.o: requesttypes.h item.h error.h config.h run.o: requesttypes.h item.h error.h config.h
run.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h run.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
run.o: ../../pikotools/textstream/types.h htmlfilter.h run.o: htmlfilter.h ../../winix/templates/htmltextstream.h
run.o: ../../winix/templates/htmltextstream.h ../../winix/core/textstream.h run.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
run.o: misc.h ../../pikotools/utf8/utf8.h ../../pikotools/space/spacetojson.h run.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
run.o: session.h user.h plugindata.h rebus.h ipban.h mount.h run.o: plugindata.h rebus.h ipban.h mount.h ../../winix/templates/locale.h
run.o: ../../winix/templates/locale.h
session.o: session.h item.h ../../pikotools/space/space.h session.o: session.h item.h ../../pikotools/space/space.h
session.o: ../../pikotools/date/date.h error.h user.h plugindata.h rebus.h session.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
session.o: textstream.h ipban.h misc.h requesttypes.h session.o: error.h user.h plugindata.h rebus.h textstream.h ipban.h misc.h
session.o: ../../pikotools/textstream/textstream.h session.o: requesttypes.h ../../pikotools/textstream/textstream.h
session.o: ../../pikotools/convert/convert.h session.o: ../../pikotools/convert/convert.h
session.o: ../../pikotools/convert/inttostr.h session.o: ../../pikotools/convert/inttostr.h
session.o: ../../pikotools/membuffer/membuffer.h session.o: ../../pikotools/membuffer/membuffer.h
session.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h session.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
session.o: winix_const.h
sessioncontainer.o: sessioncontainer.h session.h item.h sessioncontainer.o: sessioncontainer.h session.h item.h
sessioncontainer.o: ../../pikotools/space/space.h ../../pikotools/date/date.h sessioncontainer.o: ../../pikotools/space/space.h
sessioncontainer.o: error.h user.h plugindata.h rebus.h textstream.h ipban.h sessioncontainer.o: ../../pikotools/textstream/types.h
sessioncontainer.o: cur.h request.h requesttypes.h sessioncontainer.o: ../../pikotools/date/date.h error.h user.h plugindata.h
sessioncontainer.o: ../../pikotools/textstream/textstream.h sessioncontainer.o: rebus.h textstream.h ipban.h cur.h request.h
sessioncontainer.o: requesttypes.h ../../pikotools/textstream/textstream.h
sessioncontainer.o: ../../pikotools/convert/convert.h sessioncontainer.o: ../../pikotools/convert/convert.h
sessioncontainer.o: ../../pikotools/convert/inttostr.h sessioncontainer.o: ../../pikotools/convert/inttostr.h
sessioncontainer.o: ../../pikotools/membuffer/membuffer.h sessioncontainer.o: ../../pikotools/membuffer/membuffer.h
sessioncontainer.o: ../../pikotools/textstream/types.h config.h sessioncontainer.o: ../../pikotools/textstream/types.h config.h
sessioncontainer.o: ../../pikotools/space/spaceparser.h sessioncontainer.o: ../../pikotools/space/spaceparser.h
sessioncontainer.o: ../../pikotools/space/space.h sessioncontainer.o: ../../pikotools/space/space.h htmlfilter.h
sessioncontainer.o: ../../pikotools/textstream/types.h htmlfilter.h
sessioncontainer.o: ../../winix/templates/htmltextstream.h sessioncontainer.o: ../../winix/templates/htmltextstream.h
sessioncontainer.o: ../../winix/core/textstream.h misc.h sessioncontainer.o: ../../winix/core/textstream.h misc.h
sessioncontainer.o: ../../pikotools/utf8/utf8.h sessioncontainer.o: ../../pikotools/utf8/utf8.h winix_const.h
sessioncontainer.o: ../../pikotools/space/spacetojson.h mount.h log.h sessioncontainer.o: ../../pikotools/space/spacetojson.h mount.h log.h
sessioncontainer.o: logmanipulators.h slog.h ../../winix/templates/locale.h sessioncontainer.o: logmanipulators.h slog.h ../../winix/templates/locale.h
sessionmanager.o: sessionmanager.h sessioncontainer.h session.h item.h sessionmanager.o: sessionmanager.h sessioncontainer.h session.h item.h
sessionmanager.o: ../../pikotools/space/space.h ../../pikotools/date/date.h sessionmanager.o: ../../pikotools/space/space.h
sessionmanager.o: error.h user.h plugindata.h rebus.h textstream.h ipban.h sessionmanager.o: ../../pikotools/textstream/types.h
sessionmanager.o: cur.h request.h requesttypes.h sessionmanager.o: ../../pikotools/date/date.h error.h user.h plugindata.h
sessionmanager.o: rebus.h textstream.h ipban.h cur.h request.h requesttypes.h
sessionmanager.o: ../../pikotools/textstream/textstream.h sessionmanager.o: ../../pikotools/textstream/textstream.h
sessionmanager.o: ../../pikotools/convert/convert.h sessionmanager.o: ../../pikotools/convert/convert.h
sessionmanager.o: ../../pikotools/convert/inttostr.h sessionmanager.o: ../../pikotools/convert/inttostr.h
sessionmanager.o: ../../pikotools/membuffer/membuffer.h sessionmanager.o: ../../pikotools/membuffer/membuffer.h
sessionmanager.o: ../../pikotools/textstream/types.h config.h sessionmanager.o: ../../pikotools/textstream/types.h config.h
sessionmanager.o: ../../pikotools/space/spaceparser.h sessionmanager.o: ../../pikotools/space/spaceparser.h
sessionmanager.o: ../../pikotools/space/space.h sessionmanager.o: ../../pikotools/space/space.h htmlfilter.h
sessionmanager.o: ../../pikotools/textstream/types.h htmlfilter.h
sessionmanager.o: ../../winix/templates/htmltextstream.h sessionmanager.o: ../../winix/templates/htmltextstream.h
sessionmanager.o: ../../winix/core/textstream.h misc.h sessionmanager.o: ../../winix/core/textstream.h misc.h
sessionmanager.o: ../../pikotools/utf8/utf8.h sessionmanager.o: ../../pikotools/utf8/utf8.h winix_const.h
sessionmanager.o: ../../pikotools/space/spacetojson.h mount.h sessionmanager.o: ../../pikotools/space/spacetojson.h mount.h
sessionmanager.o: ipbancontainer.h lastcontainer.h system.h job.h sessionmanager.o: ipbancontainer.h lastcontainer.h system.h job.h
sessionmanager.o: basethread.h synchro.h dirs.h dircontainer.h sessionmanager.o: basethread.h synchro.h dirs.h dircontainer.h
@@ -884,47 +908,48 @@ sessionmanager.o: ../../winix/templates/changepatterns.h
sessionmanager.o: ../../winix/templates/htmltextstream.h sessionmanager.o: ../../winix/templates/htmltextstream.h
sessionmanager.o: ../../winix/core/sessionmanager.h sessionmanager.o: ../../winix/core/sessionmanager.h
sessionparser.o: sessionparser.h session.h item.h sessionparser.o: sessionparser.h session.h item.h
sessionparser.o: ../../pikotools/space/space.h ../../pikotools/date/date.h sessionparser.o: ../../pikotools/space/space.h
sessionparser.o: error.h user.h plugindata.h rebus.h textstream.h ipban.h sessionparser.o: ../../pikotools/textstream/types.h
sessionparser.o: sessioncontainer.h cur.h request.h requesttypes.h sessionparser.o: ../../pikotools/date/date.h error.h user.h plugindata.h
sessionparser.o: rebus.h textstream.h ipban.h sessioncontainer.h cur.h
sessionparser.o: request.h requesttypes.h
sessionparser.o: ../../pikotools/textstream/textstream.h sessionparser.o: ../../pikotools/textstream/textstream.h
sessionparser.o: ../../pikotools/convert/convert.h sessionparser.o: ../../pikotools/convert/convert.h
sessionparser.o: ../../pikotools/convert/inttostr.h sessionparser.o: ../../pikotools/convert/inttostr.h
sessionparser.o: ../../pikotools/membuffer/membuffer.h sessionparser.o: ../../pikotools/membuffer/membuffer.h
sessionparser.o: ../../pikotools/textstream/types.h config.h sessionparser.o: ../../pikotools/textstream/types.h config.h
sessionparser.o: ../../pikotools/space/spaceparser.h sessionparser.o: ../../pikotools/space/spaceparser.h
sessionparser.o: ../../pikotools/space/space.h sessionparser.o: ../../pikotools/space/space.h htmlfilter.h
sessionparser.o: ../../pikotools/textstream/types.h htmlfilter.h
sessionparser.o: ../../winix/templates/htmltextstream.h sessionparser.o: ../../winix/templates/htmltextstream.h
sessionparser.o: ../../winix/core/textstream.h misc.h sessionparser.o: ../../winix/core/textstream.h misc.h
sessionparser.o: ../../pikotools/utf8/utf8.h sessionparser.o: ../../pikotools/utf8/utf8.h winix_const.h
sessionparser.o: ../../pikotools/space/spacetojson.h mount.h users.h log.h sessionparser.o: ../../pikotools/space/spacetojson.h mount.h users.h log.h
sessionparser.o: logmanipulators.h slog.h ../../winix/templates/locale.h sessionparser.o: logmanipulators.h slog.h ../../winix/templates/locale.h
slog.o: slog.h cur.h request.h requesttypes.h slog.o: slog.h cur.h request.h requesttypes.h
slog.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h slog.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h
slog.o: ../../pikotools/date/date.h ../../pikotools/convert/convert.h slog.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
slog.o: ../../pikotools/convert/inttostr.h slog.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
slog.o: ../../pikotools/membuffer/membuffer.h slog.o: ../../pikotools/membuffer/membuffer.h
slog.o: ../../pikotools/textstream/types.h item.h error.h config.h slog.o: ../../pikotools/textstream/types.h item.h error.h config.h
slog.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h slog.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
slog.o: ../../pikotools/textstream/types.h htmlfilter.h textstream.h slog.o: htmlfilter.h textstream.h ../../winix/templates/htmltextstream.h
slog.o: ../../winix/templates/htmltextstream.h ../../winix/core/textstream.h slog.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
slog.o: misc.h ../../pikotools/utf8/utf8.h slog.o: winix_const.h ../../pikotools/space/spacetojson.h session.h user.h
slog.o: ../../pikotools/space/spacetojson.h session.h user.h plugindata.h slog.o: plugindata.h rebus.h ipban.h mount.h logmanipulators.h
slog.o: rebus.h ipban.h mount.h logmanipulators.h
slog.o: ../../winix/templates/locale.h slog.o: ../../winix/templates/locale.h
synchro.o: synchro.h synchro.o: synchro.h
system.o: system.h job.h basethread.h synchro.h ../../pikotools/space/space.h system.o: system.h job.h basethread.h synchro.h ../../pikotools/space/space.h
system.o: dirs.h item.h ../../pikotools/date/date.h dircontainer.h system.o: ../../pikotools/textstream/types.h dirs.h item.h
system.o: ../../winix/db/db.h ../../winix/db/dbbase.h ../../winix/db/dbconn.h system.o: ../../pikotools/date/date.h dircontainer.h ../../winix/db/db.h
system.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h
system.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h system.o: ../../winix/db/dbtextstream.h ../../winix/core/textstream.h misc.h
system.o: requesttypes.h ../../pikotools/textstream/textstream.h system.o: requesttypes.h ../../pikotools/textstream/textstream.h
system.o: ../../pikotools/convert/convert.h system.o: ../../pikotools/convert/convert.h
system.o: ../../pikotools/convert/inttostr.h system.o: ../../pikotools/convert/inttostr.h
system.o: ../../pikotools/membuffer/membuffer.h system.o: ../../pikotools/membuffer/membuffer.h
system.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h system.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
system.o: ../../winix/core/error.h ../../pikotools/space/spaceparser.h system.o: winix_const.h ../../winix/core/error.h
system.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h system.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
system.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h system.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
system.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h system.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h
system.o: ../../winix/core/group.h ../../winix/core/dircontainer.h system.o: ../../winix/core/group.h ../../winix/core/dircontainer.h
@@ -977,40 +1002,42 @@ system.o: ../../winix/functions/vim.h plugin.h pluginmsg.h sessionmanager.h
system.o: sessioncontainer.h ipbancontainer.h system.o: sessioncontainer.h ipbancontainer.h
threadmanager.o: threadmanager.h basethread.h synchro.h log.h textstream.h threadmanager.o: threadmanager.h basethread.h synchro.h log.h textstream.h
threadmanager.o: logmanipulators.h ../../pikotools/textstream/textstream.h threadmanager.o: logmanipulators.h ../../pikotools/textstream/textstream.h
threadmanager.o: ../../pikotools/space/space.h ../../pikotools/date/date.h threadmanager.o: ../../pikotools/space/space.h
threadmanager.o: ../../pikotools/textstream/types.h
threadmanager.o: ../../pikotools/date/date.h
threadmanager.o: ../../pikotools/convert/convert.h threadmanager.o: ../../pikotools/convert/convert.h
threadmanager.o: ../../pikotools/convert/inttostr.h threadmanager.o: ../../pikotools/convert/inttostr.h
threadmanager.o: ../../pikotools/membuffer/membuffer.h threadmanager.o: ../../pikotools/membuffer/membuffer.h
threadmanager.o: ../../pikotools/textstream/types.h slog.h cur.h request.h threadmanager.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
threadmanager.o: requesttypes.h item.h error.h config.h threadmanager.o: requesttypes.h item.h error.h config.h
threadmanager.o: ../../pikotools/space/spaceparser.h threadmanager.o: ../../pikotools/space/spaceparser.h
threadmanager.o: ../../pikotools/space/space.h threadmanager.o: ../../pikotools/space/space.h htmlfilter.h
threadmanager.o: ../../pikotools/textstream/types.h htmlfilter.h
threadmanager.o: ../../winix/templates/htmltextstream.h threadmanager.o: ../../winix/templates/htmltextstream.h
threadmanager.o: ../../winix/core/textstream.h misc.h threadmanager.o: ../../winix/core/textstream.h misc.h
threadmanager.o: ../../pikotools/utf8/utf8.h threadmanager.o: ../../pikotools/utf8/utf8.h winix_const.h
threadmanager.o: ../../pikotools/space/spacetojson.h session.h user.h threadmanager.o: ../../pikotools/space/spacetojson.h session.h user.h
threadmanager.o: plugindata.h rebus.h ipban.h mount.h threadmanager.o: plugindata.h rebus.h ipban.h mount.h
threadmanager.o: ../../winix/templates/locale.h threadmanager.o: ../../winix/templates/locale.h
timezone.o: timezone.h ../../pikotools/date/date.h timezone.o: timezone.h ../../pikotools/date/date.h
timezone.o: ../../pikotools/space/space.h misc.h item.h requesttypes.h timezone.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
timezone.o: misc.h item.h requesttypes.h
timezone.o: ../../pikotools/textstream/textstream.h timezone.o: ../../pikotools/textstream/textstream.h
timezone.o: ../../pikotools/convert/convert.h timezone.o: ../../pikotools/convert/convert.h
timezone.o: ../../pikotools/convert/inttostr.h timezone.o: ../../pikotools/convert/inttostr.h
timezone.o: ../../pikotools/membuffer/membuffer.h timezone.o: ../../pikotools/membuffer/membuffer.h
timezone.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h timezone.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
timezone.o: winix_const.h
timezones.o: timezones.h timezone.h ../../pikotools/date/date.h timezones.o: timezones.h timezone.h ../../pikotools/date/date.h
timezones.o: ../../pikotools/space/space.h
timezones.o: ../../pikotools/space/spaceparser.h
timezones.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h timezones.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
timezones.o: misc.h item.h requesttypes.h timezones.o: ../../pikotools/space/spaceparser.h
timezones.o: ../../pikotools/space/space.h misc.h item.h requesttypes.h
timezones.o: ../../pikotools/textstream/textstream.h timezones.o: ../../pikotools/textstream/textstream.h
timezones.o: ../../pikotools/convert/convert.h timezones.o: ../../pikotools/convert/convert.h
timezones.o: ../../pikotools/convert/inttostr.h timezones.o: ../../pikotools/convert/inttostr.h
timezones.o: ../../pikotools/membuffer/membuffer.h timezones.o: ../../pikotools/membuffer/membuffer.h
timezones.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h timezones.o: ../../pikotools/textstream/types.h ../../pikotools/utf8/utf8.h
timezones.o: log.h textstream.h logmanipulators.h slog.h cur.h request.h timezones.o: winix_const.h log.h textstream.h logmanipulators.h slog.h cur.h
timezones.o: error.h config.h htmlfilter.h timezones.o: request.h error.h config.h htmlfilter.h
timezones.o: ../../winix/templates/htmltextstream.h timezones.o: ../../winix/templates/htmltextstream.h
timezones.o: ../../winix/core/textstream.h timezones.o: ../../winix/core/textstream.h
timezones.o: ../../pikotools/space/spacetojson.h session.h user.h timezones.o: ../../pikotools/space/spacetojson.h session.h user.h
@@ -1018,35 +1045,36 @@ timezones.o: plugindata.h rebus.h ipban.h mount.h
timezones.o: ../../winix/templates/locale.h timezones.o: ../../winix/templates/locale.h
user.o: user.h user.o: user.h
users.o: users.h sessionmanager.h sessioncontainer.h session.h item.h users.o: users.h sessionmanager.h sessioncontainer.h session.h item.h
users.o: ../../pikotools/space/space.h ../../pikotools/date/date.h error.h users.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
users.o: user.h plugindata.h rebus.h textstream.h ipban.h cur.h request.h users.o: ../../pikotools/date/date.h error.h user.h plugindata.h rebus.h
users.o: requesttypes.h ../../pikotools/textstream/textstream.h users.o: textstream.h ipban.h cur.h request.h requesttypes.h
users.o: ../../pikotools/textstream/textstream.h
users.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h users.o: ../../pikotools/convert/convert.h ../../pikotools/convert/inttostr.h
users.o: ../../pikotools/membuffer/membuffer.h users.o: ../../pikotools/membuffer/membuffer.h
users.o: ../../pikotools/textstream/types.h config.h users.o: ../../pikotools/textstream/types.h config.h
users.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h users.o: ../../pikotools/space/spaceparser.h ../../pikotools/space/space.h
users.o: ../../pikotools/textstream/types.h htmlfilter.h users.o: htmlfilter.h ../../winix/templates/htmltextstream.h
users.o: ../../winix/templates/htmltextstream.h ../../winix/core/textstream.h users.o: ../../winix/core/textstream.h misc.h ../../pikotools/utf8/utf8.h
users.o: misc.h ../../pikotools/utf8/utf8.h users.o: winix_const.h ../../pikotools/space/spacetojson.h mount.h
users.o: ../../pikotools/space/spacetojson.h mount.h ipbancontainer.h users.o: ipbancontainer.h lastcontainer.h system.h job.h basethread.h
users.o: lastcontainer.h system.h job.h basethread.h synchro.h dirs.h users.o: synchro.h dirs.h dircontainer.h ../../winix/db/db.h
users.o: dircontainer.h ../../winix/db/db.h ../../winix/db/dbbase.h users.o: ../../winix/db/dbbase.h ../../winix/db/dbconn.h
users.o: ../../winix/db/dbconn.h ../../winix/db/dbtextstream.h users.o: ../../winix/db/dbtextstream.h ../../winix/core/error.h
users.o: ../../winix/core/error.h ../../winix/db/dbitemquery.h users.o: ../../winix/db/dbitemquery.h ../../winix/core/item.h
users.o: ../../winix/core/item.h ../../winix/db/dbitemcolumns.h users.o: ../../winix/db/dbitemcolumns.h ../../winix/core/user.h
users.o: ../../winix/core/user.h ../../winix/core/group.h users.o: ../../winix/core/group.h ../../winix/core/dircontainer.h
users.o: ../../winix/core/dircontainer.h ../../winix/core/ugcontainer.h log.h users.o: ../../winix/core/ugcontainer.h log.h logmanipulators.h slog.h
users.o: logmanipulators.h slog.h ../../winix/templates/locale.h users.o: ../../winix/templates/locale.h ../../winix/notify/notify.h
users.o: ../../winix/notify/notify.h ../../winix/notify/notifypool.h users.o: ../../winix/notify/notifypool.h ../../winix/templates/patterns.h
users.o: ../../winix/templates/patterns.h ../../winix/templates/locale.h users.o: ../../winix/templates/locale.h ../../winix/templates/localefilter.h
users.o: ../../winix/templates/localefilter.h ../../ezc/src/ezc.h users.o: ../../ezc/src/ezc.h ../../ezc/src/generator.h
users.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h users.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h
users.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h users.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h
users.o: ../../ezc/src/stringconv.h ../../winix/notify/notifythread.h users.o: ../../winix/notify/notifythread.h ../../winix/core/basethread.h
users.o: ../../winix/core/basethread.h ../../winix/notify/templatesnotify.h users.o: ../../winix/notify/templatesnotify.h ../../winix/core/config.h
users.o: ../../winix/core/config.h ../../winix/core/users.h ugcontainer.h users.o: ../../winix/core/users.h ugcontainer.h mounts.h mountparser.h
users.o: mounts.h mountparser.h crypt.h run.h groups.h group.h loadavg.h users.o: crypt.h run.h groups.h group.h loadavg.h image.h threadmanager.h
users.o: image.h threadmanager.h timezones.h timezone.h plugin.h pluginmsg.h users.o: timezones.h timezone.h plugin.h pluginmsg.h
users.o: ../../winix/functions/functions.h users.o: ../../winix/functions/functions.h
users.o: ../../winix/functions/functionbase.h ../../winix/core/request.h users.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
users.o: ../../winix/core/system.h ../../winix/core/synchro.h users.o: ../../winix/core/system.h ../../winix/core/synchro.h
+39 -24
View File
@@ -1,14 +1,41 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <cstdlib> #include <wchar.h>
#include "acceptbaseparser.h" #include "acceptbaseparser.h"
#include "misc.h"
namespace Winix namespace Winix
@@ -33,28 +60,11 @@ void AcceptBaseParser::SkipWhite()
} }
void AcceptBaseParser::RemoveWhiteFromEnd(std::string & str)
{
if( str.empty() )
return;
size_t i = str.size() - 1;
for( ; i!=0 && IsWhite(str[i]) ; --i);
if( !IsWhite(str[i]) )
++i;
if( i < str.size() )
str.erase(i); // erasing until the end of the string
}
void AcceptBaseParser::ReadParameter() void AcceptBaseParser::ReadParameter()
{ {
param.clear(); param.clear();
SkipWhite(); SkipWhite();
while( *text!=0 && *text!=',' && *text!=';' ) while( *text!=0 && *text!=',' && *text!=';' )
@@ -63,14 +73,13 @@ void AcceptBaseParser::ReadParameter()
++text; ++text;
} }
RemoveWhiteFromEnd(param); TrimWhite(param);
} }
void AcceptBaseParser::ReadQ() void AcceptBaseParser::ReadQ()
{ {
q = 1.0; q = 1.0;
SkipWhite(); SkipWhite();
if( *text != ';' ) if( *text != ';' )
@@ -88,7 +97,7 @@ void AcceptBaseParser::ReadQ()
++text; // skipping '=' ++text; // skipping '='
SkipWhite(); SkipWhite();
q = strtod(text, (char**)&text); q = wcstod(text, (wchar_t**)&text);
} }
@@ -102,7 +111,7 @@ void AcceptBaseParser::SkipParam()
void AcceptBaseParser::Parse(const char * str) void AcceptBaseParser::Parse(const wchar_t * str)
{ {
text = str; text = str;
Init(); Init();
@@ -118,6 +127,12 @@ void AcceptBaseParser::Parse(const char * str)
void AcceptBaseParser::Parse(const std::wstring & str)
{
Parse(str.c_str());
}
} // namespace Winix } // namespace Winix
+33 -8
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_acceptbaseparser #ifndef headerfile_winix_core_acceptbaseparser
@@ -20,29 +45,29 @@ namespace Winix
// sample (you must create your own class derived from this one): // sample (you must create your own class derived from this one):
// object.Parse(" text/html ; , ; q = 45, application / xhtml+xml ; q = 0.4 , application/xml ; q = 0.9 , */* ; q = 0.8 "); // object.Parse(L" text/html ; , ; q = 45, application / xhtml+xml ; q = 0.4 , application/xml ; q = 0.9 , */* ; q = 0.8 ");
class AcceptBaseParser class AcceptBaseParser
{ {
public: public:
void Parse(const char * str); void Parse(const wchar_t * str);
void Parse(const std::wstring & str);
private: private:
virtual void Init() {} ; virtual void Init() {} ;
virtual void Param(const std::string & param, double q) = 0; virtual void Param(const std::wstring & param, double q) = 0;
bool IsWhite(int c); bool IsWhite(int c);
void SkipWhite(); void SkipWhite();
void RemoveWhiteFromEnd(std::string & str);
void ReadParameter(); void ReadParameter();
void ReadQ(); void ReadQ();
void SkipParam(); void SkipParam();
const char * text; const wchar_t * text;
std::string param; std::wstring param;
double q; double q;
}; };
+37 -6
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_acceptencodingparser #ifndef headerfile_winix_core_acceptencodingparser
@@ -35,7 +60,7 @@ public:
} }
void ParseAndLog(const char * str) void ParseAndLog(const wchar_t * str)
{ {
Parse(str); Parse(str);
@@ -59,6 +84,12 @@ public:
} }
void ParseAndLog(const std::wstring & str)
{
ParseAndLog(str.c_str());
}
private: private:
void Init() void Init()
@@ -68,14 +99,14 @@ private:
} }
void Param(const std::string & param, double q) void Param(const std::wstring & param, double q)
{ {
if( param=="deflate" && q!=0.0 ) if( param == L"deflate" && q!=0.0 )
{ {
accept_deflate = true; accept_deflate = true;
} }
if( param=="gzip" && q!=0.0 ) if( param == L"gzip" && q!=0.0 )
{ {
accept_gzip = true; accept_gzip = true;
} }
+232 -98
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <sys/types.h> #include <sys/types.h>
@@ -89,12 +114,70 @@ App::App()
bool App::InitFCGI(char * sock, char * sock_user, char * sock_group)
{
if( !WideToUTF8(config.fcgi_socket, sock, WINIX_OS_PATH_SIZE) )
return false;
if( !WideToUTF8(config.fcgi_socket_user, sock_user, WINIX_OS_USERNAME_SIZE) )
return false;
if( !WideToUTF8(config.fcgi_socket_group, sock_group, WINIX_OS_USERNAME_SIZE) )
return false;
return true;
}
/*
* chmod and chown of the socket are set before winix drops privileges
*/
bool App::InitFCGIChmodChownSocket(char * sock, char * sock_user, char * sock_group)
{
if( chmod(sock, config.fcgi_socket_chmod) < 0 )
{
log << log1 << "App: I cannot chmod a FastCGI socket, check fcgi_socket_chmod in the config" << logend;
return false;
}
passwd * pw = getpwnam(sock_user);
if( !pw )
{
log << log1 << "App: there is no a user: " << config.fcgi_socket_user << logend;
return false;
}
group * gr = getgrnam(sock_group);
if( !gr )
{
log << log1 << "App: there is no a group: " << config.fcgi_socket_group << logend;
return false;
}
if( chown(sock, pw->pw_uid, gr->gr_gid) < 0 )
{
log << log1 << "App: I cannot chown a FastCGI socket, check fcgi_socket_user "
<< "and fcgi_socket_group in the config" << logend;
return false;
}
return true;
}
bool App::InitFCGI() bool App::InitFCGI()
{ {
const char * sock = config.fcgi_socket.c_str(); char sock[WINIX_OS_PATH_SIZE];
unlink(sock); char sock_user[WINIX_OS_USERNAME_SIZE];
char sock_group[WINIX_OS_USERNAME_SIZE];
fcgi_socket = FCGX_OpenSocket(sock, 100); // !! dodac 100 do konfiga if( !InitFCGI(sock, sock_user, sock_group) )
return false;
unlink(sock);
fcgi_socket = FCGX_OpenSocket(sock, config.fcgi_socket_listen);
if( fcgi_socket < 0 ) if( fcgi_socket < 0 )
{ {
@@ -103,25 +186,9 @@ bool App::InitFCGI()
} }
log << log3 << "App: FastCGI socket number: " << fcgi_socket << logend; log << log3 << "App: FastCGI socket number: " << fcgi_socket << logend;
chmod(sock, config.fcgi_socket_chmod);
passwd * pw = getpwnam(config.fcgi_socket_user.c_str()); if( !InitFCGIChmodChownSocket(sock, sock_user, sock_group) )
if( !pw )
{
log << log1 << "App: there is no user: " << config.fcgi_socket_user << logend;
return false; return false;
}
group * gr = getgrnam(config.fcgi_socket_group.c_str());
if( !gr )
{
log << log1 << "App: there is no group: " << config.fcgi_socket_group << logend;
return false;
}
chown(sock, pw->pw_uid, gr->gr_gid);
if( FCGX_Init() != 0 ) if( FCGX_Init() != 0 )
{ {
@@ -160,12 +227,9 @@ bool App::Init()
CreateStaticTree(); CreateStaticTree();
post_parser.UTF8(config.utf8);
post_parser.LogValueSize(config.log_post_value_size); post_parser.LogValueSize(config.log_post_value_size);
// post_multi_parser has a pointer to the config // post_multi_parser has a pointer to the config
cookie_parser.UTF8(config.utf8);
plugin.Call((Session*)0, WINIX_PLUGIN_INIT); plugin.Call((Session*)0, WINIX_PLUGIN_INIT);
return true; return true;
@@ -193,7 +257,7 @@ void App::BaseUrlRedirect(int code, bool add_subdomain)
} }
cur.request->redirect_to += config.base_url; cur.request->redirect_to += config.base_url;
AssignString(cur.request->env_request_uri, cur.request->redirect_to, false); cur.request->redirect_to += cur.request->env_request_uri;
// cur.request->env_request_uri should not be UrlEncoded because it contains slashes // cur.request->env_request_uri should not be UrlEncoded because it contains slashes
cur.request->redirect_type = code; cur.request->redirect_type = code;
} }
@@ -216,7 +280,7 @@ bool App::BaseUrlRedirect()
if( cur.request->method == Request::post ) if( cur.request->method == Request::post )
return false; return false;
if( Equal(config.base_url.c_str(), cur.request->env_http_host) ) if( config.base_url == cur.request->env_http_host )
return false; return false;
BaseUrlRedirect(config.base_url_redirect_code, false); BaseUrlRedirect(config.base_url_redirect_code, false);
@@ -320,7 +384,28 @@ void App::ProcessRequestThrow()
} }
plugin.Call(WINIX_SESSION_CHANGED); plugin.Call(WINIX_SESSION_CHANGED);
functions.Parse(); // parsing directories,files,functions and parameters
if( cur.request->env_request_uri.size() <= WINIX_URL_MAX_SIZE )
{
functions.Parse(); // parsing directories, files, functions and parameters
}
else
{
/*
* IMPROVE ME
* it will not have the root directory set
* so as a response only a blank page is shown
* (root directory is set in funcions.Parse())
*
* IMPROVE ME
* we can add a better return code (http status):
* http://www.ietf.org/rfc/rfc2616.txt
* "A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle"
*
*/
cur.request->status = WINIX_ERR_PERMISSION_DENIED;
log << log1 << "App: the URL is too long: " << cur.request->env_request_uri.size() << logend;
}
cur.mount = system.mounts.CalcCurMount(); cur.mount = system.mounts.CalcCurMount();
@@ -492,7 +577,8 @@ bool sent = false;
{ {
if( cur.request->function == &functions.fun_cat ) if( cur.request->function == &functions.fun_cat )
{ {
cur.request->out_streams[0] << cur.request->item.content; // !! CHECK ME is it ok? TemplatesFunctions::item_print_content(cur.request->out_streams[0],
cur.request->item.content, cur.request->item.content_type);
sent = true; sent = true;
} }
else else
@@ -611,17 +697,21 @@ void App::LogEnvironmentVariables()
/*
* reading the request (without GET parameters in the URL)
*/
void App::ReadRequest() void App::ReadRequest()
{ {
ReadEnvVariables(); ReadEnvVariables();
ReadEnvRemoteIP();
CheckRequestMethod(); CheckRequestMethod();
CheckSSL(); CheckSSL();
SetSubdomain(); SetSubdomain();
LogAccess(); LogAccess();
ReadGetPostVars(); ReadPostVars();
cookie_parser.Parse(cur.request->env_http_cookie, cur.request->cookie_tab); cookie_parser.Parse(cur.request->env_http_cookie, cur.request->cookie_tab);
accept_encoding_parser.ParseAndLog(cur.request->env_http_accept_encoding); accept_encoding_parser.ParseAndLog(cur.request->env_http_accept_encoding);
@@ -637,51 +727,63 @@ void App::ReadRequest()
void App::SetEnv(const char * & env, const char * name) void App::SetEnv(const char * name, std::wstring & env)
{ {
const char * v = FCGX_GetParam(name, fcgi_request.envp); const char * v = FCGX_GetParam(name, fcgi_request.envp);
if( v ) if( v )
env = v; {
PT::UTF8ToWide(v, env);
// by default env is set to an empty string (in cur.request->Clear() method) }
} }
void App::ReadEnvVariables() void App::ReadEnvVariables()
{ {
// we store that values because FCGX_GetParam has O(n) complexity SetEnv("REQUEST_METHOD", cur.request->env_request_method);
// with this variables (env_*) we have O(1) SetEnv("REQUEST_URI", cur.request->env_request_uri);
SetEnv("HTTP_COOKIE", cur.request->env_http_cookie);
SetEnv(cur.request->env_request_method, "REQUEST_METHOD"); // !! mozna nie uzywac tego, teraz mamy w strukturze fcgi_request SetEnv("REMOTE_ADDR", cur.request->env_remote_addr);
SetEnv(cur.request->env_request_uri, "REQUEST_URI"); SetEnv("HTTP_HOST", cur.request->env_http_host);
SetEnv(cur.request->env_http_cookie, "HTTP_COOKIE"); SetEnv("HTTP_USER_AGENT", cur.request->env_http_user_agent);
SetEnv(cur.request->env_remote_addr, "REMOTE_ADDR"); SetEnv("FCGI_ROLE", cur.request->env_fcgi_role);
SetEnv(cur.request->env_http_host, "HTTP_HOST"); SetEnv("CONTENT_TYPE", cur.request->env_content_type);
SetEnv(cur.request->env_http_user_agent, "HTTP_USER_AGENT"); SetEnv("HTTP_ACCEPT_ENCODING", cur.request->env_http_accept_encoding);
SetEnv(cur.request->env_fcgi_role, "FCGI_ROLE"); SetEnv("HTTPS", cur.request->env_https);
SetEnv(cur.request->env_content_type, "CONTENT_TYPE");
SetEnv(cur.request->env_http_accept_encoding, "HTTP_ACCEPT_ENCODING");
SetEnv(cur.request->env_https, "HTTPS");
cur.request->ip = (int)inet_addr(cur.request->env_remote_addr);
} }
void App::ReadEnvRemoteIP()
{
const char * v = FCGX_GetParam("REMOTE_ADDR", fcgi_request.envp);
if( v )
{
cur.request->ip = (int)inet_addr(v);
}
}
void App::CheckRequestMethod() void App::CheckRequestMethod()
{ {
cur.request->method = Request::unknown_method; cur.request->method = Request::unknown_method;
if( ToSmall(cur.request->env_request_method[0]) == 'g' ) if( !cur.request->env_request_method.empty() )
cur.request->method = Request::get; {
else if( ToSmall(cur.request->env_request_method[0]) == 'g' )
if( ToSmall(cur.request->env_request_method[0]) == 'p' ) cur.request->method = Request::get;
cur.request->method = Request::post; else
else if( ToSmall(cur.request->env_request_method[0]) == 'p' )
if( ToSmall(cur.request->env_request_method[0]) == 'h' ) cur.request->method = Request::post;
cur.request->method = Request::head; else
if( ToSmall(cur.request->env_request_method[0]) == 'h' )
cur.request->method = Request::head;
}
} }
@@ -692,14 +794,14 @@ void App::CheckSSL()
// value "on" exists in lighttpd server // value "on" exists in lighttpd server
// make sure that for other servers is "on" too // make sure that for other servers is "on" too
if( EqualNoCase(cur.request->env_https, "on") ) if( EqualNoCase(cur.request->env_https.c_str(), L"on") )
cur.request->using_ssl = true; cur.request->using_ssl = true;
} }
void App::SetSubdomain() void App::SetSubdomain()
{ {
CreateSubdomain(config.base_url.c_str(), cur.request->env_http_host, cur.request->subdomain); CreateSubdomain(config.base_url.c_str(), cur.request->env_http_host.c_str(), cur.request->subdomain);
} }
@@ -721,15 +823,11 @@ void App::LogAccess()
void App::ReadPostVars()
void App::ReadGetPostVars()
{ {
// get parameters we have always
//get_parser.Parse(cur.request->env_request_uri, cur.request->get_tab);
if( cur.request->method == Request::post ) if( cur.request->method == Request::post )
{ {
if( IsSubStringNoCase("multipart/form-data", cur.request->env_content_type) ) if( IsSubStringNoCase(L"multipart/form-data", cur.request->env_content_type.c_str()) )
{ {
log << log3 << "App: post content type: multipart/form-data" << logend; log << log3 << "App: post content type: multipart/form-data" << logend;
post_multi_parser.Parse(fcgi_request.in, cur.request->post_tab, cur.request->post_file_tab); post_multi_parser.Parse(fcgi_request.in, cur.request->post_tab, cur.request->post_file_tab);
@@ -746,24 +844,16 @@ void App::ReadGetPostVars()
void App::CheckIE() void App::CheckIE()
{ {
const char * msie = strstr(cur.request->env_http_user_agent, "MSIE"); size_t msie = cur.request->env_http_user_agent.find(L"MSIE");
cur.request->browser_msie = (msie != std::wstring::npos);
if( msie )
cur.request->browser_msie = true;
else
cur.request->browser_msie = false;
} }
void App::CheckKonqueror() void App::CheckKonqueror()
{ {
const char * kon = strstr(cur.request->env_http_user_agent, "Konqueror"); size_t kon = cur.request->env_http_user_agent.find(L"Konqueror");
cur.request->browser_konqueror = (kon != std::wstring::npos);
if( kon )
cur.request->browser_konqueror = true;
else
cur.request->browser_konqueror = false;
} }
@@ -849,7 +939,7 @@ bool App::PrepareHeadersStaticCreateResource(PT::WTextStream & out_path)
} }
size_t how_many_dirs = system.dirs.DirLevel(dir->id); size_t how_many_dirs = system.dirs.DirLevel(dir->id);
const char * path = SkipDirs(cur.request->env_request_uri, how_many_dirs); const wchar_t * path = SkipDirs(cur.request->env_request_uri.c_str(), how_many_dirs);
// the path begins with a slash only if how_many_dirs is zero // the path begins with a slash only if how_many_dirs is zero
while( *path == '/' ) while( *path == '/' )
@@ -928,7 +1018,7 @@ void App::PrepareHeaderContentType()
} }
} }
if( value && config.utf8 ) if( value )
*value += L"; charset=UTF-8"; *value += L"; charset=UTF-8";
} }
} }
@@ -1040,11 +1130,19 @@ void App::SendHeaders()
FCGX_PutS("\r\n", fcgi_request.out); FCGX_PutS("\r\n", fcgi_request.out);
if( config.log_http_answer_headers ) if( config.log_http_answer_headers )
log << "HTTP Header: " << aheader_name << ": " << aheader_value << logend; log << log1 << "HTTP Header: " << aheader_name << ": " << aheader_value << logend;
} }
} }
template<class RawType>
DbTextStream::RawText<RawType> R(const RawType & par)
{
return DbTextStream::RawText<RawType>(par);
}
void App::SendCookies() void App::SendCookies()
{ {
PT::Space::TableSingle::iterator i; PT::Space::TableSingle::iterator i;
@@ -1064,7 +1162,7 @@ void App::SendCookies()
FCGX_PutS("\r\n", fcgi_request.out); FCGX_PutS("\r\n", fcgi_request.out);
if( config.log_http_answer_headers ) if( config.log_http_answer_headers )
log << "HTTP Header: " << "Set-Cookie: " << aheader_name << "=" << aheader_value << logend; log << log1 << "HTTP Header: Set-Cookie: " << aheader_name << "=" << aheader_value << logend;
} }
} }
@@ -1270,10 +1368,7 @@ size_t output_size = 0;
SelectCompression(source->length(), compressing, compress_encoding); SelectCompression(source->length(), compressing, compress_encoding);
if( config.utf8 ) PT::WideToUTF8(*source, output_8bit);
PT::WideToUTF8(*source, output_8bit);
else
AssignString(*source, output_8bit);
// !! IMPROVE ME add to log the binary stream as well // !! IMPROVE ME add to log the binary stream as well
if( config.log_server_answer ) if( config.log_server_answer )
@@ -1499,13 +1594,27 @@ void App::LogUserGroups()
bool App::DropPrivileges(const std::string & user, uid_t uid, gid_t gid, bool additional_groups)
bool App::DropPrivileges(char * user, char * group)
{
if( !WideToUTF8(config.user, user, WINIX_OS_USERNAME_SIZE) )
return false;
if( !WideToUTF8(config.group, group, WINIX_OS_USERNAME_SIZE) )
return false;
return true;
}
bool App::DropPrivileges(const char * user, uid_t uid, gid_t gid, bool additional_groups)
{ {
if( additional_groups ) if( additional_groups )
{ {
if( initgroups(user.c_str(), gid) < 0 ) if( initgroups(user, gid) < 0 )
{ {
log << log1 << "App: I can't init groups for user: " << user << logend; log << log1 << "App: I can't init groups for a user: " << user << logend;
return false; return false;
} }
} }
@@ -1519,7 +1628,7 @@ bool App::DropPrivileges(const std::string & user, uid_t uid, gid_t gid, bool ad
} }
// for setting real and saved gid too // for setting real and saved gid too
if( setgid(gid) ) if( setgid(gid) < 0 )
{ {
log << log1 << "App: I can't change real and saved gid" << logend; log << log1 << "App: I can't change real and saved gid" << logend;
return false; return false;
@@ -1542,8 +1651,12 @@ return true;
} }
bool App::DropPrivileges() bool App::DropPrivileges()
{ {
char user_name[WINIX_OS_USERNAME_SIZE];
char group_name[WINIX_OS_USERNAME_SIZE];
if( getuid()!=0 && geteuid()!=0 ) if( getuid()!=0 && geteuid()!=0 )
return true; return true;
@@ -1551,20 +1664,23 @@ bool App::DropPrivileges()
if( config.user.empty() ) if( config.user.empty() )
{ {
log << log1 << "App: you should specify user name in the config file " log << log1 << "App: in the config file you should specify a user name and a group "
<< "to which I have to drop privileges" << logend; << "to which I have to drop privileges" << logend;
return false; return false;
} }
if( config.group.empty() ) if( config.group.empty() )
{ {
log << log1 << "App: you should specify group name in the config file " log << log1 << "App: you should specify a group name in the config file "
<< "to which I have to drop privileges" << logend; << "to which I have to drop privileges" << logend;
return false; return false;
} }
passwd * p = getpwnam(config.user.c_str()); if( !DropPrivileges(user_name, group_name) )
group * g = getgrnam(config.group.c_str()); return false;
passwd * p = getpwnam(user_name);
group * g = getgrnam(group_name);
if( !p ) if( !p )
{ {
@@ -1578,7 +1694,7 @@ bool App::DropPrivileges()
return false; return false;
} }
if( !DropPrivileges(config.user, p->pw_uid, g->gr_gid, config.additional_groups) ) if( !DropPrivileges(user_name, p->pw_uid, g->gr_gid, config.additional_groups) )
return false; return false;
return true; return true;
@@ -1648,6 +1764,16 @@ void App::WaitForThreads()
size_t App::FetchPageOnExitCurlCallback(char *ptr, size_t size, size_t nmemb, void *userdata)
{
/*
* without this function the curl library will print the page's content
* to the standart output
*/
return size * nmemb;
}
void App::FetchPageOnExit() void App::FetchPageOnExit()
{ {
// stupid trick to break FCGX_Accept_r() function // stupid trick to break FCGX_Accept_r() function
@@ -1664,7 +1790,15 @@ void App::FetchPageOnExit()
curl_easy_setopt(curl, CURLOPT_URL, url_to_fetch_on_exit.c_str()); curl_easy_setopt(curl, CURLOPT_URL, url_to_fetch_on_exit.c_str());
curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 1); curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 1);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_perform(curl); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, FetchPageOnExitCurlCallback);
if( curl_easy_perform(curl) != 0 )
{
Lock();
log << log1 << "App: I cannot correctly fetch a page from the special thread" << logend << logsave;
Unlock();
}
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
} }
} }
+35 -5
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_app #ifndef headerfile_winix_core_app
@@ -131,6 +156,10 @@ private:
std::string output_8bit; std::string output_8bit;
BinaryPage compressed_output; BinaryPage compressed_output;
bool InitFCGI(char * sock, char * sock_user, char * sock_group);
bool InitFCGIChmodChownSocket(char * sock, char * sock_user, char * sock_group);
bool DropPrivileges(char * user, char * group);
bool DropPrivileges(const char * user, uid_t uid, gid_t gid, bool additional_groups);
bool CheckAccessFromPlugins(); bool CheckAccessFromPlugins();
void ProcessRequestThrow(); void ProcessRequestThrow();
void ProcessRequest(); void ProcessRequest();
@@ -153,9 +182,10 @@ private:
void LogEnvironmentVariables(); void LogEnvironmentVariables();
void SetEnv(const char * & env, const char * name); void SetEnv(const char * name, std::wstring & env);
void ReadEnvVariables(); void ReadEnvVariables();
void ReadGetPostVars(); void ReadEnvRemoteIP();
void ReadPostVars();
void CheckIE(); void CheckIE();
void CheckKonqueror(); void CheckKonqueror();
@@ -192,9 +222,9 @@ private:
void LogUsers(); void LogUsers();
void LogEffectiveGroups(std::vector<gid_t> & tab); void LogEffectiveGroups(std::vector<gid_t> & tab);
void LogGroups(); void LogGroups();
bool DropPrivileges(const std::string & user, uid_t uid, gid_t gid, bool additional_groups);
static void * SpecialThreadForSignals(void*); static void * SpecialThreadForSignals(void*);
static size_t FetchPageOnExitCurlCallback(char *ptr, size_t size, size_t nmemb, void *userdata);
void FetchPageOnExit(); void FetchPageOnExit();
void CreateStaticTree(); void CreateStaticTree();
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <errno.h> #include <errno.h>
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_basethread #ifndef headerfile_winix_core_basethread
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "bbcodeparser.h" #include "bbcodeparser.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_bbcodeparser #ifndef headerfile_winix_core_bbcodeparser
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "compress.h" #include "compress.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_compress #ifndef headerfile_winix_core_compress
+47 -37
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "config.h" #include "config.h"
@@ -45,14 +70,14 @@ void Config::ShowError()
case PT::SpaceParser::cant_open_file: case PT::SpaceParser::cant_open_file:
if( errors_to_stdout ) if( errors_to_stdout )
std::cout << "Config: cant open a config file: " << config_file << std::endl; std::wcout << L"Config: I cannot open a config file: " << config_file << std::endl;
log << log1 << "Config: cant open a config file: " << config_file << logend; log << log1 << "Config: cant open a config file: " << config_file << logend;
break; break;
case PT::SpaceParser::syntax_error: case PT::SpaceParser::syntax_error:
if( errors_to_stdout ) if( errors_to_stdout )
std::cout << "Config: syntax error, line: " << parser.line << std::endl; std::wcout << "Config: syntax error, line: " << parser.line << std::endl;
log << log1 << "Config: syntax error, line: " << parser.line << logend; log << log1 << "Config: syntax error, line: " << parser.line << logend;
break; break;
@@ -77,7 +102,6 @@ bool Config::ReadConfig(bool errors_to_stdout_, bool stdout_is_closed)
log << log2 << "Config: reading a config file" << logend; log << log2 << "Config: reading a config file" << logend;
parser.SplitSingle(true); parser.SplitSingle(true);
parser.UTF8(true); // config is always read in UTF-8
parser.SetSpace(space); parser.SetSpace(space);
PT::SpaceParser::Status status = parser.Parse(config_file); PT::SpaceParser::Status status = parser.Parse(config_file);
@@ -102,17 +126,18 @@ void Config::AssignValues(bool stdout_is_closed)
{ {
demonize = Bool(L"demonize", true); demonize = Bool(L"demonize", true);
user = AText(L"user"); user = Text(L"user");
group = AText(L"group"); group = Text(L"group");
additional_groups = Bool(L"additional_groups", true); additional_groups = Bool(L"additional_groups", true);
log_file = AText(L"log_file"); log_file = Text(L"log_file");
log_notify_file = AText(L"log_notify_file"); log_notify_file = Text(L"log_notify_file");
log_delimiter = Text(L"log_delimiter", L"---------------------------------------------------------------------------------"); log_delimiter = Text(L"log_delimiter", L"---------------------------------------------------------------------------------");
fcgi_socket = AText(L"fcgi_socket"); fcgi_socket = Text(L"fcgi_socket");
fcgi_socket_chmod = Int(L"fcgi_socket_chmod", 0770); fcgi_socket_chmod = Int(L"fcgi_socket_chmod", 0770);
fcgi_socket_user = AText(L"fcgi_socket_user"); fcgi_socket_user = Text(L"fcgi_socket_user");
fcgi_socket_group = AText(L"fcgi_socket_group"); fcgi_socket_group = Text(L"fcgi_socket_group");
fcgi_socket_listen = Int(L"fcgi_socket_listen", 100);
log_level = Int(L"log_level", 1); log_level = Int(L"log_level", 1);
log_request = Int(L"log_request", 1); log_request = Int(L"log_request", 1);
log_save_each_line = Bool(L"log_save_each_line", false); log_save_each_line = Bool(L"log_save_each_line", false);
@@ -132,6 +157,7 @@ void Config::AssignValues(bool stdout_is_closed)
NoLastSlash(upload_dir); NoLastSlash(upload_dir);
NoLastSlash(common_dir); NoLastSlash(common_dir);
upload_group = Text(L"upload_group");
upload_dirs_chmod = Int(L"upload_dirs_chmod", 0750); upload_dirs_chmod = Int(L"upload_dirs_chmod", 0750);
upload_files_chmod = Int(L"upload_files_chmod", 0640); upload_files_chmod = Int(L"upload_files_chmod", 0640);
ListText(L"static_dirs", static_dirs); ListText(L"static_dirs", static_dirs);
@@ -158,9 +184,9 @@ void Config::AssignValues(bool stdout_is_closed)
template_only_root_use_template_fun = Bool(L"template_only_root_use_template_fun", false); template_only_root_use_template_fun = Bool(L"template_only_root_use_template_fun", false);
http_session_id_name = Text(L"http_session_id_name", L"session_id"); http_session_id_name = Text(L"http_session_id_name", L"session_id");
db_database = AText(L"db_database"); db_database = Text(L"db_database");
db_user = AText(L"db_user"); db_user = Text(L"db_user");
db_pass = AText(L"db_pass"); db_pass = Text(L"db_pass");
item_url_empty = Text(L"item_url_empty"); item_url_empty = Text(L"item_url_empty");
url_proto = Text(L"url_proto", L"http://"); url_proto = Text(L"url_proto", L"http://");
@@ -188,7 +214,7 @@ void Config::AssignValues(bool stdout_is_closed)
session_max_idle = Int(L"session_max_idle", 10800); // 3h session_max_idle = Int(L"session_max_idle", 10800); // 3h
session_remember_max_idle = Int(L"session_remember_max_idle", 16070400); // 3 months session_remember_max_idle = Int(L"session_remember_max_idle", 16070400); // 3 months
session_file = AText(L"session_file"); session_file = Text(L"session_file");
session_max = Size(L"session_max", 1000000); session_max = Size(L"session_max", 1000000);
compression = Bool(L"compression", true); compression = Bool(L"compression", true);
@@ -202,6 +228,7 @@ void Config::AssignValues(bool stdout_is_closed)
html_filter_tabs = Size(L"html_filter_tabs", 2); html_filter_tabs = Size(L"html_filter_tabs", 2);
html_filter_orphans = Bool(L"html_filter_orphans", true); html_filter_orphans = Bool(L"html_filter_orphans", true);
html_filter_orphans_mode_str = Text(L"html_filter_orphans_mode_str", L"nbsp"); html_filter_orphans_mode_str = Text(L"html_filter_orphans_mode_str", L"nbsp");
html_filter_nofilter_tag = Text(L"html_filter_nofilter_tag", L"nofilter");
locale_dir = Text(L"locale_dir"); locale_dir = Text(L"locale_dir");
locale_dir_default = Text(L"locale_dir_default"); locale_dir_default = Text(L"locale_dir_default");
@@ -220,7 +247,6 @@ void Config::AssignValues(bool stdout_is_closed)
NoLastSlash(plugins_dir); NoLastSlash(plugins_dir);
ListText(L"plugins", plugin_file); ListText(L"plugins", plugin_file);
utf8 = Bool(L"utf8", true);
symlinks_follow_max = Size(L"symlinks_follow_max", 20); symlinks_follow_max = Size(L"symlinks_follow_max", 20);
ticket_form_prefix = Text(L"ticket_form_prefix", L"ticketparam"); ticket_form_prefix = Text(L"ticket_form_prefix", L"ticketparam");
@@ -238,7 +264,7 @@ void Config::AssignValues(bool stdout_is_closed)
pattern_cacher_how_many_delete = Size(L"pattern_cacher_how_many_delete", 30); pattern_cacher_how_many_delete = Size(L"pattern_cacher_how_many_delete", 30);
content_type_header = Int(L"content_type_header", 0); content_type_header = Int(L"content_type_header", 0);
umask = Int(L"umask", 0222); umask = Int(L"umask", 0222);
ezc_max_elements = Size(L"ezc_max_elements", 50000); ezc_max_elements = Size(L"ezc_max_elements", 50000);
ezc_max_loop_elements = Size(L"ezc_max_loop_elements", 5000); ezc_max_loop_elements = Size(L"ezc_max_loop_elements", 5000);
@@ -266,6 +292,7 @@ void Config::AssignValues(bool stdout_is_closed)
incorrect_login_cannot_login_treshold = Size(L"incorrect_login_cannot_login_treshold", 20); incorrect_login_cannot_login_treshold = Size(L"incorrect_login_cannot_login_treshold", 20);
incorrect_login_cannot_login_delay = Size(L"incorrect_login_cannot_login_delay", 1800); incorrect_login_cannot_login_delay = Size(L"incorrect_login_cannot_login_delay", 1800);
pid_file = Text(L"pid_file", L"");
} }
@@ -292,6 +319,8 @@ void Config::SetAdditionalVariables()
if( locale_files.empty() ) if( locale_files.empty() )
locale_files.push_back(L"en"); locale_files.push_back(L"en");
upload_group_int = GetGroupId(upload_group);
} }
@@ -338,25 +367,6 @@ std::wstring & Config::Text(const std::wstring & name, const wchar_t * def)
} }
std::string & Config::AText(const wchar_t * name)
{
return space.AText(name);
}
std::string & Config::AText(const wchar_t * name, const char * def)
{
return space.AText(name, def);
}
std::string & Config::AText(const std::wstring & name, const char * def)
{
return space.AText(name, def);
}
int Config::Int(const wchar_t * name) int Config::Int(const wchar_t * name)
{ {
return space.Int(name); return space.Int(name);
+64 -22
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_config #ifndef headerfile_winix_core_config
@@ -28,7 +53,7 @@ public:
// name of the config file // name of the config file
// this is the parameter passed to winix programm // this is the parameter passed to winix programm
std::string config_file; std::wstring config_file;
// start as a demon (in the background) // start as a demon (in the background)
// default: true // default: true
@@ -36,11 +61,11 @@ public:
// system user's name to whom winix should drop privileges // system user's name to whom winix should drop privileges
// used only if winix is started as the root // used only if winix is started as the root
std::string user; std::wstring user;
// system group's name to which drop privileges // system group's name to which drop privileges
// used only if winix is started as the root // used only if winix is started as the root
std::string group; std::wstring group;
// setting additional effective groups from /etc/group // setting additional effective groups from /etc/group
// by using initgroups() // by using initgroups()
@@ -49,7 +74,7 @@ public:
bool additional_groups; bool additional_groups;
// log file name, log file name for notifications (sending emails, etc) // log file name, log file name for notifications (sending emails, etc)
std::string log_file, log_notify_file; std::wstring log_file, log_notify_file;
// the log level (how much info should be inserted to logs) // the log level (how much info should be inserted to logs)
// 1 - minimum // 1 - minimum
@@ -107,16 +132,24 @@ public:
bool log_http_answer_headers; bool log_http_answer_headers;
// fast cgi: socket (unix domain) // fast cgi: socket (unix domain)
std::string fcgi_socket; std::wstring fcgi_socket;
// fast cgi: socket permissions // fast cgi: socket permissions
// chmod and chown of the socket are set before winix drops privileges
int fcgi_socket_chmod; int fcgi_socket_chmod;
// fast cgi: owner of the socket // fast cgi: owner of the socket
std::string fcgi_socket_user; // chmod and chown of the socket are set before winix drops privileges
std::wstring fcgi_socket_user;
// fast cgi: group of the socket // fast cgi: group of the socket
std::string fcgi_socket_group; // chmod and chown of the socket are set before winix drops privileges
std::wstring fcgi_socket_group;
// fcgi_socket_listen is the listen queue depth used in the listen() call
// when creating a FastCGI socket for the web server
// default: 100
int fcgi_socket_listen;
std::wstring templates_dir; std::wstring templates_dir;
std::wstring templates_dir_default; // html templates from winix std::wstring templates_dir_default; // html templates from winix
@@ -140,9 +173,9 @@ public:
bool template_only_root_use_template_fun; bool template_only_root_use_template_fun;
// the database name, user name and a password for the PostgreSQL database // the database name, user name and a password for the PostgreSQL database
std::string db_database; std::wstring db_database;
std::string db_user; std::wstring db_user;
std::string db_pass; std::wstring db_pass;
// the name of the cookie which has the session identifier // the name of the cookie which has the session identifier
std::wstring http_session_id_name; std::wstring http_session_id_name;
@@ -164,7 +197,7 @@ public:
// a file to which winix stores sessions info // a file to which winix stores sessions info
// it is used when winix starts (boots) and quits // it is used when winix starts (boots) and quits
std::string session_file; std::wstring session_file;
// how many sessions can be (zero turn off this checking) // how many sessions can be (zero turn off this checking)
// default: 1000000 (one milion) // default: 1000000 (one milion)
@@ -224,6 +257,12 @@ public:
std::wstring html_filter_orphans_mode_str; std::wstring html_filter_orphans_mode_str;
HTMLFilter::OrphanMode html_filter_orphans_mode; HTMLFilter::OrphanMode html_filter_orphans_mode;
// the html nofilter tag
// content betweeng these tags (opening and closing) will not be filtered
// and this tag will not be included in the html output
// default: nofilter
std::wstring html_filter_nofilter_tag;
// the url of a new empty item (if there is not the subject too) // the url of a new empty item (if there is not the subject too)
// !! IMPROVE ME should be moved to locale // !! IMPROVE ME should be moved to locale
std::wstring item_url_empty; std::wstring item_url_empty;
@@ -262,6 +301,14 @@ public:
// default: empty // default: empty
std::wstring common_dir; std::wstring common_dir;
// system group's name for new uploaded files (created directories in the file system)
// it can be empty (it is not used then)
std::wstring upload_group;
// this value will be set based on upload_group
// will be -1 if upload_group is empty or if it is invalid
int upload_group_int;
// chmod of newly created directories (under upload_dir) // chmod of newly created directories (under upload_dir)
// default: 0750 // default: 0750
int upload_dirs_chmod; int upload_dirs_chmod;
@@ -423,11 +470,6 @@ public:
// (if true the html code for root is not filtered) // (if true the html code for root is not filtered)
bool editors_html_safe_mode_skip_root; bool editors_html_safe_mode_skip_root;
// charset used in templates, locales, logs etc.
// default: true (UTF-8)
// if false it means 8-bit ASCII
bool utf8;
// how many maximum symlinks can be followed // how many maximum symlinks can be followed
// (symlinks on directories as well) // (symlinks on directories as well)
// default: 20 // default: 20
@@ -614,6 +656,10 @@ public:
// will be taken accordingly // will be taken accordingly
size_t incorrect_login_cannot_login_delay; size_t incorrect_login_cannot_login_delay;
// pid file (a full path to a pid file)
// default: empty which means there is not a pid file used
// pid file is saved after winix has dropped privileges
std::wstring pid_file;
@@ -623,9 +669,6 @@ public:
std::wstring & Text(const wchar_t * name); std::wstring & Text(const wchar_t * name);
std::wstring & Text(const wchar_t * name, const wchar_t * def); std::wstring & Text(const wchar_t * name, const wchar_t * def);
std::wstring & Text(const std::wstring & name, const wchar_t * def); std::wstring & Text(const std::wstring & name, const wchar_t * def);
std::string & AText(const wchar_t * name);
std::string & AText(const wchar_t * name, const char * def);
std::string & AText(const std::wstring & name, const char * def);
int Int(const wchar_t *); int Int(const wchar_t *);
int Int(const wchar_t * name, int def); int Int(const wchar_t * name, int def);
@@ -657,7 +700,6 @@ public:
private: private:
PT::SpaceParser parser; PT::SpaceParser parser;
std::string default_str;
bool errors_to_stdout; bool errors_to_stdout;
void ShowError(); void ShowError();
+47 -34
View File
@@ -1,16 +1,40 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_cookieparser #ifndef headerfile_winix_core_cookieparser
#define headerfile_winix_core_cookieparser #define headerfile_winix_core_cookieparser
#include <fcgiapp.h>
#include "httpsimpleparser.h" #include "httpsimpleparser.h"
#include "requesttypes.h" #include "requesttypes.h"
#include "log.h" #include "log.h"
@@ -24,10 +48,8 @@ namespace Winix
class CookieParser : public HttpSimpleParser class CookieParser : public HttpSimpleParser
{ {
const char * cookie_string; const wchar_t * cookie_string;
CookieTab * cookie_tab; CookieTab * cookie_tab;
std::wstring temp_name, temp_value;
bool input_as_utf8;
protected: protected:
@@ -38,32 +60,23 @@ protected:
if( !cookie_string || *cookie_string == 0 ) if( !cookie_string || *cookie_string == 0 )
return -1; return -1;
return (int)(unsigned char)*(cookie_string++); return (int)*(cookie_string++);
}
void ConvStr(const std::string & src, std::wstring & dst)
{
if( input_as_utf8 )
PT::UTF8ToWide(src, dst);
else
AssignString(src, dst);
} }
virtual void Parameter(std::string & name, std::string & value)
virtual void Parameter(std::wstring & name, std::wstring & value)
{ {
// Cookie names are case insensitive according to section 3.1 of RFC 2965 // Cookie names are case insensitive according to section 3.1 of RFC 2965
// (we don't use locale here) // (we don't use locale here)
ToLower(name); ToLower(name);
ConvStr(name, temp_name); std::pair<CookieTab::iterator, bool> res = cookie_tab->insert( std::make_pair(name, value) );
ConvStr(value, temp_value); log << log2 << "Cookie, name: \"" << name << "\", value: \"" << value << "\"";
std::pair<CookieTab::iterator, bool> res = cookie_tab->insert( std::make_pair(temp_name, temp_value) );
log << log2 << "Cookie, name: \"" << temp_name << "\", value: \"" << temp_value << "\"";
if( res.second == false ) if( res.second == false )
{ {
res.first->second = temp_value; res.first->second = value;
log << " (overwritten)"; log << " (overwritten)";
} }
@@ -76,28 +89,28 @@ public:
CookieParser() CookieParser()
{ {
input_as_utf8 = false; HttpSimpleParser::separator = ';';
HttpSimpleParser::separator = ';'; HttpSimpleParser::value_can_be_quoted = true;
HttpSimpleParser::value_can_be_quoted = true; HttpSimpleParser::skip_white_chars = true;
HttpSimpleParser::skip_white_chars = true; HttpSimpleParser::recognize_special_chars = false;
HttpSimpleParser::recognize_special_chars = false; HttpSimpleParser::getchar_returns_utf8_chars = false;
} }
void UTF8(bool utf)
{
input_as_utf8 = utf;
}
// cookie_string can be null // cookie_string can be null
void Parse(const char * cookie_string_, CookieTab & cookie_tab_) void Parse(const wchar_t * cookie_string_, CookieTab & cookie_tab_)
{ {
cookie_string = cookie_string_; cookie_string = cookie_string_;
cookie_tab = &cookie_tab_; cookie_tab = &cookie_tab_;
HttpSimpleParser::Parse(); HttpSimpleParser::Parse();
} }
void Parse(const std::wstring & cookie_string_, CookieTab & cookie_tab_)
{
Parse(cookie_string_.c_str(), cookie_tab_);
}
}; };
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <cstring> #include <cstring>
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_crypt #ifndef headerfile_winix_core_crypt
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_cur #ifndef headerfile_winix_core_cur
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "dircontainer.h" #include "dircontainer.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_dircontainer #ifndef headerfile_winix_core_dircontainer
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "dirs.h" #include "dirs.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_dirs #ifndef headerfile_winix_core_dirs
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_error #ifndef headerfile_winix_core_error
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_group #ifndef headerfile_winix_core_group
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "groups.h" #include "groups.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_groups #ifndef headerfile_winix_core_groups
+138 -20
View File
@@ -1,15 +1,41 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "htmlfilter.h" #include "htmlfilter.h"
namespace Winix namespace Winix
{ {
@@ -198,6 +224,13 @@ void HTMLFilter::SafeMode(bool safe_mode_)
} }
void HTMLFilter::SetNoFilterTag(const std::wstring & tag_name)
{
no_filter_tag = tag_name;
}
HTMLFilter::Item & HTMLFilter::GetItem(size_t i) HTMLFilter::Item & HTMLFilter::GetItem(size_t i)
{ {
@@ -345,7 +378,6 @@ void HTMLFilter::PutLastTagWithClosingTag()
{ {
const wchar_t * start = pchar; const wchar_t * start = pchar;
while( *pchar != 0 ) while( *pchar != 0 )
{ {
if( IsOpeningTagMark() ) if( IsOpeningTagMark() )
@@ -367,6 +399,31 @@ const wchar_t * start = pchar;
} }
// used with <nofilter> </nofilter> tags
void HTMLFilter::PutTextBetweenLastTagWithClosingTag()
{
const wchar_t * start = pchar, * end = pchar;
while( *pchar != 0 )
{
if( IsOpeningTagMark() )
{
if( IsClosingTagForLastItem() )
{
PopStack();
CheckNewLine();
break;
}
}
else
{
pchar += 1;
end = pchar;
}
}
Put(start, end);
}
@@ -449,16 +506,34 @@ void HTMLFilter::ReadItemAttrValue(bool has_quote)
{ {
size_t i; size_t i;
// sprawdzic to wszedzie bo teraz jest tablica
attr_value.clear(); attr_value.clear();
attr_value_temp.clear();
// !! moze dodac obsluge escepowania cudzyslowu? sprawdzic czy to jest dostepne w htmlu // !! dodac obsluge pojedynczego cudzyslowu
for( i=0 ; *pchar && *pchar != '\"' && !IsClosingTagMark() && (has_quote || (*pchar!=10 && !IsWhite(*pchar)) ); ++i )
for(i=0 ; *pchar && *pchar != '\"' && !IsClosingTagMark() && (has_quote || (*pchar!=10 && !IsWhite(*pchar)) ); ++i )
{ {
if( *pchar==10 || IsWhite(*pchar) )
{
if( !attr_value_temp.empty() )
{
attr_value.push_back(attr_value_temp);
attr_value_temp.clear();
}
}
else
if( i < WINIX_HTMLFILTER_ATTR_VALUE_MAXLEN ) if( i < WINIX_HTMLFILTER_ATTR_VALUE_MAXLEN )
attr_value += *pchar; attr_value_temp += *pchar;
++pchar; ++pchar;
} }
if( !attr_value_temp.empty() )
{
attr_value.push_back(attr_value_temp);
attr_value_temp.clear();
}
} }
@@ -720,14 +795,22 @@ void HTMLFilter::PutClosingTagMark()
// !! zmienic na lepsza nazwe
// bo to nie zwraca true jesli tag jest safe
bool HTMLFilter::IsTagSafe(const wchar_t * tag) bool HTMLFilter::IsTagSafe(const wchar_t * tag)
{ {
if( !safe_mode ) if( !safe_mode )
return true; return true;
if( IsNameEqual(tag, no_filter_tag.c_str()) )
return false;
static const wchar_t * unsafe_tags[] = { static const wchar_t * unsafe_tags[] = {
L"script", L"iframe", L"frame", L"frameset", L"applet", L"base", L"body",
L"applet", L"head", L"meta", L"html", L"link", L"body" L"embed", L"head", L"html",
L"frame", L"frameset",L"iframe",
L"link", L"meta", L"param"
L"object", L"script"
}; };
size_t len = sizeof(unsafe_tags) / sizeof(const wchar_t*); size_t len = sizeof(unsafe_tags) / sizeof(const wchar_t*);
@@ -755,7 +838,8 @@ bool HTMLFilter::IsTagSafe(const std::wstring & tag)
bool HTMLFilter::PutOpeningTag() bool HTMLFilter::PutOpeningTag()
{ {
if( !IsTagSafe(LastItem().name) ) if( !IsTagSafe(LastItem().name) )
// dodac tutaj skipniecie calego tagu // !! IMPROVE ME
// !! dodac tutaj skipniecie calego tagu
return false; return false;
PutOpeningTagMark(); PutOpeningTagMark();
@@ -945,6 +1029,9 @@ const wchar_t * last_non_white = pchar;
bool HTMLFilter::PrintOpeningItem() bool HTMLFilter::PrintOpeningItem()
{ {
if( IsNameEqual(no_filter_tag, LastItem().name) )
return true;
if( last_new_line ) if( last_new_line )
{ {
PutNewLine(); PutNewLine();
@@ -981,6 +1068,8 @@ bool HTMLFilter::ReadItemAttr()
pchar += 1; // skipping '=' pchar += 1; // skipping '='
SkipWhiteLines(); SkipWhiteLines();
// !! dodac obsluge pojedynczego cudzyslowu
bool has_quote = (*pchar == '\"'); bool has_quote = (*pchar == '\"');
if( has_quote ) if( has_quote )
@@ -1001,28 +1090,46 @@ bool HTMLFilter::CheckItemAttr()
if( attr_has_value && IsNameEqual(L"lang", attr_name) ) if( attr_has_value && IsNameEqual(L"lang", attr_name) )
{ {
LastItem().porphans = 0; LastItem().porphans = 0;
attr_value_lower = attr_value;
ToLower(attr_value_lower);
OrphansTab::iterator i = orphans_tab.find(attr_value_lower); if( !attr_value.empty() )
{
// we are taking the first value only
attr_value_lower = attr_value[0];
ToLower(attr_value_lower);
if( i != orphans_tab.end() ) OrphansTab::iterator i = orphans_tab.find(attr_value_lower);
LastItem().porphans = &i->second;
if( i != orphans_tab.end() )
LastItem().porphans = &i->second;
}
} }
return true; return true;
} }
void HTMLFilter::PrinItemAttr() void HTMLFilter::PrintItemAttr()
{ {
size_t i;
if( IsNameEqual(no_filter_tag, LastItem().name) )
return;
Put(' '); Put(' ');
Put(attr_name); Put(attr_name);
if( attr_has_value ) if( attr_has_value )
{ {
Put(L"=\""); Put(L"=\"");
Put(attr_value);
for(i=0 ; i<attr_value.size() ; ++i)
{
Put(attr_value[i]);
if( i + 1 < attr_value.size() )
Put(' ');
}
Put('\"'); Put('\"');
} }
} }
@@ -1064,15 +1171,18 @@ void HTMLFilter::ReadItemOpening()
while( ReadItemAttr() ) while( ReadItemAttr() )
{ {
if( CheckItemAttr() ) if( CheckItemAttr() )
PrinItemAttr(); PrintItemAttr();
} }
SkipAndCheckClosingTag(); // here LastItem().type can be changed to 'simple' SkipAndCheckClosingTag(); // here LastItem().type can be changed to 'simple'
if( LastItem().type == Item::simple ) if( !IsNameEqual(no_filter_tag, LastItem().name) )
Put(L" /"); {
if( LastItem().type == Item::simple )
Put(L" /");
PutClosingTagMark(); PutClosingTagMark();
}
} }
} }
@@ -1196,6 +1306,11 @@ bool HTMLFilter::IsLastTag(const wchar_t * name)
} }
bool HTMLFilter::IsLastTag(const std::wstring & name)
{
return IsNameEqual(name, LastItem().name);
}
// checking exceptions for opening tags // checking exceptions for opening tags
void HTMLFilter::CheckExceptions() void HTMLFilter::CheckExceptions()
@@ -1222,6 +1337,9 @@ void HTMLFilter::CheckExceptions()
if( IsLastTag(L"pre") || IsLastTag(L"textarea") ) if( IsLastTag(L"pre") || IsLastTag(L"textarea") )
PutLastTagWithClosingTag(); PutLastTagWithClosingTag();
if( IsLastTag(no_filter_tag) )
PutTextBetweenLastTagWithClosingTag();
if( IsLastTag(L"body") ) if( IsLastTag(L"body") )
LastItem().has_body_tag = true; LastItem().has_body_tag = true;
} }
+44 -4
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_htmlfilter #ifndef headerfile_winix_core_htmlfilter
@@ -110,6 +135,11 @@ public:
void InsertTabs(size_t tabsize); void InsertTabs(size_t tabsize);
// set a name of a html tag which will be used as 'nofilter' tag
// elements between such tags are not filtered (similarly as in <pre> and <textarea>)
// these tags (opening and closing) will no be placed in the html output
void SetNoFilterTag(const std::wstring & tag_name);
// orphans are checked only in 'body' tag // orphans are checked only in 'body' tag
void AssignOrphans(const wchar_t * lang_code, const std::vector<std::wstring> & otab); void AssignOrphans(const wchar_t * lang_code, const std::vector<std::wstring> & otab);
void AssignOrphans(const std::wstring & lang_code, const std::vector<std::wstring> & otab); void AssignOrphans(const std::wstring & lang_code, const std::vector<std::wstring> & otab);
@@ -143,6 +173,9 @@ protected:
typedef std::map<std::wstring, Orphans> OrphansTab; typedef std::map<std::wstring, Orphans> OrphansTab;
OrphansTab orphans_tab; OrphansTab orphans_tab;
// html <nofilter> tag name
std::wstring no_filter_tag;
struct Item struct Item
{ {
@@ -173,6 +206,10 @@ protected:
}; };
/* /*
virtual methods virtual methods
*/ */
@@ -223,6 +260,7 @@ protected:
bool IsNameEqual(const std::wstring & name1, const std::wstring & name2, size_t len); bool IsNameEqual(const std::wstring & name1, const std::wstring & name2, size_t len);
bool IsLastTag(const wchar_t * name); bool IsLastTag(const wchar_t * name);
bool IsLastTag(const std::wstring & name);
bool IsTagSafe(const wchar_t * tag); bool IsTagSafe(const wchar_t * tag);
bool IsTagSafe(const std::wstring & tag); bool IsTagSafe(const std::wstring & tag);
@@ -254,7 +292,7 @@ protected:
bool ReadItemAttr(); bool ReadItemAttr();
bool CheckItemAttr(); bool CheckItemAttr();
void PrinItemAttr(); void PrintItemAttr();
void ReadItemClosing(); void ReadItemClosing();
void ReadItemSpecial(); void ReadItemSpecial();
@@ -270,6 +308,7 @@ protected:
void PutNormalNonWhite(const wchar_t * & str, const wchar_t * end); void PutNormalNonWhite(const wchar_t * & str, const wchar_t * end);
void PutNormalWhite(const wchar_t * & str, const wchar_t * end); void PutNormalWhite(const wchar_t * & str, const wchar_t * end);
void PutLastTagWithClosingTag(); void PutLastTagWithClosingTag();
void PutTextBetweenLastTagWithClosingTag();
void PutTabs(size_t len); void PutTabs(size_t len);
void PutNonBreakingSpace(); void PutNonBreakingSpace();
void PutNewLine(); void PutNewLine();
@@ -288,7 +327,8 @@ protected:
size_t tab_size; size_t tab_size;
OrphanMode orphan_mode; OrphanMode orphan_mode;
std::wstring attr_name; std::wstring attr_name;
std::wstring attr_value; std::vector<std::wstring> attr_value;
std::wstring attr_value_temp;
std::wstring attr_value_lower; std::wstring attr_value_lower;
bool attr_has_value; bool attr_has_value;
std::wstring lang_code_lower; std::wstring lang_code_lower;
+100 -60
View File
@@ -1,13 +1,41 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "httpsimpleparser.h" #include "httpsimpleparser.h"
#include "misc.h"
#include "utf8/utf8.h"
namespace Winix namespace Winix
@@ -16,14 +44,12 @@ namespace Winix
void HttpSimpleParser::ToLower(std::string & s) void HttpSimpleParser::ToLower(std::wstring & s)
{ {
std::string::iterator i; for(wchar_t & c : s)
for(i=s.begin() ; i!= s.end() ; ++i)
{ {
if( *i>='A' && *i<='Z' ) if( c>='A' && c<='Z' )
*i = *i - 'A' + 'a'; c = c - 'A' + 'a';
} }
} }
@@ -45,38 +71,6 @@ void HttpSimpleParser::SkipWhiteChars()
void HttpSimpleParser::TrimWhiteChars(std::string & s)
{
if( s.empty() )
return;
std::string::size_type i;
for(i = 0 ; i<s.size() && IsWhite(s[i]) ; ++i);
if( i == s.size() )
{
// all characters are white
s.clear();
return;
}
if( i > 0 )
// there are some white characters at the beginning
s.erase(0, i);
// s is not empty now (i was not equal s.size())
// and we have some non white characters
// we stops at the last non white character
for(i = s.size()-1 ; i>0 && IsWhite(s[i]) ; --i);
if( i != s.size()-1 )
// there are some white characters at the end
// we're starting from i+1 even when i==0 (there are some non white characters)
s.erase(i+1, s.size() - i - 1);
}
int HttpSimpleParser::ParseHalfHex(int c) int HttpSimpleParser::ParseHalfHex(int c)
@@ -127,33 +121,42 @@ void HttpSimpleParser::CheckSpecialChar()
void HttpSimpleParser::ReadName() void HttpSimpleParser::ReadName()
{ {
// we're checking 'separator' and '=' because the string is allowed not having '=' (the value is optional) // we're checking 'separator' and '=' because the string is allowed not having '=' (the value is optional)
utf8_token.clear();
last_name.clear();
for( ; last_c!=-1 && last_c!=separator && last_c!='=' ; last_c = GetChar() ) for( ; last_c!=-1 && last_c!=separator && last_c!='=' ; last_c = GetChar() )
{ {
if( recognize_special_chars ) if( recognize_special_chars )
CheckSpecialChar(); CheckSpecialChar();
if( last_c != -1 ) if( last_c != -1 )
last_name += last_c; {
if( getchar_returns_utf8_chars )
utf8_token += last_c;
else
last_name += last_c;
}
} }
if( getchar_returns_utf8_chars )
PT::UTF8ToWide(utf8_token, last_name);
if( last_c == '=' ) if( last_c == '=' )
last_c = GetChar(); last_c = GetChar();
} }
void HttpSimpleParser::ReadQuotedValue() void HttpSimpleParser::ReadQuotedValue()
{ {
// skipping '"' // skipping '"'
last_c = GetChar(); last_c = GetChar();
utf8_token.clear();
last_value.clear();
for( ; last_c!=-1 && last_c!='"' ; last_c = GetChar() ) for( ; last_c!=-1 && last_c!='"' ; last_c = GetChar() )
{ {
@@ -161,9 +164,16 @@ void HttpSimpleParser::ReadQuotedValue()
CheckSpecialChar(); CheckSpecialChar();
if( last_c != -1 ) if( last_c != -1 )
last_value += last_c; {
if( getchar_returns_utf8_chars )
utf8_token += last_c;
else
last_value += last_c;
}
} }
if( getchar_returns_utf8_chars )
PT::UTF8ToWide(utf8_token, last_value);
if( last_c == '"' ) if( last_c == '"' )
last_c = GetChar(); last_c = GetChar();
@@ -174,26 +184,39 @@ void HttpSimpleParser::ReadQuotedValue()
} }
void HttpSimpleParser::ReadNormalValue()
{
utf8_token.clear();
last_value.clear();
for( ; last_c!=-1 && last_c!=separator ; last_c = GetChar() )
{
if( recognize_special_chars )
CheckSpecialChar();
if( last_c != -1 )
{
if( getchar_returns_utf8_chars )
utf8_token += last_c;
else
last_value += last_c;
}
}
if( getchar_returns_utf8_chars )
PT::UTF8ToWide(utf8_token, last_value);
}
void HttpSimpleParser::ReadValue() void HttpSimpleParser::ReadValue()
{ {
if( skip_white_chars ) if( skip_white_chars )
SkipWhiteChars(); SkipWhiteChars();
if( value_can_be_quoted && last_c == '"' ) if( value_can_be_quoted && last_c == '"' )
{
ReadQuotedValue(); ReadQuotedValue();
}
else else
{ ReadNormalValue();
for( ; last_c!=-1 && last_c!=separator ; last_c = GetChar() )
{
if( recognize_special_chars )
CheckSpecialChar();
if( last_c != -1 )
last_value += last_c;
}
}
if( last_c == separator ) if( last_c == separator )
@@ -203,6 +226,21 @@ void HttpSimpleParser::ReadValue()
/*
* there can be some important values like passwords so its better
* to clear them now
*/
void HttpSimpleParser::Clear()
{
Overwrite(last_name);
Overwrite(last_value);
Overwrite(utf8_token);
last_name.clear();
last_value.clear();
utf8_token.clear();
}
void HttpSimpleParser::Parse() void HttpSimpleParser::Parse()
{ {
for( last_c = GetChar() ; last_c != -1 ; ) for( last_c = GetChar() ; last_c != -1 ; )
@@ -217,12 +255,14 @@ void HttpSimpleParser::Parse()
if( skip_white_chars ) if( skip_white_chars )
{ {
TrimWhiteChars(last_name); TrimWhite(last_name);
TrimWhiteChars(last_value); TrimWhite(last_value);
} }
Parameter(last_name, last_value); // user definied function Parameter(last_name, last_value); // user definied function
} }
Clear();
} }
+44 -11
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_httpsimpleparser #ifndef headerfile_winix_core_httpsimpleparser
@@ -27,26 +52,33 @@ protected:
bool skip_white_chars; bool skip_white_chars;
bool recognize_special_chars; bool recognize_special_chars;
int ParseHalfHex(int c); // if false then GetChar() returns wide characters (converted to int)
// if true then GetChar() returns utf8 characters (we have to convert them from utf8 to wide chars)
bool getchar_returns_utf8_chars;
int ParseHalfHex(int c);
void ReadName(); void ReadName();
void ReadQuotedValue(); void ReadQuotedValue();
void ReadNormalValue();
void ReadValue(); void ReadValue();
void Clear();
std::string last_name; std::wstring last_name;
std::string last_value; std::wstring last_value;
std::string utf8_token;
int last_c; int last_c;
int separator; int separator;
// '-1' means end (eof) // '-1' means end (eof)
// when there is an eof this method can be called more than once (it should always return -1 in such a case)
virtual int GetChar() = 0; virtual int GetChar() = 0;
virtual void Parameter(std::string & last_name, std::string & last_value) = 0; virtual void Parameter(std::wstring & last_name, std::wstring & last_value) = 0;
void ToLower(std::string & s); void ToLower(std::wstring & s);
bool IsWhite(int c); bool IsWhite(int c);
void SkipWhiteChars(); void SkipWhiteChars();
void TrimWhiteChars(std::string & s);
void CheckSpecialChar(); void CheckSpecialChar();
void Parse(); void Parse();
@@ -59,9 +91,10 @@ public:
{ {
separator = '&'; separator = '&';
read_name = true; read_name = true;
value_can_be_quoted = false; value_can_be_quoted = false;
skip_white_chars = false; skip_white_chars = false;
recognize_special_chars = true; recognize_special_chars = true;
getchar_returns_utf8_chars = false;
} }
}; };
+31 -3
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <ctime> #include <ctime>
@@ -514,10 +539,13 @@ void Image::SaveImage()
item_work.type == WINIX_IMAGE_TYPE_CROP_THUMB || item_work.type == WINIX_IMAGE_TYPE_CROP_THUMB ||
item_work.type == WINIX_IMAGE_TYPE_CREATE_CROP_NEW_THUMB ); item_work.type == WINIX_IMAGE_TYPE_CREATE_CROP_NEW_THUMB );
if( system->MakeFilePath(file_work, dst_path, thumb, true, config->upload_dirs_chmod) ) if( system->MakeFilePath(file_work, dst_path, thumb, true, config->upload_dirs_chmod, config->upload_group_int) )
{ {
if( RenameFile(stream_tmp_path.Str(), dst_path) ) if( RenameFile(stream_tmp_path.Str(), dst_path) )
{ {
// it doesn't matter for us if there is an error when chmod/chown on a file
// the admin (root) will correct it
SetPriv(dst_path, config->upload_files_chmod, config->upload_group_int);
ImageSavedCorrectly(); ImageSavedCorrectly();
} }
else else
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_image #ifndef headerfile_winix_core_image
+27 -2
View File
@@ -1,9 +1,34 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
+27 -2
View File
@@ -1,9 +1,34 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
+27 -2
View File
@@ -1,9 +1,34 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "item.h" #include "item.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_item #ifndef headerfile_winix_core_item
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "job.h" #include "job.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_jobs #ifndef headerfile_winix_core_jobs
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa * Copyright (c) 2009-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa * Copyright (c) 2009-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_lastcontainer #ifndef headerfile_winix_core_lastcontainer
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_loadavg #ifndef headerfile_winix_core_loadavg
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "lock.h" #include "lock.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_lock #ifndef headerfile_winix_core_lock
+29 -4
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "log.h" #include "log.h"
@@ -53,14 +78,14 @@ int Log::LogLevel()
void Log::Init(int log_level_, bool save_each_line_, const std::string & log_file_, bool log_std, int log_max_requests) void Log::Init(int log_level_, bool save_each_line_, const std::wstring & log_file_, bool log_std, int log_max_requests)
{ {
log_level = log_level_; log_level = log_level_;
log_file = log_file_;
log_stdout = log_std; log_stdout = log_std;
max_requests = log_max_requests; max_requests = log_max_requests;
save_each_line = save_each_line_; save_each_line = save_each_line_;
PT::WideToUTF8(log_file_, log_file);
// don't open the file here // don't open the file here
// because it would be created with the root as an owner // because it would be created with the root as an owner
} }
+28 -3
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_log #ifndef headerfile_winix_core_log
@@ -37,7 +62,7 @@ public:
~Log(); ~Log();
void SetTimeZones(TimeZones * ptime_zones); void SetTimeZones(TimeZones * ptime_zones);
void Init(int log_level_, bool save_each_line_, const std::string & log_file_, bool log_std, int log_max_requests); void Init(int log_level_, bool save_each_line_, const std::wstring & log_file_, bool log_std, int log_max_requests);
Log & operator<<(const void * s); Log & operator<<(const void * s);
Log & operator<<(const char * s); Log & operator<<(const char * s);
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_logmanipulators #ifndef headerfile_winix_core_logmanipulators
+255 -192
View File
@@ -1,14 +1,40 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <grp.h>
#include <fstream> #include <fstream>
#include <cstdlib> #include <cstdlib>
#include "misc.h" #include "misc.h"
@@ -31,9 +57,6 @@ namespace misc_private
0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x2028, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x2028,
0x2029, 0x202F, 0x205F, 0x3000 }; 0x2029, 0x202F, 0x205F, 0x3000 };
std::ifstream get_file_content;
std::string get_file_content_ansi;
PT::WTextStream tmp_qencode; PT::WTextStream tmp_qencode;
} }
@@ -151,7 +174,7 @@ return buffer;
void Toa(int value, std::string & res, int base, bool clear) void Toa(int value, std::string & res, int base, bool clear)
{ {
static char buffer[50]; static char buffer[50]; // !! IMPROVE ME this 'static' is not needed here?
size_t len = sizeof(buffer) / sizeof(char); size_t len = sizeof(buffer) / sizeof(char);
if( clear ) if( clear )
@@ -164,7 +187,7 @@ size_t len = sizeof(buffer) / sizeof(char);
void Toa(long value, std::string & res, int base, bool clear) void Toa(long value, std::string & res, int base, bool clear)
{ {
static char buffer[50]; static char buffer[50]; // !! IMPROVE ME the same as above
size_t len = sizeof(buffer) / sizeof(char); size_t len = sizeof(buffer) / sizeof(char);
if( clear ) if( clear )
@@ -177,7 +200,7 @@ size_t len = sizeof(buffer) / sizeof(char);
void Toa(int value, std::wstring & res, int base, bool clear) void Toa(int value, std::wstring & res, int base, bool clear)
{ {
static wchar_t buffer[50]; static wchar_t buffer[50]; // !!
size_t len = sizeof(buffer) / sizeof(wchar_t); size_t len = sizeof(buffer) / sizeof(wchar_t);
if( clear ) if( clear )
@@ -190,7 +213,7 @@ size_t len = sizeof(buffer) / sizeof(wchar_t);
void Toa(long value, std::wstring & res, int base, bool clear) void Toa(long value, std::wstring & res, int base, bool clear)
{ {
static wchar_t buffer[50]; static wchar_t buffer[50]; // !!
size_t len = sizeof(buffer) / sizeof(wchar_t); size_t len = sizeof(buffer) / sizeof(wchar_t);
if( clear ) if( clear )
@@ -205,142 +228,6 @@ size_t len = sizeof(buffer) / sizeof(wchar_t);
void AssignString(const char * src, size_t len, std::wstring & dst, bool clear)
{
if( clear )
dst.clear();
if( dst.capacity() < dst.size() + len )
dst.reserve(dst.size() + len + 128);
for(size_t i=0 ; i<len ; ++i )
dst += static_cast<unsigned char>(src[i]);
}
void AssignString(const char * src, std::wstring & dst, bool clear)
{
size_t len;
for(len=0 ; src[len] ; ++len){}
AssignString(src, len, dst, clear);
}
void AssignString(const std::string & src, std::wstring & dst, bool clear)
{
AssignString(src.c_str(), src.size(), dst, clear);
}
void AssignString(const wchar_t * src, size_t len, std::string & dst, bool clear)
{
if( clear )
dst.clear();
if( dst.capacity() < dst.size() + len )
dst.reserve(dst.size() + len + 128);
for(size_t i=0 ; i<len ; ++i)
dst += static_cast<char>(src[i]);
}
void AssignString(const wchar_t * src, std::string & dst, bool clear)
{
size_t len;
for(len=0 ; src[len] ; ++len){}
AssignString(src, len, dst, clear);
}
void AssignString(const std::wstring & src, std::string & dst, bool clear)
{
AssignString(src.c_str(), src.size(), dst, clear);
}
void AssignString(const char * src, size_t len, std::string & dst, bool clear)
{
if( clear )
dst.clear();
// we suppose that append is smart enough and we don't have to use reserve()
dst.append(src, len);
}
void AssignString(const char * src, std::string & dst, bool clear)
{
size_t len;
for(len=0 ; src[len] ; ++len){}
AssignString(src, len, dst, clear);
}
void AssignString(const std::string & src, std::string & dst, bool clear)
{
if( clear )
dst.clear();
dst.append(src);
}
void AssignString(const wchar_t * src, size_t len, std::wstring & dst, bool clear)
{
if( clear )
dst.clear();
// we suppose that append is smart enough and we don't have to use reserve()
dst.append(src, len);
}
void AssignString(const wchar_t * src, std::wstring & dst, bool clear)
{
size_t len;
for(len=0 ; src[len] ; ++len){}
AssignString(src, len, dst, clear);
}
void AssignString(const std::wstring & src, std::wstring & dst, bool clear)
{
if( clear )
dst.clear();
dst.append(src);
}
bool CorrectUrlChar(wchar_t c) bool CorrectUrlChar(wchar_t c)
{ {
return (c >= 'a' && c <='z') || return (c >= 'a' && c <='z') ||
@@ -663,6 +550,18 @@ return path[path.size()-1] == '/';
void Overwrite(std::string & str)
{
for(char & c : str)
c = 0;
}
void Overwrite(std::wstring & str)
{
for(wchar_t & c : str)
c = 0;
}
const char * SkipWhite(const char * s) const char * SkipWhite(const char * s)
@@ -766,11 +665,12 @@ bool ValidateEmail(const std::wstring & email)
bool IsFile(const wchar_t * file) bool IsFile(const wchar_t * file)
{ {
struct stat sb; struct stat sb;
static std::string afile; char file_name[WINIX_OS_PATH_SIZE];
PT::WideToUTF8(file, afile); if( !WideToUTF8(file, file_name, WINIX_OS_PATH_SIZE) )
return false;
return (stat(afile.c_str(), &sb) == 0); return (stat(file_name, &sb) == 0);
} }
@@ -780,37 +680,43 @@ bool IsFile(const std::wstring & file)
} }
bool CreateDir(const wchar_t * dir, int priv) /*
* group can be -1 (it is not used then)
*/
bool CreateDir(const wchar_t * dir, int priv, int group)
{ {
static std::string adir; char dir_name[WINIX_OS_PATH_SIZE];
if( !IsFile(dir) ) if( !IsFile(dir) )
{ {
PT::WideToUTF8(dir, adir); if( !WideToUTF8(dir, dir_name, WINIX_OS_PATH_SIZE) )
return false;
if( mkdir(adir.c_str(), priv) < 0 ) if( mkdir(dir_name, 0777) < 0 )
{ {
log << log1 << "Can't create a directory on fs: " << adir << logend; log << log1 << "Can't create a directory on fs: " << dir << logend;
return false; return false;
} }
return SetPriv(dir, priv, group);
} }
return true; return true;
} }
bool CreateDir(const std::wstring & dir, int priv) bool CreateDir(const std::wstring & dir, int priv, int group)
{ {
return CreateDir(dir.c_str(), priv); return CreateDir(dir.c_str(), priv, group);
} }
// creating directories (can be more than one) // creating directories (can be more than one)
// 'dirs' can begin with a slash (will be skipped) // 'dirs' can begin with a slash (will be skipped)
bool CreateDirs(const wchar_t * base_dir, const wchar_t * dirs, int priv, bool skip_last) bool CreateDirs(const wchar_t * base_dir, const wchar_t * dirs, int priv, int group, bool skip_last)
{ {
static std::wstring temp; static std::wstring temp; // !! IMPROVE ME change to char[WINIX_OS_PATH_SIZE] or just remove 'static'
const wchar_t * p = dirs; const wchar_t * p = dirs;
temp = base_dir; // we start creating from 'base_dir' temp = base_dir; // we start creating from 'base_dir'
@@ -834,7 +740,7 @@ const wchar_t * p = dirs;
temp += *p; temp += *p;
if( !skip_last || *p!=0 ) if( !skip_last || *p!=0 )
if( !CreateDir(temp.c_str(), priv) ) if( !CreateDir(temp.c_str(), priv, group) )
return false; return false;
temp += '/'; temp += '/';
@@ -845,9 +751,82 @@ return true;
bool CreateDirs(const std::wstring & base_dir, const std::wstring & dirs, int priv, bool skip_last) bool CreateDirs(const std::wstring & base_dir, const std::wstring & dirs, int priv, int group, bool skip_last)
{ {
return CreateDirs(base_dir.c_str(), dirs.c_str(), priv, skip_last); return CreateDirs(base_dir.c_str(), dirs.c_str(), priv, group, skip_last);
}
int GetGroupId(const wchar_t * name)
{
struct group gr;
struct group * result;
char group_name[WINIX_OS_USERNAME_SIZE];
char buffer[512];
if( !WideToUTF8(name, group_name, WINIX_OS_USERNAME_SIZE) )
return -1;
if( getgrnam_r(group_name, &gr, buffer, sizeof(buffer)/sizeof(char), &result) != 0 )
{
log << log1 << "Misc: I cannot get the group_id for group name: " << name << logend;
return -1;
}
/*
* there is no such a group in /etc/group
*/
if( result == 0 )
{
log << log1 << "Misc: There is no a group with name: " << name << logend;
return -1;
}
return gr.gr_gid;
}
int GetGroupId(const std::wstring & name)
{
return GetGroupId(name.c_str());
}
/*
* setting priveleges and a group id on a file or on a directory
* group can be -1 (it is not used then)
*/
bool SetPriv(const wchar_t * name, int priv, int group)
{
char file_name[WINIX_OS_PATH_SIZE];
if( !WideToUTF8(name, file_name, WINIX_OS_PATH_SIZE) )
return false;
if( chmod(file_name, priv) < 0 )
{
log << log1 << "Misc: Can't set proper fs privileges on: " << name << logend;
return false;
}
if( group != -1 )
{
if( chown(file_name, geteuid(), group) < 0 )
{
log << log1 << "Can't set proper fs group on: " << name
<< ", group id was: " << group << logend;
return false;
}
}
return true;
}
bool SetPriv(const std::wstring & name, int priv, int group)
{
return SetPriv(name.c_str(), priv, group);
} }
@@ -876,18 +855,22 @@ return true;
bool CopyFile(const wchar_t * src, const wchar_t * dst) bool CopyFile(const wchar_t * src, const wchar_t * dst)
{ {
static std::string asrc, adst; char src_name[WINIX_OS_PATH_SIZE];
char dst_name[WINIX_OS_PATH_SIZE];
FILE * in, * out; FILE * in, * out;
PT::WideToUTF8(src, asrc); if( !WideToUTF8(src, src_name, WINIX_OS_PATH_SIZE) )
PT::WideToUTF8(dst, adst); return false;
in = fopen(asrc.c_str(), "rb"); if( !WideToUTF8(dst, dst_name, WINIX_OS_PATH_SIZE) )
return false;
in = fopen(src_name, "rb");
if( !in ) if( !in )
return false; return false;
out = fopen(adst.c_str(), "wb"); out = fopen(dst_name, "wb");
if( !out ) if( !out )
{ {
@@ -904,7 +887,7 @@ FILE * in, * out;
res = false; res = false;
if( !res ) if( !res )
remove(adst.c_str()); remove(dst_name);
return res; return res;
} }
@@ -919,11 +902,12 @@ bool CopyFile(const std::wstring & src, const std::wstring & dst)
bool RemoveFile(const wchar_t * file) bool RemoveFile(const wchar_t * file)
{ {
static std::string afile; char file_name[WINIX_OS_PATH_SIZE];
PT::WideToUTF8(file, afile); if( !WideToUTF8(file, file_name, WINIX_OS_PATH_SIZE) )
return false;
return unlink(afile.c_str()) == 0; return unlink(file_name) == 0;
} }
@@ -936,12 +920,16 @@ bool RemoveFile(const std::wstring & file)
bool RenameFile(const wchar_t * from, const wchar_t * to) bool RenameFile(const wchar_t * from, const wchar_t * to)
{ {
static std::string afrom, ato; char from_name[WINIX_OS_PATH_SIZE];
char to_name[WINIX_OS_PATH_SIZE];
PT::WideToUTF8(from, afrom); if( !WideToUTF8(from, from_name, WINIX_OS_PATH_SIZE) )
PT::WideToUTF8(to, ato); return false;
return rename(afrom.c_str(), ato.c_str()) == 0; if( !WideToUTF8(to, to_name, WINIX_OS_PATH_SIZE) )
return false;
return rename(from_name, to_name) == 0;
} }
@@ -954,19 +942,25 @@ bool RenameFile(const std::wstring & from, const std::wstring & to)
bool GetUTF8File(const char * file_path, std::wstring & content, bool clear_content) bool GetUTF8File(const wchar_t * file_path, std::wstring & content, bool clear_content)
{ {
using namespace misc_private; char file[WINIX_OS_PATH_SIZE];
std::ifstream get_file_content;
if( clear_content ) if( clear_content )
content.clear(); content.clear();
get_file_content.clear(); if( !WideToUTF8(file_path, file, WINIX_OS_PATH_SIZE) )
get_file_content.open(file_path, std::ios_base::in | std::ios_base::binary); return false;
get_file_content.open(file, std::ios_base::in | std::ios_base::binary);
if( !get_file_content ) if( !get_file_content )
return false; return false;
/*
* we don't report any errors when converting from UTF8 to wide characters here
*/
PT::UTF8ToWide(get_file_content, content); PT::UTF8ToWide(get_file_content, content);
get_file_content.close(); get_file_content.close();
@@ -974,21 +968,6 @@ return true;
} }
bool GetUTF8File(const wchar_t * file_path, std::wstring & content, bool clear_content)
{
using namespace misc_private;
PT::WideToUTF8(file_path, get_file_content_ansi);
return GetUTF8File(get_file_content_ansi.c_str(), content, clear_content);
}
bool GetUTF8File(const std::string & file_path, std::wstring & content, bool clear_content)
{
return GetUTF8File(file_path.c_str(), content, clear_content);
}
bool GetUTF8File(const std::wstring & file_path, std::wstring & content, bool clear_content) bool GetUTF8File(const std::wstring & file_path, std::wstring & content, bool clear_content)
{ {
return GetUTF8File(file_path.c_str(), content, clear_content); return GetUTF8File(file_path.c_str(), content, clear_content);
@@ -1128,6 +1107,69 @@ void UrlEncode(const std::wstring & in, std::wstring & out, bool clear_out)
bool UrlDecodeFromHex(int c, int & out)
{
if( c>='0' && c<='9' )
{
out = c - '0';
return true;
}
else
if( c>='a' && c<='f' )
{
out = c - 'a' + 10;
return true;
}
else
if( c>='A' && c<='F' )
{
out = c - 'A' + 10;
return true;
}
out = 0;
return false;
}
bool UrlDecode(const char * url, std::wstring & out, bool clear_out)
{
char url_utf8[WINIX_URL_MAX_SIZE];
size_t index = 0;
int c1, c2;
if( clear_out )
out.clear();
while( *url && index < WINIX_URL_MAX_SIZE-1 )
{
if( *url == '%' && *(url+1) && *(url+2) &&
UrlDecodeFromHex(*(url+1), c1) && UrlDecodeFromHex(*(url+2), c2) )
{
url_utf8[index++] = (c1 << 4) + c2;
url += 3;
}
else
{
url_utf8[index++] = *url;
url += 1;
}
}
url_utf8[index] = 0;
return PT::UTF8ToWide(url_utf8, out, false);
}
bool UrlDecode(const std::string & url, std::wstring & out, bool clear_out)
{
return UrlDecode(url.c_str(), out, clear_out);
}
void QEncode(const std::wstring & in, std::string & out, bool clear) void QEncode(const std::wstring & in, std::string & out, bool clear)
{ {
@@ -1160,6 +1202,27 @@ void RemovePostFileTmp(PostFileTab & post_file_tab)
} }
bool WideToUTF8(const wchar_t * wide_string, char * utf8, size_t utf8_size)
{
bool res = PT::WideToUTF8(wide_string, utf8, utf8_size);
if( !res )
{
/*
* either the 'utf8' buffer is too small or there was an error when converting
*/
log << log1 << "Misc: I cannot convert from a wide string to an UTF-8 string, original string was: "
<< wide_string << logend;
}
return res;
}
bool WideToUTF8(const std::wstring & wide_string, char * utf8, size_t utf8_size)
{
return WideToUTF8(wide_string.c_str(), utf8, utf8_size);
}
} // namespace Winix } // namespace Winix
+71 -38
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_misc #ifndef headerfile_winix_core_misc
@@ -19,6 +44,9 @@
#include "date/date.h" #include "date/date.h"
#include "textstream/textstream.h" #include "textstream/textstream.h"
#include "utf8/utf8.h" #include "utf8/utf8.h"
#include "winix_const.h"
namespace Winix namespace Winix
@@ -187,34 +215,6 @@ void Toa(long value, std::wstring & res, int base = 10, bool clear = true);
/*
conversions between ascii text and wide characters
(destination is always std::string or std::wstring)
characters are copied as they are without any locales checking
*/
void AssignString(const char * src, size_t len, std::wstring & dst, bool clear = true);
void AssignString(const char * src, std::wstring & dst, bool clear = true);
void AssignString(const std::string & src, std::wstring & dst, bool clear = true);
void AssignString(const wchar_t * src, size_t len, std::string & dst, bool clear = true);
void AssignString(const wchar_t * src, std::string & dst, bool clear = true);
void AssignString(const std::wstring & src, std::string & dst, bool clear = true);
void AssignString(const char * src, size_t len, std::string & dst, bool clear = true);
void AssignString(const char * src, std::string & dst, bool clear = true);
void AssignString(const std::string & src, std::string & dst, bool clear = true);
void AssignString(const wchar_t * src, size_t len, std::wstring & dst, bool clear = true);
void AssignString(const wchar_t * src, std::wstring & dst, bool clear = true);
void AssignString(const std::wstring & src, std::wstring & dst, bool clear = true);
bool CorrectUrlChar(wchar_t c); bool CorrectUrlChar(wchar_t c);
void CorrectUrlDots(std::wstring & url); void CorrectUrlDots(std::wstring & url);
void CorrectUrlChars(std::wstring & url); void CorrectUrlChars(std::wstring & url);
@@ -333,6 +333,10 @@ void Trim(StringType & s, wchar_t c)
void Overwrite(std::string & str);
void Overwrite(std::wstring & str);
template<class StringType> template<class StringType>
void MaxSize(StringType & str, size_t max_size) void MaxSize(StringType & str, size_t max_size)
@@ -723,27 +727,31 @@ bool ValidateEmail(const std::wstring & email);
bool IsFile(const wchar_t * file); bool IsFile(const wchar_t * file);
bool IsFile(const std::wstring & file); bool IsFile(const std::wstring & file);
bool CreateDir(const wchar_t * dir, int priv); bool CreateDir(const wchar_t * dir, int priv, int group = -1);
bool CreateDir(const std::wstring & dir, int priv); bool CreateDir(const std::wstring & dir, int priv, int group = -1);
// creating directories (dirs) under base_dir (base_dir must exist) // creating directories (dirs) under base_dir (base_dir must exist)
// if skip_last == true then last part from dir is treated as a file (the last directory is not created) // if skip_last == true then last part from dir is treated as a file (the last directory is not created)
bool CreateDirs(const wchar_t * base_dir, const wchar_t * dirs, int priv = 0755, bool skip_last = false); bool CreateDirs(const wchar_t * base_dir, const wchar_t * dirs, int priv = 0755, int group = -1, bool skip_last = false);
bool CreateDirs(const std::wstring & base_dir, const std::wstring & dirs, int priv = 0755, bool skip_last = false); bool CreateDirs(const std::wstring & base_dir, const std::wstring & dirs, int priv = 0755, int group = -1, bool skip_last = false);
int GetGroupId(const wchar_t * name);
int GetGroupId(const std::wstring & name);
bool SetPriv(const wchar_t * name, int priv, int group = -1);
bool SetPriv(const std::wstring & name, int priv, int group = -1);
bool CopyFile(FILE * in, FILE * out); bool CopyFile(FILE * in, FILE * out);
bool CopyFile(const wchar_t * src, const wchar_t * dst); bool CopyFile(const wchar_t * src, const wchar_t * dst);
bool CopyFile(const std::wstring & src, const std::wstring & dst); bool CopyFile(const std::wstring & src, const std::wstring & dst);
bool RemoveFile(const wchar_t * file); bool RemoveFile(const wchar_t * file);
bool RemoveFile(const std::wstring & file); bool RemoveFile(const std::wstring & file);
bool RenameFile(const wchar_t * from, const wchar_t * to); bool RenameFile(const wchar_t * from, const wchar_t * to);
bool RenameFile(const std::wstring & from, const std::wstring & to); bool RenameFile(const std::wstring & from, const std::wstring & to);
bool GetUTF8File(const char * file_path, std::wstring & content, bool clear_content = true);
bool GetUTF8File(const wchar_t * file_path, std::wstring & content, bool clear_content = true); bool GetUTF8File(const wchar_t * file_path, std::wstring & content, bool clear_content = true);
bool GetUTF8File(const std::string & file_path, std::wstring & content, bool clear_content = true);
bool GetUTF8File(const std::wstring & file_path, std::wstring & content, bool clear_content = true); bool GetUTF8File(const std::wstring & file_path, std::wstring & content, bool clear_content = true);
@@ -866,6 +874,19 @@ void UrlEncode(const std::wstring & in, std::wstring & out, bool clear_out = tru
/*
* decoding a URL
*
* return false is the url is too long (longer than WINIX_URL_MAX_SIZE)
* or it cannot be correctly converted from UTF8 to wide characters
*
*/
bool UrlDecode(const char * url, std::wstring & out, bool clear_out = true);
bool UrlDecode(const std::string & url, std::wstring & out, bool clear_out = true);
template<typename char_type, size_t stack_size, size_t heap_block_size> template<typename char_type, size_t stack_size, size_t heap_block_size>
void QEncodeAddChar(char_type c, PT::TextStreamBase<char_type, stack_size, heap_block_size> & out) void QEncodeAddChar(char_type c, PT::TextStreamBase<char_type, stack_size, heap_block_size> & out)
@@ -1045,6 +1066,18 @@ void JSONescape(Stream & out, const StringType & str)
} }
/*
* converting from a wide string to an UTF-8 string
* and puts a log if the conversion fails
*
* it uses PT::WideToUTF8()
*/
bool WideToUTF8(const wchar_t * wide_string, char * utf8, size_t utf8_size);
bool WideToUTF8(const std::wstring & wide_string, char * utf8, size_t utf8_size);
} // namespace Winix } // namespace Winix
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa * Copyright (c) 2009-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "mount.h" #include "mount.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa * Copyright (c) 2009-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "mountparser.h" #include "mountparser.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_mountparser #ifndef headerfile_winix_core_mountparser
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa * Copyright (c) 2009-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "mounts.h" #include "mounts.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2009-2014, Tomasz Sowa * Copyright (c) 2009-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
+37 -17
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <dlfcn.h> #include <dlfcn.h>
@@ -161,17 +186,18 @@ void Plugin::LoadPlugins(const std::wstring & plugins_dir, const std::vector<std
} }
void Plugin::LoadPlugin(const std::string & filename)
{
LoadPlugin(filename.c_str());
}
// we don't have to use Lock() here because plusings are read // we don't have to use Lock() here because plugins are read
// before threads are started // before threads are started
void * Plugin::LoadInitFun(const char * filename, Fun1 & fun_init) void * Plugin::LoadInitFun(const wchar_t * filename, Fun1 & fun_init)
{ {
void * p = dlopen(filename, RTLD_NOW | RTLD_LOCAL); char file[WINIX_OS_PATH_SIZE];
if( !WideToUTF8(filename, file, WINIX_OS_PATH_SIZE) )
return 0;
void * p = dlopen(file, RTLD_NOW | RTLD_LOCAL);
if( !p ) if( !p )
{ {
@@ -200,7 +226,7 @@ return p;
void Plugin::LoadPlugin(const char * filename) void Plugin::LoadPlugin(const wchar_t * filename)
{ {
Fun1 fun_init; Fun1 fun_init;
void * plugin_handle; void * plugin_handle;
@@ -230,19 +256,13 @@ PluginInfo info;
} }
void Plugin::LoadPlugin(const wchar_t * filename)
{
AssignString(filename, afilename);
LoadPlugin(afilename.c_str());
}
void Plugin::LoadPlugin(const std::wstring & filename) void Plugin::LoadPlugin(const std::wstring & filename)
{ {
LoadPlugin(filename.c_str()); LoadPlugin(filename.c_str());
} }
bool Plugin::HasPlugin(const wchar_t * name) bool Plugin::HasPlugin(const wchar_t * name)
{ {
if( *name == 0 ) if( *name == 0 )
+29 -7
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_plugin #ifndef headerfile_winix_core_plugin
@@ -41,7 +66,7 @@ namespace Winix
in the Init you can add your own functions by using plugin.Assign() method in the Init you can add your own functions by using plugin.Assign() method
and you can set the name of the plugin by setting info.p1 pointer and you can set the name of the plugin by setting info.p1 pointer
to a string buffer (const char *) to a string buffer (const wchar_t *)
(this buffer will not be copied so it should not be destroyed after Init finishes) (this buffer will not be copied so it should not be destroyed after Init finishes)
also in Init you can only use logger (log) info.config and info.db objects also in Init you can only use logger (log) info.config and info.db objects
(the rest winix objects are not initialized yet) (the rest winix objects are not initialized yet)
@@ -176,8 +201,6 @@ public:
void SetSynchro(Synchro * psynchro); void SetSynchro(Synchro * psynchro);
void SetSessionManager(SessionManager * psession_manager); void SetSessionManager(SessionManager * psession_manager);
void LoadPlugin(const char * filename);
void LoadPlugin(const std::string & filename);
void LoadPlugin(const wchar_t * filename); void LoadPlugin(const wchar_t * filename);
void LoadPlugin(const std::wstring & filename); void LoadPlugin(const std::wstring & filename);
@@ -231,14 +254,13 @@ private:
SessionManager * session_manager; SessionManager * session_manager;
std::wstring temp_path; // used when loading plugins std::wstring temp_path; // used when loading plugins
std::string afilename;
Plugins plugins; Plugins plugins;
typedef std::multimap<int, Slot> Slots; typedef std::multimap<int, Slot> Slots;
Slots slots; Slots slots;
void * LoadInitFun(const char * filename, Fun1 & fun_init); void * LoadInitFun(const wchar_t * filename, Fun1 & fun_init);
void Call(Session * ses, int message, Slots::iterator & slot, PluginInfo & info); void Call(Session * ses, int message, Slots::iterator & slot, PluginInfo & info);
bool SetPointers(PluginInfo & info); bool SetPointers(PluginInfo & info);
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "plugindata.h" #include "plugindata.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_plugindata #ifndef headerfile_winix_core_plugindata
+29 -4
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
@@ -243,8 +268,8 @@ namespace Winix
#define WINIX_BASE_URL_REDIRECT 31030 #define WINIX_BASE_URL_REDIRECT 31030
// raw POST parameters // raw POST parameters
// in p1 there is a pointer to std::string meaning a parameter's name // in p1 there is a pointer to std::wstring meaning a parameter's name
// in p2 there is a pointer to std::string value // in p2 there is a pointer to std::wstring value
// this is sent only from PostParser // this is sent only from PostParser
// PostMultiParser (multipart/form-data html forms) doesn't send this messsage // PostMultiParser (multipart/form-data html forms) doesn't send this messsage
// there is no a session set (session pointer is null) // there is no a session set (session pointer is null)
+30 -8
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <sys/types.h> #include <sys/types.h>
@@ -363,10 +388,7 @@ void PostMultiParser::ReadContent()
void PostMultiParser::ConvStr(const std::string & src, std::wstring & dst) void PostMultiParser::ConvStr(const std::string & src, std::wstring & dst)
{ {
if( config->utf8 ) PT::UTF8ToWide(src, dst);
PT::UTF8ToWide(src, dst);
else
AssignString(src, dst);
} }
@@ -459,7 +481,7 @@ void PostMultiParser::CheckBoundaryEnd()
void PostMultiParser::CreateTmpFile() void PostMultiParser::CreateTmpFile()
{ {
wchar_t buf[1024]; wchar_t buf[WINIX_OS_PATH_SIZE];
size_t buf_len = sizeof(buf)/sizeof(wchar_t); size_t buf_len = sizeof(buf)/sizeof(wchar_t);
if( config->upload_dir.empty() ) if( config->upload_dir.empty() )
@@ -476,7 +498,7 @@ size_t buf_len = sizeof(buf)/sizeof(wchar_t);
PT::WideToUTF8(tmp_filename, atmp_filename); PT::WideToUTF8(tmp_filename, atmp_filename);
tmp_file.open(atmp_filename.c_str(), std::ios_base::binary | std::ios_base::out); tmp_file.open(atmp_filename.c_str(), std::ios_base::binary | std::ios_base::out);
// !! dodac ustawienie chmod config.upload_files_chmod dla tymczasowego pliku // !! IMPROVE ME dodac ustawienie chmod config.upload_files_chmod dla tymczasowego pliku
if( !tmp_file ) if( !tmp_file )
{ {
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_postmultiparser #ifndef headerfile_winix_core_postmultiparser
+40 -36
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_postparser #ifndef headerfile_winix_core_postparser
@@ -17,7 +42,6 @@
#include "misc.h" #include "misc.h"
#include "utf8/utf8.h" #include "utf8/utf8.h"
#include "log.h" #include "log.h"
#include "config.h"
#include "plugin.h" #include "plugin.h"
@@ -28,18 +52,14 @@ namespace Winix
class PostParser : public HttpSimpleParser class PostParser : public HttpSimpleParser
{ {
FCGX_Stream * in; FCGX_Stream * in;
PostTab * post_tab; PostTab * post_tab;
std::wstring temp_name, temp_value;
bool input_as_utf8;
size_t log_value_size; size_t log_value_size;
int var_index; int var_index;
bool has_winix_post_params_msg; bool has_winix_post_params_msg;
bool has_winix_raw_post_msg; bool has_winix_raw_post_msg;
std::string raw_post; std::string raw_post;
protected: protected:
@@ -54,20 +74,20 @@ protected:
} }
void CreateLog(bool param_added) void CreateLog(bool param_added, const std::wstring & name, const std::wstring & value)
{ {
log << log2 << "Method POST, name: \"" << temp_name << "\""; log << log2 << "Method POST, name: \"" << name << "\"";
if( log_value_size > 0 && !IsSubStringNoCase(L"pass", temp_name.c_str()) ) if( log_value_size > 0 && !IsSubStringNoCase(L"pass", name.c_str()) )
{ {
log << ", value: "; log << ", value: ";
if( temp_value.size() > log_value_size ) if( value.size() > log_value_size )
log << "(first " << log_value_size << " characters) "; log << "(first " << log_value_size << " characters) ";
log << "\""; log << "\"";
log.LogString(temp_value, log_value_size); log.LogString(value, log_value_size);
log << "\" (size: " << temp_value.size() << ")"; log << "\" (size: " << value.size() << ")";
} }
if( param_added == false ) if( param_added == false )
@@ -77,16 +97,8 @@ protected:
} }
void ConvStr(const std::string & src, std::wstring & dst)
{
if( input_as_utf8 )
PT::UTF8ToWide(src, dst);
else
AssignString(src, dst);
}
virtual void Parameter(std::wstring & name, std::wstring & value)
virtual void Parameter(std::string & name, std::string & value)
{ {
bool added; bool added;
std::pair<PostTab::iterator, bool> res; std::pair<PostTab::iterator, bool> res;
@@ -94,22 +106,19 @@ protected:
if( has_winix_post_params_msg ) if( has_winix_post_params_msg )
plugin.Call(0, WINIX_POST_PARAMS, &name, &value); plugin.Call(0, WINIX_POST_PARAMS, &name, &value);
ConvStr(name, temp_name); res = post_tab->insert( std::make_pair(name, value) );
ConvStr(value, temp_value);
res = post_tab->insert( std::make_pair(temp_name, temp_value) );
added = res.second; added = res.second;
if( !added ) if( !added )
{ {
temp_name += L"_inc"; name += L"_inc";
temp_name += Toa(var_index); name += Toa(var_index);
res = post_tab->insert( std::make_pair(temp_name, temp_value) ); res = post_tab->insert( std::make_pair(name, value) );
added = res.second; added = res.second;
var_index += 1; var_index += 1;
} }
CreateLog(added); CreateLog(added, name, value);
} }
@@ -117,13 +126,8 @@ public:
PostParser() PostParser()
{ {
input_as_utf8 = false;
log_value_size = 0; log_value_size = 0;
} HttpSimpleParser::getchar_returns_utf8_chars = true;
void UTF8(bool utf)
{
input_as_utf8 = utf;
} }
void LogValueSize(size_t s) void LogValueSize(size_t s)
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <cstdlib> #include <cstdlib>
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_rebus #ifndef headerfile_winix_core_rebus
+38 -13
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "request.h" #include "request.h"
@@ -21,7 +46,7 @@ namespace Winix
Request::Request() : char_empty(0) Request::Request()
{ {
id = 0; id = 0;
config = 0; config = 0;
@@ -77,16 +102,16 @@ void Request::Clear()
page_generated = false; page_generated = false;
env_request_method = &char_empty; env_request_method.clear();
env_request_uri = &char_empty; env_request_uri.clear();
env_http_cookie = &char_empty; env_http_cookie.clear();
env_remote_addr = &char_empty; env_remote_addr.clear();
env_http_host = &char_empty; env_http_host.clear();
env_http_user_agent = &char_empty; env_http_user_agent.clear();
env_fcgi_role = &char_empty; env_http_accept_encoding.clear();
env_content_type = &char_empty; env_fcgi_role.clear();
env_http_accept_encoding = &char_empty; env_content_type.clear();
env_https = &char_empty; env_https.clear();
item_tab.clear(); item_tab.clear();
item.Clear(); item.Clear();
+38 -19
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_request #ifndef headerfile_winix_core_request
@@ -98,19 +123,16 @@ struct Request
// environment variables // environment variables
// they are not null -- when the server doesn't have such a variable std::wstring env_request_method;
// it will be pointing into 'char_empty' which is default '\0' std::wstring env_request_uri;
// !! IMPROVE ME change it to std::wstring, or may PT::Space too? std::wstring env_http_cookie;
const char * env_request_method; std::wstring env_remote_addr;
const char * env_request_uri; std::wstring env_http_host;
const char * env_http_cookie; std::wstring env_http_user_agent;
const char * env_remote_addr; std::wstring env_http_accept_encoding;
const char * env_http_host; std::wstring env_fcgi_role;
const char * env_http_user_agent; std::wstring env_content_type;
const char * env_http_accept_encoding; std::wstring env_https;
const char * env_fcgi_role;
const char * env_content_type;
const char * env_https;
// current IP address of the remote host (read from REMOTE_ADDR environment variable) // current IP address of the remote host (read from REMOTE_ADDR environment variable)
// (at the moment only IPv4 are supported) // (at the moment only IPv4 are supported)
@@ -352,10 +374,6 @@ private:
Config * config; Config * config;
// contains '\0'
// used to set env_* pointers to the empty value
const char char_empty;
// used in ParamValue() and PostVar() when there is no such a param // used in ParamValue() and PostVar() when there is no such a param
const std::wstring str_empty; const std::wstring str_empty;
@@ -365,6 +383,7 @@ private:
template<typename NameType, typename ValueType> template<typename NameType, typename ValueType>
std::wstring & Request::AddCookie(const NameType & name, const ValueType & value, PT::Date * expires) std::wstring & Request::AddCookie(const NameType & name, const ValueType & value, PT::Date * expires)
{ {
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_requesttypes #ifndef headerfile_winix_core_requesttypes
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <sys/types.h> #include <sys/types.h>
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_run #ifndef headerfile_winix_core_run
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "session.h" #include "session.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_session #ifndef headerfile_winix_core_session
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "sessioncontainer.h" #include "sessioncontainer.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_sessioncontainer #ifndef headerfile_winix_core_sessioncontainer
+34 -4
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <sys/stat.h> #include <sys/stat.h>
@@ -375,10 +400,15 @@ SessionContainer::Iterator i;
void SessionManager::SaveSessions() void SessionManager::SaveSessions()
{ {
char file_path[WINIX_OS_PATH_SIZE];
if( config->session_file.empty() ) if( config->session_file.empty() )
return; return;
std::ofstream file(config->session_file.c_str()); if( !WideToUTF8(config->session_file, file_path, WINIX_OS_PATH_SIZE) )
return;
std::ofstream file(file_path);
if( !file ) if( !file )
{ {
@@ -403,7 +433,7 @@ void SessionManager::SaveSessions()
} }
file.close(); file.close();
chmod(config->session_file.c_str(), 0600); chmod(file_path, 0600);
log << log2 << "SM: saved " << len << " session(s)" << logend; log << log2 << "SM: saved " << len << " session(s)" << logend;
} }
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_sessionmanager #ifndef headerfile_winix_core_sessionmanager
+36 -5
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "sessionparser.h" #include "sessionparser.h"
@@ -17,7 +42,7 @@ namespace Winix
bool SessionParser::Parse(const std::string & path, SessionContainer & container) bool SessionParser::Parse(const std::wstring & path, SessionContainer & container)
{ {
return Parse(path.c_str(), container); return Parse(path.c_str(), container);
} }
@@ -29,10 +54,16 @@ void SessionParser::SetUsers(Users * pusers)
} }
bool SessionParser::Parse(const char * path, SessionContainer & container) bool SessionParser::Parse(const wchar_t * path, SessionContainer & container)
{ {
char file_path[WINIX_OS_PATH_SIZE];
container.Clear(); container.Clear();
file.open(path, std::ios_base::in | std::ios_base::binary);
if( !WideToUTF8(path, file_path, WINIX_OS_PATH_SIZE) )
return false;
file.open(file_path, std::ios_base::in | std::ios_base::binary);
if( !file ) if( !file )
{ {
+29 -4
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_sessionparser #ifndef headerfile_winix_core_sessionparser
@@ -26,8 +51,8 @@ class SessionParser
{ {
public: public:
bool Parse(const char * path, SessionContainer & container); bool Parse(const wchar_t * path, SessionContainer & container);
bool Parse(const std::string & path, SessionContainer & container); bool Parse(const std::wstring & path, SessionContainer & container);
void SetUsers(Users * pusers); void SetUsers(Users * pusers);
private: private:
+29 -3
View File
@@ -1,13 +1,39 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "slog.h" #include "slog.h"
#include "utf8/utf8.h"
namespace Winix namespace Winix
@@ -163,7 +189,7 @@ return *this;
SLog & SLog::TranslateText(const char * str) SLog & SLog::TranslateText(const char * str)
{ {
AssignString(str, key_temp); PT::UTF8ToWide(str, key_temp);
return TranslateText(key_temp.c_str()); return TranslateText(key_temp.c_str());
} }
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_slog #ifndef headerfile_winix_core_slog
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <errno.h> #include <errno.h>
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_synchro #ifndef headerfile_winix_core_synchro
+29 -4
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "system.h" #include "system.h"
@@ -852,7 +877,7 @@ return res;
// making a global file path (in the unix file system) // making a global file path (in the unix file system)
// you should call CreateNewFile before // you should call CreateNewFile before
bool System::MakeFilePath(const Item & item, std::wstring & path, bool thumb, bool create_dir, int chmod) bool System::MakeFilePath(const Item & item, std::wstring & path, bool thumb, bool create_dir, int chmod, int group)
{ {
path.clear(); path.clear();
@@ -882,7 +907,7 @@ bool System::MakeFilePath(const Item & item, std::wstring & path, bool thumb, bo
path += L"/normal"; path += L"/normal";
if( create_dir && !CreateDirs(path, item.file_path, chmod, true) ) if( create_dir && !CreateDirs(path, item.file_path, chmod, group, true) )
return false; return false;
path += '/'; path += '/';
+28 -3
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_system #ifndef headerfile_winix_core_system
@@ -139,7 +164,7 @@ public:
// creating item.file_path and item.file_fs (the mountpoint where the item is located) // creating item.file_path and item.file_fs (the mountpoint where the item is located)
bool CreateNewFile(Item & item); bool CreateNewFile(Item & item);
bool MakeFilePath(const Item & item, std::wstring & path, bool thumb = false, bool create_dir = false, int chmod = 0755); bool MakeFilePath(const Item & item, std::wstring & path, bool thumb = false, bool create_dir = false, int chmod = 0755, int group = -1);
bool MakePath(const Item & item, std::wstring & path, bool clear_path = true); bool MakePath(const Item & item, std::wstring & path, bool clear_path = true);
+198 -21
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_textstream #ifndef headerfile_winix_core_textstream
@@ -16,6 +41,7 @@
#include "space/space.h" #include "space/space.h"
#include "date/date.h" #include "date/date.h"
#include "textstream/textstream.h" #include "textstream/textstream.h"
#include "utf8/utf8.h"
namespace Winix namespace Winix
@@ -29,7 +55,17 @@ namespace Winix
similar to std::ostringstream similar to std::ostringstream
StringType can be either std::string or std::wstring StringType can be either std::string or std::wstring
this class doesn't use UTF-8 in any kind
this class uses UTF-8 <-> wide characters conversions:
if StringType is std::string:
operator<<(const char*) only copies the input string
operator<<(const wchar_t*) converts from wide characters to UTF-8
(similary for an operator with std::string and std::wstring)
if StringType is std::wstring:
operator<<(const char*) converts from UTF-8 to wide characters
operator<<(const wchar_t*) only copies the input string
(similary for an operator with std::string and std::wstring)
*/ */
template<class StringType> template<class StringType>
class TextStream class TextStream
@@ -74,16 +110,35 @@ public:
template<typename arg_char_type, size_t arg_stack_size, size_t arg_heap_block_size> template<typename arg_char_type, size_t arg_stack_size, size_t arg_heap_block_size>
TextStream & operator<<(const PT::TextStreamBase<arg_char_type, arg_stack_size, arg_heap_block_size> & arg); TextStream & operator<<(const PT::TextStreamBase<arg_char_type, arg_stack_size, arg_heap_block_size> & arg);
TextStream & Write(const char * buf, size_t len); TextStream & Write(const char * buf, size_t len);
TextStream & Write(const wchar_t * buf, size_t len); TextStream & Write(const wchar_t * buf, size_t len);
TextStream & write(const char * buf, size_t len); // for compatibility with standard library (Ezc uses it) TextStream & write(const char * buf, size_t len); // for compatibility with standard library (Ezc uses it)
TextStream & write(const wchar_t * buf, size_t len); TextStream & write(const wchar_t * buf, size_t len);
protected: protected:
StringType buffer; StringType buffer;
std::wstring space_str; // for using with spaces
void Convert(wchar_t c, std::string & dst);
void Convert(wchar_t c, std::wstring & dst);
void Convert(const char * src, size_t len, std::wstring & dst);
void Convert(const char * src, std::wstring & dst);
void Convert(const std::string & src, std::wstring & dst);
void Convert(const wchar_t * src, size_t len, std::string & dst);
void Convert(const wchar_t * src, std::string & dst);
void Convert(const std::wstring & src, std::string & dst);
void Convert(const char * src, size_t len, std::string & dst);
void Convert(const char * src, std::string & dst);
void Convert(const std::string & src, std::string & dst);
void Convert(const wchar_t * src, size_t len, std::wstring & dst);
void Convert(const wchar_t * src, std::wstring & dst);
void Convert(const std::wstring & src, std::wstring & dst);
}; };
@@ -153,7 +208,7 @@ typename TextStream<StringType>::CharType TextStream<StringType>::operator[](siz
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(const char * str) TextStream<StringType> & TextStream<StringType>::operator<<(const char * str)
{ {
AssignString(str, buffer, false); Convert(str, buffer);
return *this; return *this;
} }
@@ -162,7 +217,7 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(const std::string * str) TextStream<StringType> & TextStream<StringType>::operator<<(const std::string * str)
{ {
AssignString(*str, buffer, false); Convert(*str, buffer);
return *this; return *this;
} }
@@ -171,7 +226,7 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(const std::string & str) TextStream<StringType> & TextStream<StringType>::operator<<(const std::string & str)
{ {
AssignString(str, buffer, false); Convert(str, buffer);
return *this; return *this;
} }
@@ -181,7 +236,7 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(const wchar_t * str) TextStream<StringType> & TextStream<StringType>::operator<<(const wchar_t * str)
{ {
AssignString(str, buffer, false); Convert(str, buffer);
return *this; return *this;
} }
@@ -190,7 +245,7 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(const std::wstring * str) TextStream<StringType> & TextStream<StringType>::operator<<(const std::wstring * str)
{ {
AssignString(*str, buffer, false); Convert(*str, buffer);
return *this; return *this;
} }
@@ -199,7 +254,7 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(const std::wstring & str) TextStream<StringType> & TextStream<StringType>::operator<<(const std::wstring & str)
{ {
AssignString(str, buffer, false); Convert(str, buffer);
return *this; return *this;
} }
@@ -209,6 +264,10 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(char v) TextStream<StringType> & TextStream<StringType>::operator<<(char v)
{ {
/*
* there is no any possibility to treat 'v' as UTF-8 character if we have got
* only one character so we only copy it
*/
buffer += v; buffer += v;
return *this; return *this;
@@ -218,7 +277,7 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::operator<<(wchar_t v) TextStream<StringType> & TextStream<StringType>::operator<<(wchar_t v)
{ {
buffer += static_cast<CharType>(v); Convert(v, buffer);
return *this; return *this;
} }
@@ -231,7 +290,7 @@ wchar_t buf[50];
size_t len = sizeof(buf) / sizeof(wchar_t); size_t len = sizeof(buf) / sizeof(wchar_t);
Toa(v, buf, len); Toa(v, buf, len);
AssignString(buf, buffer, false); Convert(buf, buffer);
return *this; return *this;
} }
@@ -244,7 +303,7 @@ wchar_t buf[50];
size_t len = sizeof(buf) / sizeof(wchar_t); size_t len = sizeof(buf) / sizeof(wchar_t);
Toa(v, buf, len); Toa(v, buf, len);
AssignString(buf, buffer, false); Convert(buf, buffer);
return *this; return *this;
} }
@@ -257,7 +316,7 @@ wchar_t buf[50];
size_t len = sizeof(buf) / sizeof(wchar_t); size_t len = sizeof(buf) / sizeof(wchar_t);
Toa(v, buf, len); Toa(v, buf, len);
AssignString(buf, buffer, false); Convert(buf, buffer);
return *this; return *this;
} }
@@ -270,7 +329,7 @@ wchar_t buf[50];
size_t len = sizeof(buf) / sizeof(wchar_t); size_t len = sizeof(buf) / sizeof(wchar_t);
Toa(v, buf, len); Toa(v, buf, len);
AssignString(buf, buffer, false); Convert(buf, buffer);
return *this; return *this;
} }
@@ -282,7 +341,7 @@ TextStream<StringType> & TextStream<StringType>::operator<<(double v)
char buf[50]; char buf[50];
sprintf(buf, "%f", v); sprintf(buf, "%f", v);
AssignString(buf, buffer, false); Convert(buf, buffer);
return *this; return *this;
} }
@@ -298,7 +357,7 @@ size_t len = sizeof(buf) / sizeof(wchar_t);
buf[1] = 'x'; buf[1] = 'x';
Toa(reinterpret_cast<unsigned long>(v), buf+2, len-2, 16); Toa(reinterpret_cast<unsigned long>(v), buf+2, len-2, 16);
AssignString(buf, buffer, false); Convert(buf, buffer);
return *this; return *this;
} }
@@ -307,7 +366,7 @@ return *this;
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::Write(const char * buf, size_t len) TextStream<StringType> & TextStream<StringType>::Write(const char * buf, size_t len)
{ {
AssignString(buf, len, buffer, false); Convert(buf, len, buffer);
return *this; return *this;
} }
@@ -323,7 +382,7 @@ TextStream<StringType> & TextStream<StringType>::write(const char * buf, size_t
template<class StringType> template<class StringType>
TextStream<StringType> & TextStream<StringType>::Write(const wchar_t * buf, size_t len) TextStream<StringType> & TextStream<StringType>::Write(const wchar_t * buf, size_t len)
{ {
AssignString(buf, len, buffer, false); Convert(buf, len, buffer);
return *this; return *this;
} }
@@ -371,6 +430,124 @@ return *this;
template<class StringType>
void TextStream<StringType>::Convert(wchar_t c, std::string & dst)
{
PT::IntToUTF8((int)c, dst, false);
}
template<class StringType>
void TextStream<StringType>::Convert(wchar_t c, std::wstring & dst)
{
dst += c;
}
template<class StringType>
void TextStream<StringType>::Convert(const char * src, size_t len, std::wstring & dst)
{
PT::UTF8ToWide(src, len, dst, false);
}
template<class StringType>
void TextStream<StringType>::Convert(const char * src, std::wstring & dst)
{
PT::UTF8ToWide(src, dst, false);
}
template<class StringType>
void TextStream<StringType>::Convert(const std::string & src, std::wstring & dst)
{
PT::UTF8ToWide(src, dst, false);
}
template<class StringType>
void TextStream<StringType>::Convert(const wchar_t * src, size_t len, std::string & dst)
{
PT::WideToUTF8(src, len, dst, false);
}
template<class StringType>
void TextStream<StringType>::Convert(const wchar_t * src, std::string & dst)
{
PT::WideToUTF8(src, dst, false);
}
template<class StringType>
void TextStream<StringType>::Convert(const std::wstring & src, std::string & dst)
{
PT::WideToUTF8(src, dst, false);
}
template<class StringType>
void TextStream<StringType>::Convert(const char * src, size_t len, std::string & dst)
{
// we suppose that append is smart enough and we don't have to use reserve()
dst.append(src, len);
}
template<class StringType>
void TextStream<StringType>::Convert(const char * src, std::string & dst)
{
size_t len;
for(len=0 ; src[len] ; ++len){}
Convert(src, len, dst);
}
template<class StringType>
void TextStream<StringType>::Convert(const std::string & src, std::string & dst)
{
dst.append(src);
}
template<class StringType>
void TextStream<StringType>::Convert(const wchar_t * src, size_t len, std::wstring & dst)
{
// we suppose that append is smart enough and we don't have to use reserve()
dst.append(src, len);
}
template<class StringType>
void TextStream<StringType>::Convert(const wchar_t * src, std::wstring & dst)
{
size_t len;
for(len=0 ; src[len] ; ++len){}
Convert(src, len, dst);
}
template<class StringType>
void TextStream<StringType>::Convert(const std::wstring & src, std::wstring & dst)
{
dst.append(src);
}
} // namespace Winix } // namespace Winix
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <signal.h> #include <signal.h>
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_threadmanager #ifndef headerfile_winix_core_threadmanager
+27 -2
View File
@@ -1,9 +1,34 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
+27 -2
View File
@@ -1,9 +1,34 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
+27 -3
View File
@@ -1,9 +1,34 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
@@ -139,7 +164,6 @@ void TimeZones::ParseZones()
// just space by space (not implemented in Space at the moment) // just space by space (not implemented in Space at the moment)
bool TimeZones::ReadTimeZones(const wchar_t * path) bool TimeZones::ReadTimeZones(const wchar_t * path)
{ {
parser.UTF8(true);
parser.SetSpace(temp_space); parser.SetSpace(temp_space);
zone_tab.clear(); zone_tab.clear();
temp_space.Clear(); temp_space.Clear();
+27 -2
View File
@@ -1,9 +1,34 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_ugcontainer #ifndef headerfile_winix_core_ugcontainer
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2012-2014, Tomasz Sowa * Copyright (c) 2012-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include "user.h" #include "user.h"
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_user #ifndef headerfile_winix_core_user
+28 -3
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#include <arpa/inet.h> #include <arpa/inet.h>
@@ -230,7 +255,7 @@ bool Users::LoginUser(long user_id, bool remember_me, bool use_ses_log)
if( !cur->session->new_session ) if( !cur->session->new_session )
session_manager->ChangeSessionId(cur->session->id); session_manager->ChangeSessionId(cur->session->id);
last.UserLogin(user_id, cur->session->puser->name, inet_addr(cur->request->env_remote_addr), cur->session->id); last.UserLogin(user_id, cur->session->puser->name, cur->request->ip, cur->session->id);
how_many_logged += 1; how_many_logged += 1;
log << log2 << "Users: user " << cur->session->puser->name << " (id: " << user_id << ") logged" << logend; log << log2 << "Users: user " << cur->session->puser->name << " (id: " << user_id << ") logged" << logend;
+27 -2
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_users #ifndef headerfile_winix_core_users
+28 -3
View File
@@ -1,10 +1,35 @@
/* /*
* This file is a part of Winix * This file is a part of Winix
* and is not publicly distributed * and is distributed under the 2-Clause BSD licence.
* * Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2008-2014, Tomasz Sowa * Copyright (c) 2008-2014, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/ */
#ifndef headerfile_winix_core_version #ifndef headerfile_winix_core_version
@@ -17,7 +42,7 @@ namespace Winix
#define WINIX_VER_MAJOR 0 #define WINIX_VER_MAJOR 0
#define WINIX_VER_MINOR 6 #define WINIX_VER_MINOR 6
#define WINIX_VER_REVISION 1 #define WINIX_VER_REVISION 3
+81
View File
@@ -0,0 +1,81 @@
/*
* This file is a part of Winix
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2014, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef headerfile_winix_core_winix_const
#define headerfile_winix_core_winix_const
/*
* some constants used throughout winix
*/
/*
* a size of an UTF-8 buffer when converting a file system path from a wide string
* to UTF-8 string
*
* don't set it too long as it is used in local arrays: char[WINIX_OS_PATH_SIZE]
*/
#define WINIX_OS_PATH_SIZE 4096
/*
* a size of an UTF-8 buffer when converting a user's name from a wide string
* to UTF-8 string
* it can be applied to a user, group etc.
*
* don't set it too long as it is used in local arrays: char[WINIX_OS_USERNAME_SIZE]
*
*/
#define WINIX_OS_USERNAME_SIZE 128
/*
* maximum size of a URL
*
* URLs longer than this value will be rejected (permission denied)
* don't set it too long as it is used in local arrays: char[WINIX_URL_MAX_SIZE]
*/
#define WINIX_URL_MAX_SIZE 4096
#endif

Some files were not shown because too many files have changed in this diff Show More