we can create links (hard links, symbolic links) now

added winix functions: ln

winix function 'default' can be used without redirecting now

added new tickets types: TypeProgress, TypeString, TypeMultistring, TypeImages, TypeFiles
now tickets are combined with files
added winix functions: showtickets

fixed mountpoints:
when the default root mount was created its parameter table was empty
and it caused accessing to a non-existing objects

fixed logger:
modifiers (log1, log2, log3) were incorrectly treated
added modifier: log4 (debug info)

now we are moving threads to a new plugin 'thread'
created directory: plugins/thread
(not finished yet)




git-svn-id: svn://ttmath.org/publicrep/winix/trunk@704 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2011-01-05 21:24:11 +00:00
parent bb83aed20d
commit 8154c403d8
113 changed files with 5840 additions and 2972 deletions

View File

@@ -16,18 +16,18 @@ adduser.o: ../core/confparser.h ../templates/misc.h
adduser.o: ../templates/localefilter.h ../templates/locale.h
adduser.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
adduser.o: ../../ezc/src/pattern.h functions.h functionparser.h cat.h chmod.h
adduser.o: privchanger.h chown.h ckeditor.h cp.h createthread.h default.h
adduser.o: download.h emacs.h last.h login.h logout.h ls.h mkdir.h mv.h
adduser.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
adduser.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
adduser.o: uptime.h who.h vim.h ../core/htmlfilter.h
adduser.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
adduser.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
adduser.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
adduser.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
adduser.o: ../core/mountparser.h ../core/users.h ../core/groups.h
adduser.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
adduser.o: ../core/basethread.h ../core/synchro.h
adduser.o: privchanger.h chown.h ckeditor.h cp.h createthread.h
adduser.o: ../functions/functionbase.h default.h download.h emacs.h last.h
adduser.o: login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h reload.h
adduser.o: rm.h run.h specialdefault.h stat.h subject.h funthread.h
adduser.o: template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
adduser.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
adduser.o: ../templates/htmltextstream.h ../notify/notifythread.h
adduser.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
adduser.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
adduser.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
adduser.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
adduser.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
cat.o: cat.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
cat.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
cat.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -43,17 +43,17 @@ cat.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
cat.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
cat.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
cat.o: functions.h functionparser.h adduser.h chmod.h privchanger.h chown.h
cat.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h last.h
cat.o: login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
cat.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
cat.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
cat.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
cat.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
cat.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
cat.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
cat.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
cat.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
cat.o: ../core/synchro.h
cat.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
cat.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
cat.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
cat.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
cat.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
cat.o: ../templates/htmltextstream.h ../notify/notifythread.h
cat.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
cat.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
cat.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
cat.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
cat.o: ../core/basethread.h ../core/synchro.h
chmod.o: chmod.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
chmod.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
chmod.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -70,17 +70,17 @@ chmod.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
chmod.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
chmod.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
chmod.o: functionparser.h adduser.h cat.h chown.h privchanger.h ckeditor.h
chmod.o: cp.h createthread.h default.h download.h emacs.h last.h login.h
chmod.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
chmod.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
chmod.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
chmod.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
chmod.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
chmod.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
chmod.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
chmod.o: ../core/mountparser.h ../core/users.h ../core/groups.h
chmod.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
chmod.o: ../core/basethread.h ../core/synchro.h
chmod.o: cp.h createthread.h ../functions/functionbase.h default.h download.h
chmod.o: emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h
chmod.o: reload.h rm.h run.h specialdefault.h stat.h subject.h funthread.h
chmod.o: template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
chmod.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
chmod.o: ../templates/htmltextstream.h ../notify/notifythread.h
chmod.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
chmod.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
chmod.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
chmod.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
chmod.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
chown.o: chown.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
chown.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
chown.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -97,17 +97,17 @@ chown.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
chown.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
chown.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
chown.o: functionparser.h adduser.h cat.h chmod.h privchanger.h ckeditor.h
chown.o: cp.h createthread.h default.h download.h emacs.h last.h login.h
chown.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
chown.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
chown.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
chown.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
chown.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
chown.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
chown.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
chown.o: ../core/mountparser.h ../core/users.h ../core/groups.h
chown.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
chown.o: ../core/basethread.h ../core/synchro.h
chown.o: cp.h createthread.h ../functions/functionbase.h default.h download.h
chown.o: emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h
chown.o: reload.h rm.h run.h specialdefault.h stat.h subject.h funthread.h
chown.o: template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
chown.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
chown.o: ../templates/htmltextstream.h ../notify/notifythread.h
chown.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
chown.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
chown.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
chown.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
chown.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
ckeditor.o: ckeditor.h functionbase.h ../core/item.h ../db/db.h
ckeditor.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
ckeditor.o: ../core/textstream.h ../core/misc.h ../core/item.h
@@ -126,13 +126,13 @@ ckeditor.o: ../templates/localefilter.h ../templates/locale.h
ckeditor.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
ckeditor.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
ckeditor.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
ckeditor.o: cp.h createthread.h default.h download.h emacs.h last.h login.h
ckeditor.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
ckeditor.o: specialdefault.h stat.h subject.h funthread.h template.h
ckeditor.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
ckeditor.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
ckeditor.o: ../templates/htmltextstream.h ../notify/notifythread.h
ckeditor.o: ../core/basethread.h ../core/synchro.h
ckeditor.o: cp.h createthread.h ../functions/functionbase.h default.h
ckeditor.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
ckeditor.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
ckeditor.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
ckeditor.o: uptime.h who.h vim.h ../core/htmlfilter.h
ckeditor.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
ckeditor.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
ckeditor.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
ckeditor.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
ckeditor.o: ../core/mountparser.h ../core/users.h ../core/groups.h
@@ -153,49 +153,48 @@ cp.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
cp.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
cp.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
cp.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
cp.o: chown.h ckeditor.h createthread.h default.h download.h emacs.h last.h
cp.o: login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
cp.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
cp.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
cp.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
cp.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
cp.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
cp.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
cp.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
cp.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
cp.o: ../core/synchro.h ../core/misc.h
createthread.o: createthread.h functionbase.h ../core/item.h ../db/db.h
createthread.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
createthread.o: ../core/textstream.h ../core/misc.h ../core/item.h
createthread.o: ../core/error.h ../core/log.h ../core/textstream.h
createthread.o: ../db/dbitemquery.h ../db/dbitemcolumns.h ../core/user.h
createthread.o: ../core/group.h ../core/thread.h ../core/dircontainer.h
createthread.o: ../core/ugcontainer.h ../core/request.h
createthread.o: ../core/requesttypes.h ../core/session.h ../core/error.h
createthread.o: ../core/user.h ../core/plugindata.h ../core/rebus.h
createthread.o: ../core/config.h ../core/confparser.h ../core/htmlfilter.h
createthread.o: ../templates/htmltextstream.h ../core/config.h
createthread.o: ../core/system.h ../core/dirs.h ../core/dircontainer.h
createthread.o: ../core/request.h ../notify/notify.h ../notify/notifypool.h
createthread.o: ../templates/locale.h ../core/confparser.h
createthread.o: ../templates/misc.h ../templates/localefilter.h
createthread.o: ../templates/locale.h ../../ezc/src/ezc.h
createthread.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h
createthread.o: ../../ezc/src/pattern.h functions.h functionparser.h
createthread.o: adduser.h cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h
createthread.o: default.h download.h emacs.h last.h login.h logout.h ls.h
createthread.o: mkdir.h mv.h node.h priv.h reload.h rm.h run.h
createthread.o: specialdefault.h stat.h subject.h funthread.h template.h
createthread.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
createthread.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
createthread.o: ../templates/htmltextstream.h ../notify/notifythread.h
createthread.o: ../core/basethread.h ../core/synchro.h
createthread.o: ../notify/templatesnotify.h ../core/users.h
cp.o: chown.h ckeditor.h createthread.h ../functions/functionbase.h default.h
cp.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
cp.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
cp.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
cp.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
cp.o: ../templates/htmltextstream.h ../notify/notifythread.h
cp.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
cp.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
cp.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
cp.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
cp.o: ../core/basethread.h ../core/synchro.h ../core/misc.h
createthread.o: createthread.h ../functions/functionbase.h functions.h
createthread.o: functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
createthread.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
createthread.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
createthread.o: ../core/textstream.h ../db/dbitemquery.h
createthread.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h
createthread.o: ../core/thread.h ../core/dircontainer.h ../core/ugcontainer.h
createthread.o: ../core/request.h ../core/requesttypes.h ../core/session.h
createthread.o: ../core/error.h ../core/user.h ../core/plugindata.h
createthread.o: ../core/rebus.h ../core/config.h ../core/confparser.h
createthread.o: ../core/htmlfilter.h ../templates/htmltextstream.h
createthread.o: ../core/config.h ../core/system.h ../core/dirs.h
createthread.o: ../core/dircontainer.h ../core/request.h ../notify/notify.h
createthread.o: ../notify/notifypool.h ../templates/locale.h
createthread.o: ../core/confparser.h ../templates/misc.h
createthread.o: ../templates/localefilter.h ../templates/locale.h
createthread.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
createthread.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
createthread.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
createthread.o: ../notify/notifythread.h ../core/basethread.h
createthread.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h
createthread.o: ../core/ugcontainer.h ../core/lastcontainer.h
createthread.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
createthread.o: ../core/users.h ../core/groups.h ../core/group.h
createthread.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
createthread.o: ../core/synchro.h
createthread.o: ../core/synchro.h functionparser.h adduser.h cat.h chmod.h
createthread.o: privchanger.h chown.h ckeditor.h cp.h default.h download.h
createthread.o: emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h node.h
createthread.o: priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
createthread.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h
createthread.o: who.h vim.h ../core/htmlfilter.h
default.o: default.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
default.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
default.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -213,10 +212,10 @@ default.o: ../templates/localefilter.h ../templates/locale.h
default.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
default.o: ../../ezc/src/pattern.h functions.h functionparser.h adduser.h
default.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
default.o: download.h emacs.h last.h login.h logout.h ls.h mkdir.h mv.h
default.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
default.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
default.o: uptime.h who.h vim.h ../core/htmlfilter.h
default.o: ../functions/functionbase.h download.h emacs.h last.h login.h
default.o: logout.h ln.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
default.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
default.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
default.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
default.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
default.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
@@ -242,13 +241,13 @@ download.o: ../templates/localefilter.h ../templates/locale.h
download.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
download.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
download.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
download.o: ckeditor.h cp.h createthread.h default.h emacs.h last.h login.h
download.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
download.o: specialdefault.h stat.h subject.h funthread.h template.h
download.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
download.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
download.o: ../templates/htmltextstream.h ../notify/notifythread.h
download.o: ../core/basethread.h ../core/synchro.h
download.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h
download.o: default.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
download.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
download.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
download.o: uptime.h who.h vim.h ../core/htmlfilter.h
download.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
download.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
download.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
download.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
download.o: ../core/mountparser.h ../core/users.h ../core/groups.h
@@ -270,20 +269,20 @@ emacs.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
emacs.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
emacs.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
emacs.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
emacs.o: ckeditor.h cp.h createthread.h default.h download.h last.h login.h
emacs.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
emacs.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
emacs.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
emacs.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
emacs.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
emacs.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
emacs.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
emacs.o: ../core/mountparser.h ../core/users.h ../core/groups.h
emacs.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
emacs.o: ../core/basethread.h ../core/synchro.h ../templates/templates.h
emacs.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
emacs.o: ../core/httpsimpleparser.h ../core/log.h
emacs.o: ../templates/indexpatterns.h ../core/sessionmanager.h
emacs.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
emacs.o: download.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h node.h
emacs.o: priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
emacs.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
emacs.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
emacs.o: ../templates/htmltextstream.h ../notify/notifythread.h
emacs.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
emacs.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
emacs.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
emacs.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
emacs.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
emacs.o: ../templates/templates.h ../templates/patterncacher.h
emacs.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
emacs.o: ../core/log.h ../templates/indexpatterns.h ../core/sessionmanager.h
emacs.o: ../core/sessioncontainer.h ../core/system.h
functionbase.o: functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
functionbase.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
@@ -303,9 +302,10 @@ functionbase.o: ../templates/localefilter.h ../templates/locale.h
functionbase.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
functionbase.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
functionbase.o: functionparser.h adduser.h cat.h chmod.h privchanger.h
functionbase.o: chown.h ckeditor.h cp.h createthread.h default.h download.h
functionbase.o: emacs.h last.h login.h logout.h ls.h mkdir.h mv.h node.h
functionbase.o: priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
functionbase.o: chown.h ckeditor.h cp.h createthread.h
functionbase.o: ../functions/functionbase.h default.h download.h emacs.h
functionbase.o: last.h login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h
functionbase.o: reload.h rm.h run.h specialdefault.h stat.h subject.h
functionbase.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h
functionbase.o: who.h vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
functionbase.o: ../templates/htmltextstream.h ../notify/notifythread.h
@@ -335,8 +335,9 @@ functionparser.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
functionparser.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
functionparser.o: functions.h functionbase.h ../core/config.h
functionparser.o: ../core/synchro.h adduser.h cat.h chmod.h privchanger.h
functionparser.o: chown.h ckeditor.h cp.h createthread.h default.h download.h
functionparser.o: emacs.h last.h login.h logout.h ls.h mkdir.h mv.h node.h
functionparser.o: chown.h ckeditor.h cp.h createthread.h
functionparser.o: ../functions/functionbase.h default.h download.h emacs.h
functionparser.o: last.h login.h logout.h ln.h ls.h mkdir.h mv.h node.h
functionparser.o: priv.h reload.h rm.h run.h specialdefault.h stat.h
functionparser.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
functionparser.o: uptime.h who.h vim.h ../core/htmlfilter.h
@@ -373,47 +374,20 @@ functions.o: ../core/mount.h ../core/mountparser.h ../core/users.h
functions.o: ../core/groups.h ../core/group.h ../core/loadavg.h
functions.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
functions.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
functions.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h
functions.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h
functions.o: rm.h run.h specialdefault.h stat.h subject.h funthread.h
functions.o: template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
functions.o: ../core/htmlfilter.h ../core/log.h ../core/misc.h
functions.o: ../core/plugin.h ../core/pluginmsg.h ../core/system.h
functions.o: ../core/sessionmanager.h ../core/sessioncontainer.h
functions.o: ../functions/functions.h ../templates/templates.h
functions.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
functions.o: ../core/httpsimpleparser.h ../core/log.h
functions.o: ../templates/indexpatterns.h ../core/sessionmanager.h
funthread.o: ../core/misc.h funthread.h functionbase.h ../core/item.h
funthread.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
funthread.o: ../core/textstream.h ../core/misc.h ../core/item.h
funthread.o: ../core/error.h ../core/log.h ../core/textstream.h
funthread.o: ../db/dbitemquery.h ../db/dbitemcolumns.h ../core/user.h
funthread.o: ../core/group.h ../core/thread.h ../core/dircontainer.h
funthread.o: ../core/ugcontainer.h ../core/request.h ../core/requesttypes.h
funthread.o: ../core/session.h ../core/error.h ../core/user.h
funthread.o: ../core/plugindata.h ../core/rebus.h ../core/config.h
funthread.o: ../core/confparser.h ../core/htmlfilter.h
funthread.o: ../templates/htmltextstream.h ../core/config.h ../core/system.h
funthread.o: ../core/dirs.h ../core/dircontainer.h ../core/request.h
funthread.o: ../notify/notify.h ../notify/notifypool.h ../templates/locale.h
funthread.o: ../core/confparser.h ../templates/misc.h
funthread.o: ../templates/localefilter.h ../templates/locale.h
funthread.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
funthread.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
funthread.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
funthread.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h
funthread.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h
funthread.o: rm.h run.h specialdefault.h stat.h subject.h template.h
funthread.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
funthread.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
funthread.o: ../templates/htmltextstream.h ../notify/notifythread.h
funthread.o: ../core/basethread.h ../core/synchro.h
funthread.o: ../notify/templatesnotify.h ../core/users.h
funthread.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h
funthread.o: ../core/mount.h ../core/mountparser.h ../core/users.h
funthread.o: ../core/groups.h ../core/group.h ../core/loadavg.h
funthread.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
functions.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h
functions.o: default.h download.h emacs.h last.h login.h logout.h ln.h ls.h
functions.o: mkdir.h mv.h node.h priv.h reload.h rm.h run.h specialdefault.h
functions.o: stat.h subject.h funthread.h template.h tinymce.h uname.h
functions.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h ../core/log.h
functions.o: ../core/misc.h ../core/plugin.h ../core/pluginmsg.h
functions.o: ../core/system.h ../core/sessionmanager.h
functions.o: ../core/sessioncontainer.h ../functions/functions.h
functions.o: ../templates/templates.h ../templates/patterncacher.h
functions.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
functions.o: ../core/log.h ../templates/indexpatterns.h
functions.o: ../core/sessionmanager.h
funthread.o: ../core/misc.h funthread.h ../functions/functionbase.h
funthread.o: ../core/thread.h
last.o: last.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
last.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
last.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -430,17 +404,44 @@ last.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
last.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
last.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
last.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
last.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h login.h
last.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
last.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
last.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
last.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
last.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
last.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
last.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
last.o: ../core/mountparser.h ../core/users.h ../core/groups.h
last.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
last.o: ../core/basethread.h ../core/synchro.h
last.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
last.o: download.h emacs.h login.h logout.h ln.h ls.h mkdir.h mv.h node.h
last.o: priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
last.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
last.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
last.o: ../templates/htmltextstream.h ../notify/notifythread.h
last.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
last.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
last.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
last.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
last.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
ln.o: ln.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
ln.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h ../core/misc.h
ln.o: ../core/item.h ../core/error.h ../core/log.h ../core/textstream.h
ln.o: ../db/dbitemquery.h ../db/dbitemcolumns.h ../core/user.h
ln.o: ../core/group.h ../core/thread.h ../core/dircontainer.h
ln.o: ../core/ugcontainer.h ../core/request.h ../core/requesttypes.h
ln.o: ../core/session.h ../core/error.h ../core/user.h ../core/plugindata.h
ln.o: ../core/rebus.h ../core/config.h ../core/confparser.h
ln.o: ../core/htmlfilter.h ../templates/htmltextstream.h ../core/config.h
ln.o: ../core/system.h ../core/dirs.h ../core/dircontainer.h
ln.o: ../core/request.h ../notify/notify.h ../notify/notifypool.h
ln.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
ln.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
ln.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
ln.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
ln.o: chown.h ckeditor.h cp.h createthread.h ../functions/functionbase.h
ln.o: default.h download.h emacs.h last.h login.h logout.h ls.h mkdir.h mv.h
ln.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
ln.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
ln.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
ln.o: ../templates/htmltextstream.h ../notify/notifythread.h
ln.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
ln.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
ln.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
ln.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
ln.o: ../core/basethread.h ../core/synchro.h ../core/misc.h
ln.o: ../functions/functions.h
login.o: login.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
login.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
login.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -457,17 +458,17 @@ login.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
login.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
login.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
login.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
login.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h last.h
login.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
login.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
login.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
login.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
login.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
login.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
login.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
login.o: ../core/mountparser.h ../core/users.h ../core/groups.h
login.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
login.o: ../core/basethread.h ../core/synchro.h
login.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
login.o: download.h emacs.h last.h logout.h ln.h ls.h mkdir.h mv.h node.h
login.o: priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
login.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
login.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
login.o: ../templates/htmltextstream.h ../notify/notifythread.h
login.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
login.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
login.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
login.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
login.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
logout.o: logout.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
logout.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
logout.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -485,16 +486,17 @@ logout.o: ../templates/localefilter.h ../templates/locale.h
logout.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
logout.o: ../../ezc/src/pattern.h functions.h functionparser.h adduser.h
logout.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
logout.o: default.h download.h emacs.h last.h login.h ls.h mkdir.h mv.h
logout.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
logout.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
logout.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
logout.o: ../templates/htmltextstream.h ../notify/notifythread.h
logout.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
logout.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
logout.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
logout.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
logout.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
logout.o: ../functions/functionbase.h default.h download.h emacs.h last.h
logout.o: login.h ln.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
logout.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
logout.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
logout.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
logout.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
logout.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
logout.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
logout.o: ../core/mountparser.h ../core/users.h ../core/groups.h
logout.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
logout.o: ../core/basethread.h ../core/synchro.h
ls.o: ls.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
ls.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h ../core/misc.h
ls.o: ../core/item.h ../core/error.h ../core/log.h ../core/textstream.h
@@ -510,17 +512,17 @@ ls.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
ls.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
ls.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
ls.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
ls.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
ls.o: last.h login.h logout.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
ls.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
ls.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
ls.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
ls.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
ls.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
ls.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
ls.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
ls.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
ls.o: ../core/synchro.h
ls.o: chown.h ckeditor.h cp.h createthread.h ../functions/functionbase.h
ls.o: default.h download.h emacs.h last.h login.h logout.h ln.h mkdir.h mv.h
ls.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
ls.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
ls.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
ls.o: ../templates/htmltextstream.h ../notify/notifythread.h
ls.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
ls.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
ls.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
ls.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
ls.o: ../core/basethread.h ../core/synchro.h
mkdir.o: mkdir.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
mkdir.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
mkdir.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -537,17 +539,17 @@ mkdir.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
mkdir.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
mkdir.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
mkdir.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
mkdir.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h last.h
mkdir.o: login.h logout.h ls.h mv.h node.h priv.h reload.h rm.h run.h
mkdir.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
mkdir.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
mkdir.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
mkdir.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
mkdir.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
mkdir.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
mkdir.o: ../core/mountparser.h ../core/users.h ../core/groups.h
mkdir.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
mkdir.o: ../core/basethread.h ../core/synchro.h
mkdir.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
mkdir.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mv.h node.h
mkdir.o: priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
mkdir.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
mkdir.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
mkdir.o: ../templates/htmltextstream.h ../notify/notifythread.h
mkdir.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
mkdir.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
mkdir.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
mkdir.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
mkdir.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
mv.o: mv.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
mv.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h ../core/misc.h
mv.o: ../core/item.h ../core/error.h ../core/log.h ../core/textstream.h
@@ -563,17 +565,17 @@ mv.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
mv.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
mv.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
mv.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
mv.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
mv.o: last.h login.h logout.h ls.h mkdir.h node.h priv.h reload.h rm.h run.h
mv.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
mv.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
mv.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
mv.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
mv.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
mv.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
mv.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
mv.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
mv.o: ../core/synchro.h
mv.o: chown.h ckeditor.h cp.h createthread.h ../functions/functionbase.h
mv.o: default.h download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h
mv.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
mv.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
mv.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
mv.o: ../templates/htmltextstream.h ../notify/notifythread.h
mv.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
mv.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
mv.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
mv.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
mv.o: ../core/basethread.h ../core/synchro.h
node.o: node.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
node.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
node.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -590,17 +592,17 @@ node.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
node.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
node.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
node.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
node.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h last.h
node.o: login.h logout.h ls.h mkdir.h mv.h priv.h reload.h rm.h run.h
node.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
node.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
node.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
node.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
node.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
node.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
node.o: ../core/mountparser.h ../core/users.h ../core/groups.h
node.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
node.o: ../core/basethread.h ../core/synchro.h
node.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
node.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
node.o: priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
node.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
node.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
node.o: ../templates/htmltextstream.h ../notify/notifythread.h
node.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
node.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
node.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
node.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
node.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
priv.o: priv.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
priv.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
priv.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -617,17 +619,17 @@ priv.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
priv.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
priv.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
priv.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
priv.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h last.h
priv.o: login.h logout.h ls.h mkdir.h mv.h node.h reload.h rm.h run.h
priv.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
priv.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
priv.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
priv.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
priv.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
priv.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
priv.o: ../core/mountparser.h ../core/users.h ../core/groups.h
priv.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
priv.o: ../core/basethread.h ../core/synchro.h
priv.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
priv.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
priv.o: node.h reload.h rm.h run.h specialdefault.h stat.h subject.h
priv.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
priv.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
priv.o: ../templates/htmltextstream.h ../notify/notifythread.h
priv.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
priv.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
priv.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
priv.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
priv.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
privchanger.o: privchanger.h ../core/request.h ../core/requesttypes.h
privchanger.o: ../core/session.h ../core/item.h ../core/error.h
privchanger.o: ../core/user.h ../core/plugindata.h ../core/rebus.h
@@ -647,14 +649,14 @@ privchanger.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
privchanger.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
privchanger.o: functionbase.h ../core/config.h ../core/synchro.h
privchanger.o: functionparser.h adduser.h cat.h chmod.h chown.h ckeditor.h
privchanger.o: cp.h createthread.h default.h download.h emacs.h last.h
privchanger.o: login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
privchanger.o: run.h specialdefault.h stat.h subject.h funthread.h template.h
privchanger.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
privchanger.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
privchanger.o: ../templates/htmltextstream.h ../notify/notifythread.h
privchanger.o: ../core/basethread.h ../core/synchro.h
privchanger.o: ../notify/templatesnotify.h ../core/users.h
privchanger.o: cp.h createthread.h ../functions/functionbase.h default.h
privchanger.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h
privchanger.o: mv.h node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
privchanger.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
privchanger.o: uptime.h who.h vim.h ../core/htmlfilter.h
privchanger.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
privchanger.o: ../notify/notifythread.h ../core/basethread.h
privchanger.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h
privchanger.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h
privchanger.o: ../core/mount.h ../core/mountparser.h ../core/users.h
privchanger.o: ../core/groups.h ../core/group.h ../core/loadavg.h
@@ -676,19 +678,20 @@ reload.o: ../templates/localefilter.h ../templates/locale.h
reload.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
reload.o: ../../ezc/src/pattern.h functions.h functionparser.h adduser.h
reload.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
reload.o: default.h download.h emacs.h last.h login.h logout.h ls.h mkdir.h
reload.o: mv.h node.h priv.h rm.h run.h specialdefault.h stat.h subject.h
reload.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
reload.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
reload.o: ../templates/htmltextstream.h ../notify/notifythread.h
reload.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
reload.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
reload.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
reload.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
reload.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
reload.o: ../templates/templates.h ../templates/patterncacher.h
reload.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
reload.o: ../core/log.h ../templates/indexpatterns.h ../core/sessionmanager.h
reload.o: ../functions/functionbase.h default.h download.h emacs.h last.h
reload.o: login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h rm.h run.h
reload.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
reload.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
reload.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
reload.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
reload.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
reload.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
reload.o: ../core/mountparser.h ../core/users.h ../core/groups.h
reload.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
reload.o: ../core/basethread.h ../core/synchro.h ../templates/templates.h
reload.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
reload.o: ../core/httpsimpleparser.h ../core/log.h
reload.o: ../templates/indexpatterns.h ../core/sessionmanager.h
reload.o: ../core/sessioncontainer.h ../core/system.h
rm.o: rm.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
rm.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h ../core/misc.h
@@ -705,22 +708,23 @@ rm.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
rm.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
rm.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
rm.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
rm.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
rm.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h run.h
rm.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
rm.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
rm.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
rm.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
rm.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
rm.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
rm.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
rm.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
rm.o: ../core/synchro.h ../core/plugin.h ../core/pluginmsg.h ../core/system.h
rm.o: ../core/sessionmanager.h ../core/sessioncontainer.h
rm.o: ../functions/functions.h ../templates/templates.h
rm.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
rm.o: ../core/httpsimpleparser.h ../core/log.h ../templates/indexpatterns.h
rm.o: ../core/sessionmanager.h ../core/misc.h
rm.o: chown.h ckeditor.h cp.h createthread.h ../functions/functionbase.h
rm.o: default.h download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h
rm.o: mv.h node.h priv.h reload.h run.h specialdefault.h stat.h subject.h
rm.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
rm.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
rm.o: ../templates/htmltextstream.h ../notify/notifythread.h
rm.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
rm.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
rm.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
rm.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
rm.o: ../core/basethread.h ../core/synchro.h ../core/plugin.h
rm.o: ../core/pluginmsg.h ../core/system.h ../core/sessionmanager.h
rm.o: ../core/sessioncontainer.h ../functions/functions.h
rm.o: ../templates/templates.h ../templates/patterncacher.h
rm.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
rm.o: ../core/log.h ../templates/indexpatterns.h ../core/sessionmanager.h
rm.o: ../core/misc.h
run.o: run.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
run.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
run.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -736,17 +740,17 @@ run.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
run.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
run.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
run.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
run.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
run.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
run.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
run.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
run.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
run.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
run.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
run.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
run.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
run.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
run.o: ../core/synchro.h
run.o: chown.h ckeditor.h cp.h createthread.h ../functions/functionbase.h
run.o: default.h download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h
run.o: mv.h node.h priv.h reload.h rm.h specialdefault.h stat.h subject.h
run.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
run.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
run.o: ../templates/htmltextstream.h ../notify/notifythread.h
run.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
run.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
run.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
run.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
run.o: ../core/basethread.h ../core/synchro.h
specialdefault.o: specialdefault.h functionbase.h ../core/item.h ../db/db.h
specialdefault.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
specialdefault.o: ../core/textstream.h ../core/misc.h ../core/item.h
@@ -766,19 +770,19 @@ specialdefault.o: ../templates/locale.h ../../ezc/src/ezc.h
specialdefault.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h
specialdefault.o: ../../ezc/src/pattern.h functions.h functionparser.h
specialdefault.o: adduser.h cat.h chmod.h privchanger.h chown.h ckeditor.h
specialdefault.o: cp.h createthread.h default.h download.h emacs.h last.h
specialdefault.o: login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h
specialdefault.o: rm.h run.h stat.h subject.h funthread.h template.h
specialdefault.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
specialdefault.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
specialdefault.o: ../templates/htmltextstream.h ../notify/notifythread.h
specialdefault.o: cp.h createthread.h ../functions/functionbase.h default.h
specialdefault.o: download.h emacs.h last.h login.h logout.h ln.h ls.h
specialdefault.o: mkdir.h mv.h node.h priv.h reload.h rm.h run.h stat.h
specialdefault.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
specialdefault.o: uptime.h who.h vim.h ../core/htmlfilter.h
specialdefault.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
specialdefault.o: ../notify/notifythread.h ../core/basethread.h
specialdefault.o: ../core/synchro.h ../notify/templatesnotify.h
specialdefault.o: ../core/users.h ../core/ugcontainer.h
specialdefault.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
specialdefault.o: ../core/mountparser.h ../core/users.h ../core/groups.h
specialdefault.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
specialdefault.o: ../core/basethread.h ../core/synchro.h
specialdefault.o: ../notify/templatesnotify.h ../core/users.h
specialdefault.o: ../core/ugcontainer.h ../core/lastcontainer.h
specialdefault.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
specialdefault.o: ../core/users.h ../core/groups.h ../core/group.h
specialdefault.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
specialdefault.o: ../core/synchro.h
stat.o: stat.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
stat.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
stat.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -795,17 +799,17 @@ stat.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
stat.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
stat.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
stat.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
stat.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h last.h
stat.o: login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
stat.o: specialdefault.h subject.h funthread.h template.h tinymce.h uname.h
stat.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
stat.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
stat.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
stat.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
stat.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
stat.o: ../core/mountparser.h ../core/users.h ../core/groups.h
stat.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
stat.o: ../core/basethread.h ../core/synchro.h
stat.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
stat.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
stat.o: node.h priv.h reload.h rm.h run.h specialdefault.h subject.h
stat.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
stat.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
stat.o: ../templates/htmltextstream.h ../notify/notifythread.h
stat.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
stat.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
stat.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
stat.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
stat.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
subject.o: subject.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
subject.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
subject.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -823,10 +827,11 @@ subject.o: ../templates/localefilter.h ../templates/locale.h
subject.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
subject.o: ../../ezc/src/pattern.h functions.h functionparser.h adduser.h
subject.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
subject.o: default.h download.h emacs.h last.h login.h logout.h ls.h mkdir.h
subject.o: mv.h node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
subject.o: funthread.h template.h tinymce.h uname.h upload.h uptime.h who.h
subject.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
subject.o: ../functions/functionbase.h default.h download.h emacs.h last.h
subject.o: login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h reload.h
subject.o: rm.h run.h specialdefault.h stat.h funthread.h template.h
subject.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
subject.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
subject.o: ../templates/htmltextstream.h ../notify/notifythread.h
subject.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
subject.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
@@ -851,11 +856,11 @@ template.o: ../templates/localefilter.h ../templates/locale.h
template.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
template.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
template.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
template.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h
template.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h
template.o: rm.h run.h specialdefault.h stat.h subject.h funthread.h
template.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
template.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
template.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h
template.o: default.h download.h emacs.h last.h login.h logout.h ln.h ls.h
template.o: mkdir.h mv.h node.h priv.h reload.h rm.h run.h specialdefault.h
template.o: stat.h subject.h funthread.h tinymce.h uname.h upload.h uptime.h
template.o: who.h vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
template.o: ../templates/htmltextstream.h ../notify/notifythread.h
template.o: ../core/basethread.h ../core/synchro.h
template.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
@@ -880,10 +885,11 @@ tinymce.o: ../templates/localefilter.h ../templates/locale.h
tinymce.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
tinymce.o: ../../ezc/src/pattern.h functions.h functionparser.h adduser.h
tinymce.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
tinymce.o: default.h download.h emacs.h last.h login.h logout.h ls.h mkdir.h
tinymce.o: mv.h node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
tinymce.o: subject.h funthread.h template.h uname.h upload.h uptime.h who.h
tinymce.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
tinymce.o: ../functions/functionbase.h default.h download.h emacs.h last.h
tinymce.o: login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h reload.h
tinymce.o: rm.h run.h specialdefault.h stat.h subject.h funthread.h
tinymce.o: template.h uname.h upload.h uptime.h who.h vim.h
tinymce.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
tinymce.o: ../templates/htmltextstream.h ../notify/notifythread.h
tinymce.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
tinymce.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
@@ -906,17 +912,17 @@ uname.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h
uname.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
uname.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
uname.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
uname.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h last.h
uname.o: login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
uname.o: specialdefault.h stat.h subject.h funthread.h template.h tinymce.h
uname.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
uname.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
uname.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
uname.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
uname.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
uname.o: ../core/mountparser.h ../core/users.h ../core/groups.h
uname.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
uname.o: ../core/basethread.h ../core/synchro.h
uname.o: ckeditor.h cp.h createthread.h ../functions/functionbase.h default.h
uname.o: download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h mv.h
uname.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h subject.h
uname.o: funthread.h template.h tinymce.h upload.h uptime.h who.h vim.h
uname.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
uname.o: ../templates/htmltextstream.h ../notify/notifythread.h
uname.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
uname.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
uname.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
uname.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
uname.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
upload.o: upload.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
upload.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
upload.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -934,17 +940,18 @@ upload.o: ../templates/localefilter.h ../templates/locale.h
upload.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
upload.o: ../../ezc/src/pattern.h functions.h functionparser.h adduser.h
upload.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
upload.o: default.h download.h emacs.h last.h login.h logout.h ls.h mkdir.h
upload.o: mv.h node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
upload.o: subject.h funthread.h template.h tinymce.h uname.h uptime.h who.h
upload.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
upload.o: ../templates/htmltextstream.h ../notify/notifythread.h
upload.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
upload.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
upload.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
upload.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
upload.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
upload.o: ../core/misc.h ../functions/functions.h
upload.o: ../functions/functionbase.h default.h download.h emacs.h last.h
upload.o: login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
upload.o: run.h specialdefault.h stat.h subject.h funthread.h template.h
upload.o: tinymce.h uname.h uptime.h who.h vim.h ../core/htmlfilter.h
upload.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
upload.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
upload.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
upload.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
upload.o: ../core/mountparser.h ../core/users.h ../core/groups.h
upload.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
upload.o: ../core/basethread.h ../core/synchro.h ../core/misc.h
upload.o: ../functions/functions.h
uptime.o: uptime.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
uptime.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
uptime.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -962,16 +969,17 @@ uptime.o: ../templates/localefilter.h ../templates/locale.h
uptime.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
uptime.o: ../../ezc/src/pattern.h functions.h functionparser.h adduser.h
uptime.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
uptime.o: default.h download.h emacs.h last.h login.h logout.h ls.h mkdir.h
uptime.o: mv.h node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
uptime.o: subject.h funthread.h template.h tinymce.h uname.h upload.h who.h
uptime.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
uptime.o: ../templates/htmltextstream.h ../notify/notifythread.h
uptime.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
uptime.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
uptime.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
uptime.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
uptime.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
uptime.o: ../functions/functionbase.h default.h download.h emacs.h last.h
uptime.o: login.h logout.h ln.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
uptime.o: run.h specialdefault.h stat.h subject.h funthread.h template.h
uptime.o: tinymce.h uname.h upload.h who.h vim.h ../core/htmlfilter.h
uptime.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
uptime.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
uptime.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
uptime.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
uptime.o: ../core/mountparser.h ../core/users.h ../core/groups.h
uptime.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
uptime.o: ../core/basethread.h ../core/synchro.h
vim.o: vim.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
vim.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
vim.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -987,17 +995,17 @@ vim.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
vim.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
vim.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
vim.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
vim.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
vim.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
vim.o: run.h specialdefault.h stat.h subject.h funthread.h template.h
vim.o: tinymce.h uname.h upload.h uptime.h who.h ../core/htmlfilter.h
vim.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
vim.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
vim.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
vim.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
vim.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
vim.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
vim.o: ../core/synchro.h
vim.o: chown.h ckeditor.h cp.h createthread.h ../functions/functionbase.h
vim.o: default.h download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h
vim.o: mv.h node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
vim.o: subject.h funthread.h template.h tinymce.h uname.h upload.h uptime.h
vim.o: who.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
vim.o: ../templates/htmltextstream.h ../notify/notifythread.h
vim.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
vim.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
vim.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
vim.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
vim.o: ../core/basethread.h ../core/synchro.h
who.o: who.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
who.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
who.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@@ -1013,14 +1021,14 @@ who.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
who.o: ../templates/localefilter.h ../templates/locale.h ../../ezc/src/ezc.h
who.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h ../../ezc/src/pattern.h
who.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
who.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
who.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
who.o: run.h specialdefault.h stat.h subject.h funthread.h template.h
who.o: tinymce.h uname.h upload.h uptime.h vim.h ../core/htmlfilter.h
who.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
who.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
who.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
who.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
who.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h
who.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
who.o: ../core/synchro.h
who.o: chown.h ckeditor.h cp.h createthread.h ../functions/functionbase.h
who.o: default.h download.h emacs.h last.h login.h logout.h ln.h ls.h mkdir.h
who.o: mv.h node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
who.o: subject.h funthread.h template.h tinymce.h uname.h upload.h uptime.h
who.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
who.o: ../templates/htmltextstream.h ../notify/notifythread.h
who.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
who.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
who.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h
who.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/thumb.h
who.o: ../core/basethread.h ../core/synchro.h

View File

@@ -1 +1 @@
o = adduser.o cat.o chmod.o chown.o ckeditor.o cp.o createthread.o default.o download.o emacs.o functionbase.o functionparser.o functions.o funthread.o last.o login.o logout.o ls.o mkdir.o mv.o node.o priv.o privchanger.o reload.o rm.o run.o specialdefault.o stat.o subject.o template.o tinymce.o uname.o upload.o uptime.o vim.o who.o
o = adduser.o cat.o chmod.o chown.o ckeditor.o cp.o createthread.o default.o download.o emacs.o functionbase.o functionparser.o functions.o funthread.o last.o ln.o login.o logout.o ls.o mkdir.o mv.o node.o priv.o privchanger.o reload.o rm.o run.o specialdefault.o stat.o subject.o template.o tinymce.o uname.o upload.o uptime.o vim.o who.o

View File

@@ -7,7 +7,6 @@
*
*/
#include <errno.h>
#include "cp.h"
#include "core/misc.h"
#include "functions.h"
@@ -22,11 +21,17 @@ Cp::Cp()
}
bool Cp::CpCheckAccessFrom()
bool Cp::HasAccess()
{
return CheckAccessFrom();
}
bool Cp::CheckAccessFrom()
{
if( request->is_item )
{
if( !system->HasReadAccess(request->item) )
if( !system->HasReadAccess(request->item) || request->item.type == Item::symlink )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
@@ -39,22 +44,15 @@ bool Cp::CpCheckAccessFrom()
request->status = WINIX_ERR_PERMISSION_DENIED;
}
return true;
}
bool Cp::CheckAccessTo(long dir_id)
bool Cp::CheckAccessTo()
{
Item * pdir = system->dirs.GetDir(dir_id);
if( !pdir )
{
request->status = WINIX_ERR_INCORRECT_DIR;
return false;
}
if( !system->HasReadExecAccessToPath(dir_id) || !system->HasWriteAccess(*pdir) )
if( dir_tab.empty() ||
!system->HasReadExecAccessToPath(dir_tab) ||
!system->HasWriteAccess(*dir_tab.back()) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
@@ -65,157 +63,230 @@ return true;
bool Cp::ParseDir(long & dir_id, std::wstring & dir, std::wstring & file)
bool Cp::ParseDir()
{
int res = system->dirs.AnalyzePath(request->PostVar(L"to"), dir_id, dir, file);
const std::wstring & new_dir = request->PostVar(L"to");
int res = system->dirs.FollowLink(request->dir_tab, new_dir, dir_tab, file);
if( res == 1 )
if( res == 3 )
request->status = WINIX_ERR_NO_ROOT_DIR;
else
if( res != 0 )
if( res != 0 && res != 1 )
request->status = WINIX_ERR_INCORRECT_DIR;
return res == 0;
return res == 0 || res == 1;
}
void Cp::CpStaticFile(Item & item)
bool Cp::CopyStaticFile(const std::wstring & from, const std::wstring & to)
{
bool res1 = system->MakeFilePath(item, old_path);
bool res2 = system->CreateNewFile(item);
bool res3 = system->MakeFilePath(item, mv_new_path, false, true, config->upload_dirs_chmod);
if( from == to )
{
log << log3 << "Cp: the same path to a static file: " << to << logend;
return true;
}
if( !res1 || !res2 || !res3 )
if( ::CopyFile(from, to) )
{
log << log2 << "Cp: copied a static file from: " << from << ", to: " << to << logend;
return true;
}
else
{
log << log1 << "Cp: can't copy a file from: " << from << ", to: " << to << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
void Cp::CopyStaticFile(Item & item)
{
bool res1, res2, res3, res4, res5;
res1 = system->MakeFilePath(item, old_path, false);
res2 = !item.has_thumb || system->MakeFilePath(item, old_path_thumb, true);
res3 = system->CreateNewFile(item);
res4 = system->MakeFilePath(item, new_path, false, true, config->upload_dirs_chmod);
res5 = !item.has_thumb || system->MakeFilePath(item, new_path_thumb, true, true, config->upload_dirs_chmod);
if( !res1 || !res2 || !res3 || !res4 || !res5 )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( CopyFile(old_path, mv_new_path) )
{
log << log1 << "Cp: copied static file from: " << old_path << ", to: " << mv_new_path << logend;
request->status = db->EditFileById(item, item.id);
}
else
if( CopyStaticFile(old_path, new_path) )
{
log << log1 << "Cp: can't copy a file from: " << old_path << ", to: " << mv_new_path << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
request->status = db->EditFileById(item, item.id);
if( item.has_thumb )
CopyStaticFile(old_path_thumb, new_path_thumb);
}
}
void Cp::CpSetNewAttributes(Item & item)
void Cp::SetNewAttributes(Item & item)
{
item.user_id = cp_new_user;
item.group_id = cp_new_group;
item.user_id = new_user;
item.group_id = new_group;
item.SetDateModifyToNow();
}
void Cp::CpItem(Item & item, long dst_dir_id)
void Cp::CopyFile(Item & item, long dst_dir_id)
{
if( !system->HasReadAccess(item) )
return; // !! w przyszlosci bedziemy dodawac komunikaty do specjalnej tablicy (narazie nie zaimplementowane)
if( !preserve_attr )
SetNewAttributes(item);
item.parent_id = dst_dir_id;
if( !cp_preserve_attr )
CpSetNewAttributes(item);
request->status = system->AddFile(item);
item.parent_id = dst_dir_id;
request->status = db->AddItem(item);
if( request->status == WINIX_ERR_OK )
{
if( item.file_type != WINIX_ITEM_FILETYPE_NONE )
CpStaticFile(item);
CopyStaticFile(item);
}
}
void Cp::CopyFileOrSymlink(Item & item, long dst_dir_id)
{
if( !system->HasReadAccess(item) )
return; // !! w przyszlosci bedziemy dodawac komunikaty do specjalnej tablicy (narazie nie zaimplementowane)
if( item.type == Item::symlink && follow_symlinks )
{
if( system->dirs.CreateDirTab(item.parent_id, symlink_dir_tab) )
{
int res = system->FollowAllLinks(symlink_dir_tab, item.link_to, symlink_dir_tab, item);
if( res == 0 )
CopyDirTree(*symlink_dir_tab.back(), dst_dir_id);
else
if( res == 1 )
CopyFile(item, dst_dir_id);
}
}
else
{
CopyFile(item, dst_dir_id);
}
}
void Cp::CpPrepare()
void Cp::Prepare()
{
cp_iq.SetAll(true, false);
cp_iq.WhereType(Item::file);
iq.SetAll(true, false);
iq.WhereType(Item::dir, false);
cp_new_user = -1;
cp_new_group = -1;
new_user = -1;
new_group = dir_tab.back()->group_id;
if( request->session->puser )
cp_new_user = request->session->puser->id;
new_user = request->session->puser->id;
Item * pdir = system->dirs.GetDir(mv_dir_id);
if( pdir )
cp_new_group = pdir->group_id;
loop_checker.clear();
}
void Cp::CpFilesInDir(const Item & dir, long dst_dir_id)
{
cp_iq.WhereParentId(dir.id);
db->GetItems(request->item_tab, cp_iq);
for(size_t i=0 ; i<request->item_tab.size() ; ++i)
CpItem(request->item_tab[i], dst_dir_id);
void Cp::CopyFilesInDir(const Item & dir, long dst_dir_id)
{
iq.WhereParentId(dir.id);
db->GetItems(item_tab, iq);
for(size_t i=0 ; i<item_tab.size() ; ++i)
CopyFileOrSymlink(item_tab[i], dst_dir_id);
}
void Cp::CpContentOfDir(const Item & item, long dst_dir_id)
void Cp::CopyDirContentTree(const Item & dir, long dst_dir_id)
{
DirContainer::ParentIterator i = system->dirs.FindFirstParent(item.id);
DirContainer::ParentIterator i = system->dirs.FindFirstChild(dir.id);
// go through all directories
for( ; i != system->dirs.ParentEnd() ; i = system->dirs.NextParent(i) )
CpDir(*(i->second), dst_dir_id);
for( ; i != system->dirs.ParentEnd() ; i = system->dirs.NextChild(i) )
CopyDirTree(*(i->second), dst_dir_id);
CpFilesInDir(item, dst_dir_id);
CopyFilesInDir(dir, dst_dir_id);
}
bool Cp::WasThisDir(const Item & dir)
{
for(size_t i=0 ; i<loop_checker.size() ; ++i)
if( loop_checker[i] == dir.id )
return true;
return false;
}
// we shouldn't change 'item' because we have references to our app.dirs objects
long Cp::CpDir(const Item & item, long dst_dir_id)
long Cp::CopyDirTree(const Item & dir, long dst_dir_id)
{
cp_temp = item;
cp_temp.parent_id = dst_dir_id;
if( !mv_file.empty() )
if( WasThisDir(dir) )
{
cp_temp.url = mv_file;
mv_file.clear();
functions->PrepareUrl(cp_temp);
log << log1 << "Cp: a loop between directories found (created by a symlink), "
<< "dir_id: " << dir.id << ", dir_url: " << dir.url << logend;
return -1;
}
if( !cp_preserve_attr )
CpSetNewAttributes(cp_temp);
loop_checker.push_back(dir.id);
temp = dir;
temp.parent_id = dst_dir_id;
if( cp_remove_defaults )
cp_temp.default_item = -1;
if( !file.empty() )
{
temp.url = file;
functions->PrepareUrl(temp);
file.clear();
}
request->status = system->dirs.AddDirectory(cp_temp);
long new_dir_id = cp_temp.id; // remember the new dir_id
if( !preserve_attr )
SetNewAttributes(temp);
if( system->HasReadExecAccess(item) )
CpContentOfDir(item, cp_temp.id);
if( remove_defaults )
{
temp.link_to.clear();
temp.link_redirect = 0;
}
request->status = system->dirs.AddDirectory(temp);
loop_checker.push_back(temp.id);
// remember the new dir_id because temp can be changed
// this method is called in recurrences
long new_dir_id = temp.id;
if( system->HasReadExecAccess(dir) )
CopyDirContentTree(dir, temp.id);
return new_dir_id; // and return it
}
bool Cp::IsTheSameFile(const Item & item)
{
if( mv_file.empty() )
if( file.empty() )
{
if( item.parent_id == mv_dir_id )
if( item.parent_id == dir_tab.back()->id )
return true; // nothing to do
}
else
{
if( item.parent_id == mv_dir_id && item.url == mv_file )
if( item.parent_id == dir_tab.back()->id && item.url == file )
return true; // nothing to do
}
@@ -226,101 +297,94 @@ return false;
// here 'item' can be changed in place
void Cp::CpItemCheck(Item & item, bool redirect)
void Cp::PostCopyFile(Item & item, bool redirect)
{
if( IsTheSameFile(item) )
return;
if( !mv_file.empty() )
if( !file.empty() )
{
item.url = mv_file;
item.url = file;
functions->PrepareUrl(item);
file.clear();
}
CpItem(item, mv_dir_id);
CopyFileOrSymlink(item, dir_tab.back()->id);
if( request->status==WINIX_ERR_OK && redirect )
if( request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(item);
}
void Cp::CpContentOfDirCheck(const Item & item, bool redirect)
void Cp::PostCopyDirContent(const Item & dir, bool redirect)
{
if( !mv_file.empty() )
if( !file.empty() )
{
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
if( mv_dir_id == item.id )
if( dir_tab.back()->id == dir.id )
return; // nothing to do
if( system->dirs.HasParent(mv_dir_id, item.id) )
{
log << log1 << "Content: cannot copy directory to inside it" << logend;
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
CopyDirContentTree(dir, dir_tab.back()->id);
CpContentOfDir(item, mv_dir_id);
if( request->status==WINIX_ERR_OK && redirect )
system->RedirectTo(mv_dir_id);
if( request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(dir_tab.back()->id);
}
void Cp::CpDirCheck(const Item & item, bool redirect)
void Cp::PostCopyDir(const Item & dir, bool redirect)
{
if( mv_file.empty() && mv_dir_id == item.id )
long dir_id = dir_tab.back()->id;
if( file.empty() && dir_id == dir.id )
return; // nothing to do
if( mv_dir_id == item.id || system->dirs.HasParent(mv_dir_id, item.id) )
{
log << log1 << "Content: cannot copy directory to inside it" << logend;
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
long new_dir_id = CopyDirTree(dir, dir_id);
long new_dir_id = CpDir(item, mv_dir_id);
if( request->status==WINIX_ERR_OK && redirect )
if( new_dir_id != -1 && request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(new_dir_id);
}
void Cp::MakePost()
void Cp::Clear()
{
if( CpCheckAccessFrom() &&
ParseDir(mv_dir_id, mv_dir, mv_file) &&
CheckAccessTo(mv_dir_id) )
{
CpPrepare();
cp_preserve_attr = request->IsPostVar(L"preserveattr");
if( request->is_item )
{
CpItemCheck(request->item);
}
else
{
cp_remove_defaults = request->IsPostVar(L"removedefaults");
if( request->IsPostVar(L"onlycontent") )
CpContentOfDirCheck(*request->dir_tab.back());
else
CpDirCheck(*request->dir_tab.back());
}
}
loop_checker.clear();
dir_tab.clear();
item_tab.clear();
symlink_dir_tab.clear();
}
void Cp::MakeGet()
void Cp::MakePost()
{
CpCheckAccessFrom();
if( ParseDir() && CheckAccessTo() )
{
Prepare();
preserve_attr = request->IsPostVar(L"preserveattr");
remove_defaults = request->IsPostVar(L"removedefaults");
follow_symlinks = request->IsPostVar(L"followsymlinks");
if( request->is_item )
{
PostCopyFile(request->item);
}
else
{
if( request->IsPostVar(L"onlycontent") )
PostCopyDirContent(*request->dir_tab.back());
else
PostCopyDir(*request->dir_tab.back());
}
Clear();
}
}

View File

@@ -18,45 +18,58 @@ namespace Fun
{
class Cp : public FunctionBase
{
public:
Cp();
bool HasAccess();
void MakePost();
private:
// !! wywalic przedrostki cp_ Cp
Item temp;
DbItemQuery iq;
bool remove_defaults;
bool preserve_attr;
bool follow_symlinks;
long new_user;
long new_group;
Item cp_temp;
DbItemQuery cp_iq;
bool cp_remove_defaults;
bool cp_preserve_attr;
long cp_new_user;
long cp_new_group;
// destination dir (will not be empty)
std::vector<Item*> dir_tab, symlink_dir_tab;
std::wstring mv_dir;
std::wstring mv_file;
std::wstring mv_new_path;
std::wstring old_path;
long mv_dir_id;
// for testing loops in directories (between symlinks)
std::vector<long> loop_checker;
bool CpCheckAccessFrom();
bool CheckAccessTo(long dir_id);
bool ParseDir(long & dir_id, std::wstring & dir, std::wstring & file);
void CpStaticFile(Item & item);
void CpSetNewAttributes(Item & item);
void CpItem(Item & item, long dst_dir_id);
void CpPrepare();
void CpFilesInDir(const Item & dir, long dst_dir_id);
void CpContentOfDir(const Item & item, long dst_dir_id);
long CpDir(const Item & item, long dst_dir_id);
// destination file (if exists)
std::wstring file;
// for copying static files
std::wstring new_path, new_path_thumb;
std::wstring old_path, old_path_thumb;
std::vector<Item> item_tab;
bool WasThisDir(const Item & dir);
bool CheckAccessFrom();
bool CheckAccessTo();
bool ParseDir();
bool CopyStaticFile(const std::wstring & from, const std::wstring & to);
void CopyStaticFile(Item & item);
void SetNewAttributes(Item & item);
void CopyFile(Item & item, long dst_dir_id);
void CopyFileOrSymlink(Item & item, long dst_dir_id);
void Prepare();
void CopyFilesInDir(const Item & dir, long dst_dir_id);
void CopyDirContentTree(const Item & item, long dst_dir_id);
long CopyDirTree(const Item & item, long dst_dir_id);
bool IsTheSameFile(const Item & item);
void CpItemCheck(Item & item, bool redirect = true);
void CpContentOfDirCheck(const Item & item, bool redirect = true);
void CpDirCheck(const Item & item, bool redirect = true);
void MakePost();
void MakeGet();
void Clear();
void PostCopyFile(Item & item, bool redirect = true);
void PostCopyDirContent(const Item & dir, bool redirect = true);
void PostCopyDir(const Item & dir, bool redirect = true);
};

View File

@@ -11,7 +11,7 @@
#include "functions.h"
namespace Fun
namespace Thread
{
CreateThread::CreateThread()

View File

@@ -7,14 +7,14 @@
*
*/
#ifndef headerfilecmslucontentcreatethread
#define headerfilecmslucontentcreatethread
#ifndef headerfile_winix_plugins_thread_createthread
#define headerfile_winix_plugins_thread_createthread
#include "functionbase.h"
#include "functions/functionbase.h"
namespace Fun
namespace Thread
{

View File

@@ -20,103 +20,33 @@ Default::Default()
}
long Default::PostFunDefaultParsePath()
bool Default::HasAccess()
{
Item * pdir, * pdir2;
long defaultid = -1;
const std::wstring & path = request->PostVar(L"defaultitem");
if( !path.empty() )
{
std::wstring dir, file;
Dirs::SplitPath(path, dir, file);
pdir = system->dirs.GetDir(dir);
if( !pdir )
throw Error(WINIX_ERR_INCORRECT_DIR);
if( file.empty() )
{
defaultid = pdir->id;
}
else
{
// checking whether the file is a directory too (the method SplitPath does not check it)
pdir2 = system->dirs.GetDir(file, pdir->id);
if( !pdir2 )
{
defaultid = db->GetFileId(pdir->id, file);
if( defaultid == -1 )
throw Error(WINIX_ERR_NO_ITEM);
}
else
{
// file is a directory
defaultid = pdir2->id;
}
}
}
return defaultid;
return !request->is_item && system->HasWriteAccess(*request->dir_tab.back());
}
void Default::MakePost()
{
if( !system->HasWriteAccess(*request->dir_tab.back()) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
Item & dir = *request->dir_tab.back();
try
{
long defaultid = PostFunDefaultParsePath();
dir.link_to = request->PostVar(L"linkto");
dir.link_redirect = request->IsPostVar(L"makeredirect") ? 1 : 0;
TrimWhite(dir.link_to);
if( defaultid != request->dir_tab.back()->id )
{
request->status = db->EditDefaultItem(request->dir_tab.back()->id, defaultid);
if( request->status == WINIX_ERR_OK )
request->dir_tab.back()->default_item = defaultid;
}
else
{
log << "Default: skipping the same directory" << logend;
}
}
catch(const Error & e)
{
request->status = e;
}
// !! dodac sprawdzenie czy link_to jest pusty teraz
request->status = db->EditLinkItem(dir.id, dir.link_to, dir.link_redirect);
if( request->status == WINIX_ERR_OK )
system->RedirectTo(*request->dir_tab.back());
else
log << log1 << "Content: PostFunDefaultItem: Error: " << request->status << logend;
}
void Default::MakeGet()
{
if( !system->HasWriteAccess(*request->dir_tab.back()) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
log << log2 << "Default: changed link_to: " << dir.link_to << ", for dir_id: " << dir.id << logend;
system->RedirectToLastDir();
}
}
} // namespace

View File

@@ -23,12 +23,8 @@ class Default : public FunctionBase
public:
Default();
bool HasAccess();
void MakePost();
void MakeGet();
private:
long PostFunDefaultParsePath();
};

View File

@@ -127,7 +127,6 @@ void Emacs::MakePost()
if( !PostEmacsCheckAbuse(adding) )
return;
if( adding )
{
request->is_item = true; // !! moze lepiej nie ustawiac is_item? (bo jak wystapi blad np dodania do bazy danych
@@ -140,7 +139,6 @@ void Emacs::MakePost()
request->status = system->EditFile(request->item, request->item.url != old_url, NotifyCodeEdit());
}
if( request->status == WINIX_ERR_OK )
{
PostFunEmacsModifyMountPoint(adding);
@@ -148,8 +146,7 @@ void Emacs::MakePost()
}
else
{
log << log1 << "Emacs: error: "
<< request->status << logend;
log << log1 << "Emacs: error: " << request->status << logend;
}
}

View File

@@ -15,6 +15,7 @@
FunctionBase::FunctionBase()
{
id = -1;
follow_symlinks = true;
fun.user_id = -1;
fun.group_id = -1;
@@ -82,12 +83,6 @@ bool FunctionBase::HasAccess()
}
void FunctionBase::Clear()
{
// this method is called at the end of a request
// you can clear your variables
}
void FunctionBase::MakePost()
{

View File

@@ -27,6 +27,7 @@ class Templates;
class FunctionBase
{
public:
@@ -41,9 +42,11 @@ public:
// user, group, permissions, url (function name)
Item fun;
// auto follow sym links, default: true
bool follow_symlinks;
virtual void Init();
virtual bool HasAccess();
virtual void Clear();
virtual void MakePost();
virtual void MakeGet();

View File

@@ -72,7 +72,7 @@ void FunctionParser::ParseItem()
return;
// request->dir_tab has at least one element
long parent_id = request->dir_tab.back()->id;
long parent_id = request->dir_tab.back()->id;
const std::wstring & url = request->get_tab[get_index];
request->status = db->GetItem(parent_id, url, request->item);
@@ -171,7 +171,6 @@ void FunctionParser::ParseParams()
void FunctionParser::Parse(Request * prequest, Db * pdb, Functions * pfunctions, System * psystem)
{
request = prequest;
@@ -198,7 +197,7 @@ void FunctionParser::Parse(Request * prequest, Db * pdb, Functions * pfunctions,
if( request->status != WINIX_ERR_OK )
return;
ParseFunction();
if( !request->function && get_index != get_tab_len )

View File

@@ -123,7 +123,7 @@ Error Functions::CheckSpecialFile(const Item & item)
Error status = system->mounts.ReadMounts(item.content);
templates->ReadNewIndexTemplates();
return status;
}
@@ -183,6 +183,7 @@ void Functions::CreateFunctions()
Add(fun_last);
Add(fun_login);
Add(fun_logout);
Add(fun_ln);
Add(fun_ls);
Add(fun_mkdir);
Add(fun_mv);
@@ -248,33 +249,26 @@ void Functions::SetDefaultFunctionForFile()
void Functions::SetDefaultFunctionForDir()
{
long default_item = request->dir_tab.back()->default_item;
if( default_item != -1 )
{
log << log3 << "Functions: Default item: id: " << default_item << logend;
system->RedirectTo(default_item);
}
if( system->mounts.pmount->type == system->mounts.MountTypeThread() )
request->function = &fun_thread;
else
{
if( system->mounts.pmount->type == system->mounts.MountTypeThread() )
request->function = &fun_thread;
else
request->function = &fun_ls;
request->function = &fun_ls;
log << log3 << "Functions: default function: " << request->function->fun.url << logend;
}
log << log3 << "Functions: default function: " << request->function->fun.url << logend;
}
void Functions::SetDefaultFunction()
{
request->function = 0;
plugin.Call(WINIX_SELECT_DEFAULT_FUNCTION);
if( request->function )
{
log << log3 << "Functions: default function: " << request->function->fun.url << logend;
log << log3 << "Functions: default function: " << request->function->fun.url
<< " (set by a plugin)" << logend;
return;
}
@@ -287,75 +281,120 @@ void Functions::SetDefaultFunction()
void Functions::MakeGet()
void Functions::CheckFunctionFollowDir(bool was_default_function)
{
if( request->role == Request::authorizer )
// directory with 'default' flag
if( was_default_function )
{
// in authorizer mode only cat function is available
// (and must be default)
if( request->function )
if( request->dir_tab.back()->link_redirect == 1 )
{
request->status = WINIX_ERR_NO_ITEM;
log << log1 << "Functions: in authorizer mode only 'cat' funtion is available and must "
"be default (not in the url)" << logend;
return;
system->RedirectTo(request->dir_tab.back()->link_to);
}
else
{
if( system->FollowAllLinks(request->dir_tab.back()->link_to, true, true) )
SetDefaultFunction();
}
request->function = &fun_cat;
}
}
void Functions::CheckFunctionFollowSymlink(bool was_default_function)
{
if( request->item.link_redirect == 1 )
{
if( was_default_function )
system->RedirectTo(request->item.link_to);
else
system->RedirectWithFunctionAndParamsTo(request->item.link_to);
}
else
if( system->FollowAllLinks(request->item.link_to, true, true) )
{
if( was_default_function )
SetDefaultFunction();
if( request->status == WINIX_ERR_OK && !request->redirect_to.empty() && !was_default_function && request->function )
{
// !! nie jestem pewny dodania tej nowej funkcji do redirecta... (sprawdzic to)
request->redirect_to += '/';
request->redirect_to += request->function->fun.url;
system->AddParams(request->param_tab, request->redirect_to, false);
}
}
}
// making a proper redirection from a directory with 'default' flag
// or from a symlink (or just loading it if there is no redirection flag set)
void Functions::CheckFunctionAndSymlink()
{
bool was_default_function = false;
if( !request->function || request->function == &fun_special_default )
{
was_default_function = true;
SetDefaultFunction();
}
if( !request->redirect_to.empty() )
if( request->status != WINIX_ERR_OK || !request->redirect_to.empty() )
return;
if( !request->function )
if( !request->is_item && !request->dir_tab.back()->link_to.empty() )
CheckFunctionFollowDir(was_default_function);
else
if( request->is_item && request->item.type == Item::symlink && request->function && request->function->follow_symlinks )
CheckFunctionFollowSymlink(was_default_function);
}
void Functions::MakeFunction()
{
if( !request->function )
{
request->status = WINIX_ERR_NO_FUNCTION;
log << log1 << "Functions: no function (neither cat nor ls)" << logend;
return;
}
if( !system->HasReadExecAccess(request->function->fun) || !request->function->HasAccess() )
if( !system->DirsHaveReadExecPerm() ||
!system->HasReadExecAccess(request->function->fun) ||
!request->function->HasAccess() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
request->function->MakeGet();
if( request->method == Request::get )
{
if( request->redirect_to.empty() )
request->function->MakeGet();
}
else
if( request->method == Request::post )
{
// we don't use post with redirecting (the post variables would be lost)
if( request->redirect_to.empty() )
request->function->MakePost();
else
request->status = WINIX_ERR_PERMISSION_DENIED;
}
else
if( request->method == Request::head )
{
// do nothing
}
else
log << log1 << "Functions: unknown request method (skipping)" << logend;
}
void Functions::MakePost()
{
if( request->role == Request::authorizer )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( !request->function || request->function == &fun_special_default )
SetDefaultFunction();
if( !request->function )
{
request->status = WINIX_ERR_NO_FUNCTION;
log << log1 << "Functions: MakePost: no function" << logend;
return;
}
if( !system->HasReadExecAccess(request->function->fun) || !request->function->HasAccess() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
request->function->MakePost();
}
void Functions::CheckGetPostTimes(time_t difference)
@@ -505,6 +544,7 @@ void Functions::ReadItemContentWithType(Item & item)
// item_type - the type of an item you are expecting to read
// returns true if the url has to be changed
// at the moment this is only checked for Item::file - for Item::dir it returns always true
// !! zmienic nazwe na ReadUrlSubjectContent
void Functions::ReadItem(Item & item, Item::Type item_type)
{
if( item_type == Item::none )

View File

@@ -26,6 +26,7 @@
#include "last.h"
#include "login.h"
#include "logout.h"
#include "ln.h"
#include "ls.h"
#include "mkdir.h"
#include "mv.h"
@@ -69,6 +70,7 @@ public:
Fun::Last fun_last;
Fun::Login fun_login;
Fun::Logout fun_logout;
Fun::Ln fun_ln;
Fun::Ls fun_ls;
Fun::Mkdir fun_mkdir;
Fun::Mv fun_mv;
@@ -99,8 +101,9 @@ public:
Iterator Begin();
Iterator End();
void MakeGet();
void MakePost();
void CheckFunctionAndSymlink();
void MakeFunction();
void SetConfig(Config * pconfig);
void SetRequest(Request * prequest);
@@ -145,6 +148,7 @@ private:
std::wstring temp;
HTMLFilter html_filter;
std::wstring link_to_temp;
void CreateFunctions();
void InitFunctions();
@@ -158,6 +162,11 @@ private:
Table table;
FunctionParser function_parser;
void CheckFunctionFollowDir(bool was_default_function);
void CheckFunctionFollowSymlink(bool was_default_function);
};
#endif

View File

@@ -12,7 +12,7 @@
#include "funthread.h"
namespace Fun
namespace Thread
{
FunThread::FunThread()
@@ -31,7 +31,6 @@ bool FunThread::HasAccess()
void FunThread::Clear()
{
is_thread = false;
thread.Clear();
thread_tab.clear();
}
@@ -80,6 +79,8 @@ void FunThread::MakeGet()
CreateSortIndexByDate();
std::sort(thread_tab.begin(), thread_tab.end(), FunThreadSort);
Clear();
}

View File

@@ -7,14 +7,14 @@
*
*/
#ifndef headerfilecmslucontentthread
#define headerfilecmslucontentthread
#ifndef headerfile_winix_plugins_thread_funthread
#define headerfile_winix_plugins_thread_funthread
#include "functionbase.h"
#include "functions/functionbase.h"
#include "core/thread.h"
namespace Fun
namespace Thread
{
@@ -24,7 +24,6 @@ public:
FunThread();
bool HasAccess();
void Clear();
void MakeGet();
// current thread (if exists)
@@ -36,6 +35,7 @@ private:
static bool FunThreadSort(const Thread & t1, const Thread & t2);
void CreateSortIndexByDate();
void Clear();
};

111
functions/ln.cpp Executable file
View File

@@ -0,0 +1,111 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#include "ln.h"
#include "core/misc.h"
#include "functions/functions.h"
namespace Fun
{
Ln::Ln()
{
fun.url = L"ln";
}
bool Ln::HasAccess()
{
return system->HasWriteAccess(*request->dir_tab.back());
}
void Ln::CreateSymbolicLink(const std::wstring & link_to)
{
item.Clear(); // setting the date to now
item.type = Item::symlink;
item.parent_id = request->dir_tab.back()->id;
item.url = request->PostVar(L"url");
item.link_to = link_to;
item.link_redirect = request->IsPostVar(L"makeredirect") ? 1 : 0;
item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
functions->SetUser(item);
functions->PrepareUrl(item);
request->status = db->AddItem(item);
if( request->status == WINIX_ERR_OK )
log << log3 << "Ln: created a symbolic link to: " << link_to << logend;
}
void Ln::CreateHardLink(const std::wstring & link_to)
{
int res = system->FollowAllLinks(request->dir_tab, link_to, dir_tab, item, false, false);
if( res == 0 )
{
log << log2 << "Ln: " << link_to << " is a directory (can't create a hard link)" << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
}
else
if( res == 1 )
{
item.SetDateToNow();
item.type = Item::file;
item.parent_id = request->dir_tab.back()->id;
item.url = request->PostVar(L"url");
item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
functions->SetUser(item);
functions->PrepareUrl(item);
request->status = db->AddHardLink(item);
if( request->status == WINIX_ERR_OK )
log << log3 << "Ln: created a hard link to: " << link_to << logend;
}
else
if( res == 5 || res == 6 )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
}
else
{
request->status = WINIX_ERR_NO_ITEM;
}
}
// we do not use notifications for links
void Ln::MakePost()
{
link_to = request->PostVar(L"linkto");
TrimWhite(link_to);
if( link_to.empty() )
return;
int type = Toi(request->PostVar(L"linktype"));
if( type == 0 )
CreateHardLink(link_to);
else
CreateSymbolicLink(link_to);
if( request->status == WINIX_ERR_OK )
system->RedirectTo(item);
}
} // namespace

42
functions/ln.h Executable file
View File

@@ -0,0 +1,42 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#ifndef headerfilecmslucontentln
#define headerfilecmslucontentln
#include "functionbase.h"
namespace Fun
{
class Ln : public FunctionBase
{
public:
Ln();
bool HasAccess();
void CreateSymbolicLink(const std::wstring & link_to);
void CreateHardLink(const std::wstring & link_to);
void MakePost();
private:
Item item;
std::wstring link_to;
std::vector<Item*> dir_tab;
};
} // namespace
#endif

View File

@@ -30,7 +30,7 @@ void Ls::MakeGet()
iq.sel_content = false;
iq.WhereParentId(request->dir_tab.back()->id);
iq.WhereType(Item::file);
iq.WhereType(Item::dir, false);
if( request->IsParam(L"ckeditor_browse") )
{

View File

@@ -18,25 +18,38 @@ namespace Fun
Mv::Mv()
{
fun.url = L"mv";
follow_symlinks = false;
}
bool Mv::MoveCheckAccessFromToDir()
bool Mv::HasAccess()
{
return CheckAccessFrom();
}
bool Mv::CheckAccessFromToDir()
{
Item * last;
Item * last_but_one = 0;
size_t dir_tab_size;
last = request->dir_tab[request->dir_tab.size()-1];
last = request->dir_tab.back();
dir_tab_size = request->dir_tab.size();
if( request->dir_tab.size() >= 2 )
last_but_one = request->dir_tab[request->dir_tab.size()-2];
if( dir_tab_size <= 1 )
return false; // you cannot move the root directory
last_but_one = request->dir_tab[dir_tab_size - 2];
if( request->method != Request::post )
{
// used in GET or HEAD
// we don't now whether we move the last directory or the last but one
// it depends on the 'onlycontent' parameter
if( !system->HasWriteAccess(*last) &&
(!last_but_one || !system->HasWriteAccess(*last_but_one)) )
if( !system->HasWriteAccess(*last) && !system->HasWriteAccess(*last_but_one) )
return false;
}
else
@@ -46,10 +59,7 @@ Item * last_but_one = 0;
if( request->IsPostVar(L"onlycontent") )
return system->HasWriteAccess(*last);
else
if( last_but_one )
return system->HasWriteAccess(*last_but_one);
else
return false; // you cannot move the root directory
}
return true;
@@ -57,7 +67,8 @@ return true;
bool Mv::MoveCheckAccessFrom()
bool Mv::CheckAccessFrom()
{
if( request->is_item )
{
@@ -71,7 +82,7 @@ bool Mv::MoveCheckAccessFrom()
}
else
{
if( !MoveCheckAccessFromToDir() )
if( !CheckAccessFromToDir() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
@@ -82,17 +93,11 @@ return true;
}
bool Mv::MoveCheckAccessTo(long dir_id)
bool Mv::CheckAccessTo()
{
Item * pdir = system->dirs.GetDir(dir_id);
if( !pdir )
{
request->status = WINIX_ERR_INCORRECT_DIR;
return false;
}
if( !system->HasReadExecAccessToPath(dir_id) || !system->HasWriteAccess(*pdir) )
if( dir_tab.empty() ||
!system->HasReadExecAccessToPath(dir_tab) ||
!system->HasWriteAccess(*dir_tab.back()) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
@@ -103,85 +108,222 @@ return true;
bool Mv::MoveCheckMountPoints(long dir_id)
bool Mv::ParseDir()
{
/*
Mount * new_mount = system->mounts.CalcMount(dir_id);
if( !new_mount )
{
if( system->mounts.pmount->type != system->mounts.MountTypeCms() )
{
request->status = WINIX_DIFFERENT_MOUNT_POINTS;
return false;
}
const std::wstring & new_dir = request->PostVar(L"to");
int res = system->dirs.FollowLink(request->dir_tab, new_dir, dir_tab, file);
return true;
}
if( res == 3 )
request->status = WINIX_ERR_NO_ROOT_DIR;
else
if( res != 0 && res != 1 )
request->status = WINIX_ERR_INCORRECT_DIR;
if( new_mount->type != system->mounts.pmount->type )
{
request->status = WINIX_DIFFERENT_MOUNT_POINTS;
return false;
}
*/
return true;
return res == 0 || res == 1;
}
bool Mv::MoveParseDir(long & dir_id, std::wstring & dir, std::wstring & file)
bool Mv::MoveStaticFile(const std::wstring & from, const std::wstring & to)
{
int res = system->dirs.AnalyzePath(request->PostVar(L"to"), dir_id, dir, file);
if( from == to )
{
log << log3 << "Mv: the same path to a static file: " << to << " (skipped)" << logend;
return true;
}
if( res == 1 )
request->status = WINIX_ERR_NO_ROOT_DIR;
if( RenameFile(from, to) )
{
log << log2 << "Mv: moved static file from: " << from << ", to: " << to << logend;
return true;
}
else
if( res != 0 )
request->status = WINIX_ERR_INCORRECT_DIR;
return res == 0;
{
log << log1 << "Mv: can't move a file from: " << from << ", to: " << to << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
void Mv::MoveStaticFile(Item & item)
{
bool res1 = system->MakeFilePath(item, old_path);
bool res2 = system->CreateNewFile(item);
bool res3 = system->MakeFilePath(item, mv_new_path, false, true, config->upload_dirs_chmod);
bool res1, res2, res3, res4, res5;
res1 = system->MakeFilePath(item, old_path, false);
res2 = !item.has_thumb || system->MakeFilePath(item, old_path_thumb, true);
res3 = system->CreateNewFile(item);
res4 = system->MakeFilePath(item, new_path, false, true, config->upload_dirs_chmod);
res5 = !item.has_thumb || system->MakeFilePath(item, new_path_thumb, true, true, config->upload_dirs_chmod);
if( !res1 || !res2 || !res3 )
if( !res1 || !res2 || !res3 || !res4 || !res5 )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( RenameFile(old_path, mv_new_path) )
{
log << log1 << "Mv: moved static file from: " << old_path << ", to: " << mv_new_path << logend;
request->status = db->EditFileById(item, item.id);
}
else
if( MoveStaticFile(old_path, new_path) )
{
log << log1 << "Mv: can't move a file from: " << old_path << ", to: " << mv_new_path << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
request->status = db->EditFileById(item, item.id);
if( item.has_thumb )
MoveStaticFile(old_path_thumb, new_path_thumb);
}
}
bool Mv::MoveIsTheSameFile(const Item & item)
void Mv::MoveFileOrSymlink(Item & item)
{
if( mv_file.empty() )
old_url = item.url;
if( !file.empty() )
{
if( item.parent_id == mv_dir_id )
item.url = file;
functions->PrepareUrl(item);
file.clear();
}
item.parent_id = dir_tab.back()->id;
request->status = db->EditParentUrlById(item, item.id);
if( request->status == WINIX_ERR_OK )
{
if( item.type == Item::file )
log << log3 << "Mv: file: ";
else
log << log3 << "Mv: symlink: ";
log << old_url << " was moved to: ";
system->dirs.LogDir(dir_tab);
log << item.url << logend;
if( item.file_type != WINIX_ITEM_FILETYPE_NONE )
MoveStaticFile(item);
}
}
void Mv::MoveDirContent(const Item & dir)
{
content_dir_iq.WhereParentId(dir.id);
db->GetItems(item_tab, content_dir_iq);
for(size_t i=0 ; i<item_tab.size() ; ++i)
{
if( item_tab[i].type == Item::dir )
MoveDir(item_tab[i]);
else
MoveFileOrSymlink(item_tab[i]);
}
}
void Mv::Prepare()
{
content_dir_iq.SetAll(false, false);
content_dir_iq.sel_parent_id = true;
content_dir_iq.sel_type = true;
content_dir_iq.sel_url = true;
content_dir_iq.sel_file = true;
static_iq.SetAll(false, false);
static_iq.sel_parent_id = true;
static_iq.sel_type = true;
static_iq.sel_url = true;
static_iq.sel_file = true;
static_iq.WhereType(Item::file);
static_iq.WhereFileType(WINIX_ITEM_FILETYPE_NONE, false);
}
void Mv::Clear()
{
dir_tab.clear();
static_item_tab.clear();
item_tab.clear();
}
void Mv::MoveStaticFilesTree(const Item & dir)
{
DirContainer::ParentIterator i = system->dirs.FindFirstChild(dir.id);
// go through all directories
for( ; i != system->dirs.ParentEnd() ; i = system->dirs.NextChild(i) )
MoveStaticFilesTree(*(i->second));
static_iq.WhereParentId(dir.id);
db->GetItems(static_item_tab, static_iq);
for(size_t i=0 ; i<static_item_tab.size() ; ++i)
MoveStaticFile(static_item_tab[i]);
}
void Mv::MoveDir(Item & dir)
{
long dst_dir_id = dir_tab.back()->id;
old_url = dir.url;
if( dst_dir_id == dir.id || system->dirs.HasParent(dst_dir_id, dir.id) )
{
log << log1 << "Mv: cannot move directory to inside it" << logend;
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
if( !system->dirs.ChangeParent(dir.id, dst_dir_id) )
{
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
dir.parent_id = dst_dir_id;
if( !file.empty() )
{
dir.url = file;
functions->PrepareUrl(dir);
file.clear();
}
request->status = db->EditParentUrlById(dir, dir.id);
if( request->status == WINIX_ERR_OK )
{
log << log3 << "Mv: directory: " << old_url << " was moved to: ";
system->dirs.LogDir(dir_tab);
log << dir.url << logend;
MoveStaticFilesTree(dir);
}
}
bool Mv::IsTheSameFile(const Item & item)
{
if( file.empty() )
{
if( item.parent_id == dir_tab.back()->id )
return true; // nothing to do
}
else
{
if( item.parent_id == mv_dir_id && item.url == mv_file )
if( item.parent_id == dir_tab.back()->id && item.url == file )
return true; // nothing to do
}
@@ -190,131 +332,48 @@ return false;
void Mv::MoveFile(Item & item, bool redirect)
void Mv::PostMoveFile()
{
if( MoveIsTheSameFile(item) )
if( IsTheSameFile(request->item) )
return;
if( !mv_file.empty() )
{
item.url = mv_file;
functions->PrepareUrl(item);
}
item.parent_id = mv_dir_id;
request->status = db->EditParentUrlById(item, item.id);
MoveFileOrSymlink(request->item);
if( request->status == WINIX_ERR_OK )
{
log << log2 << "Mv: the file was moved to: " << mv_dir << item.url << logend;
if( item.file_type != WINIX_ITEM_FILETYPE_NONE )
MoveStaticFile(item);
if( redirect )
system->RedirectTo(item);
}
system->RedirectTo(request->item);
}
void Mv::MoveContentOfDir()
void Mv::PostMoveDirContent()
{
DbItemQuery iq;
iq.sel_parent_id = true;
iq.sel_type = true;
iq.sel_url = true;
iq.sel_file = true;
iq.WhereParentId(request->dir_tab.back()->id);
db->GetItems(request->item_tab, iq);
for(size_t i=0 ; i<request->item_tab.size() ; ++i)
if( !file.empty() )
{
if( request->item_tab[i].type == Item::dir )
MoveDir(request->item_tab[i], false);
else
MoveFile(request->item_tab[i], false);
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
if( request->dir_tab.back()->id == dir_tab.back()->id )
return; // nothing to do
MoveDirContent(*request->dir_tab.back());
system->RedirectToLastDir();
}
void Mv::MoveAuthPrepareQuery()
void Mv::PostMoveDir()
{
mv_auth_iq.SetAll(false, false);
Item & last_dir = *request->dir_tab.back();
Item & new_dir = *dir_tab.back();
mv_auth_iq.sel_parent_id = true;
mv_auth_iq.sel_type = true;
mv_auth_iq.sel_url = true;
mv_auth_iq.sel_file = true;
mv_auth_iq.WhereType(Item::file);
mv_auth_iq.WhereFileType(WINIX_ITEM_FILETYPE_NONE, false);
}
void Mv::MoveAuthContentOfDir(const Item & item)
{
DirContainer::ParentIterator i = system->dirs.FindFirstParent(item.id);
// go through all directories
for( ; i != system->dirs.ParentEnd() ; i = system->dirs.NextParent(i) )
MoveAuthContentOfDir(*(i->second));
mv_auth_iq.WhereParentId(item.id);
// don't use request->item here (is used in MoveContentOfDir())
db->GetItems(mv_auth, mv_auth_iq);
for(size_t i=0 ; i<mv_auth.size() ; ++i)
MoveStaticFile(mv_auth[i]);
mv_auth.clear();
}
void Mv::MoveDir(Item & item, bool redirect)
{
if( mv_file.empty() && mv_dir_id == item.id )
if( file.empty() && new_dir.id == last_dir.id )
return; // nothing to do
if( mv_dir_id == item.id || system->dirs.HasParent(mv_dir_id, item.id) )
{
log << log1 << "Mv: cannot move directory to inside it" << logend;
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
if( !system->dirs.ChangeParent(item.id, mv_dir_id) )
{
request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
item.parent_id = mv_dir_id;
if( !mv_file.empty() )
{
item.url = mv_file;
functions->PrepareUrl(item);
}
request->status = db->EditParentUrlById(item, item.id);
MoveDir(last_dir);
if( request->status == WINIX_ERR_OK )
{
log << log2 << "Mv: the directory was moved to: " << mv_dir << item.url << logend;
MoveAuthContentOfDir(item);
if( redirect )
system->RedirectToLastDir();
}
system->RedirectToLastDir();
}
@@ -322,41 +381,29 @@ void Mv::MoveDir(Item & item, bool redirect)
void Mv::MakePost()
{
if( MoveCheckAccessFrom() &&
MoveParseDir(mv_dir_id, mv_dir, mv_file) &&
MoveCheckAccessTo(mv_dir_id) &&
MoveCheckMountPoints(mv_dir_id) )
if( CheckAccessFrom() &&
ParseDir() &&
CheckAccessTo() )
{
Prepare();
if( request->is_item )
{
MoveFile(request->item);
PostMoveFile();
}
else
{
MoveAuthPrepareQuery();
if( request->IsPostVar(L"onlycontent") )
{
if( mv_file.empty() )
MoveContentOfDir();
else
request->status = WINIX_ERR_INCORRECT_DIR;
}
PostMoveDirContent();
else
{
MoveDir(*request->dir_tab.back());
}
PostMoveDir();
}
Clear();
}
}
void Mv::MakeGet()
{
MoveCheckAccessFrom();
}
} // namespace

View File

@@ -14,40 +14,59 @@
namespace Fun
{
class Mv : public FunctionBase
{
public:
Mv();
bool HasAccess();
void MakePost();
void MakeGet();
private:
std::wstring mv_dir;
std::wstring mv_file;
std::wstring mv_new_path;
std::wstring old_path;
long mv_dir_id;
std::vector<Item> mv_auth;
DbItemQuery mv_auth_iq;
// destination dir
std::vector<Item*> dir_tab;
bool MoveCheckAccessFromToDir();
bool MoveCheckAccessFrom();
bool MoveCheckAccessTo(long dir_id);
bool MoveCheckMountPoints(long dir_id);
bool MoveParseDir(long & dir_id, std::wstring & dir, std::wstring & file);
// destination file (if exists)
std::wstring file;
// for copying static files
std::wstring new_path, new_path_thumb;
std::wstring old_path, old_path_thumb;
// for static files
std::vector<Item> static_item_tab;
DbItemQuery static_iq;
// for moving content of a directory
DbItemQuery content_dir_iq;
std::vector<Item> item_tab;
// for logging
std::wstring old_url;
bool CheckAccessFromToDir();
bool CheckAccessFrom();
bool CheckAccessTo();
bool ParseDir();
bool MoveStaticFile(const std::wstring & from, const std::wstring & to);
void MoveStaticFile(Item & item);
bool MoveIsTheSameFile(const Item & item);
void MoveFile(Item & item, bool redirect = true);
void MoveContentOfDir();
void MoveAuthPrepareQuery();
void MoveAuthContentOfDir(const Item & item);
void MoveDir(Item & item, bool redirect = true);
void MoveFileOrSymlink(Item & item);
void MoveDirContent(const Item & dir);
void Prepare();
void Clear();
void MoveStaticFilesTree(const Item & dir);
void MoveDir(Item & dir);
bool IsTheSameFile(const Item & item);
void PostMoveFile();
void PostMoveDirContent();
void PostMoveDir();
};

View File

@@ -172,7 +172,7 @@ void PrivChanger::PrivFilesInDir(long parent_id)
iq.sel_user_id = iq.sel_group_id = iq.sel_guest_name = iq.sel_privileges = true;
iq.WhereParentId(parent_id);
iq.WhereType(Item::file);
iq.WhereType(Item::dir, false);
db->GetItems(request->item_tab, iq);
@@ -194,9 +194,9 @@ void PrivChanger::PrivDir(long parent_id)
PrivFilesInDir(parent_id);
DirContainer::ParentIterator i = system->dirs.FindFirstParent(parent_id);
DirContainer::ParentIterator i = system->dirs.FindFirstChild(parent_id);
for( ; i != system->dirs.ParentEnd() ; i = system->dirs.NextParent(i) )
for( ; i != system->dirs.ParentEnd() ; i = system->dirs.NextChild(i) )
{
PrivLog(L"changed dir: ", -1, i->second->url);
ChangePriv(*(i->second), user_id_dir, group_id_dir, priv_dir);

View File

@@ -22,6 +22,7 @@ namespace Fun
Rm::Rm()
{
fun.url = L"rm";
follow_symlinks = false;
}
@@ -35,9 +36,10 @@ bool Rm::HasAccess(const Item & item)
if( item.parent_id == -1 )
{
// rm for the root dir
// only the superuser can do it
if( !request->session->puser || !request->session->puser->super_user )
// we can only remove the content of the root directory
// and here we check only access the the root dir
// "onlycontent" parameter should be check in post method
if( !system->HasWriteAccess(item) )
return false;
}
else
@@ -72,39 +74,110 @@ return true;
void Rm::RemoveAuthPrepareQuery()
void Rm::Prepare()
{
rm_auth_iq.SetAll(true, false);
content_dir_iq.SetAll(false, false);
content_dir_iq.sel_parent_id = true;
content_dir_iq.sel_type = true;
content_dir_iq.sel_url = true;
content_dir_iq.sel_file = true;
rm_auth_iq.sel_parent_id = true;
rm_auth_iq.sel_type = true;
rm_auth_iq.sel_file = true;
static_iq.SetAll(false, false);
static_iq.sel_parent_id = true;
static_iq.sel_type = true;
static_iq.sel_url = true;
static_iq.sel_file = true;
rm_auth_iq.WhereType(Item::file);
rm_auth_iq.WhereFileType(WINIX_ITEM_FILETYPE_NONE, false);
static_iq.WhereType(Item::file);
static_iq.WhereFileType(WINIX_ITEM_FILETYPE_NONE, false);
}
bool Rm::RemoveStaticFile(const std::wstring & path)
{
if( ::RemoveFile(path) )
{
log << log2 << "Rm: removed static file: " << path << logend;
return true;
}
else
{
log << log1 << "Rm: can't remove a file: " << path << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
void Rm::RemoveStaticFile(Item & item)
{
if( system->MakeFilePath(item, path, false) )
{
if( RemoveStaticFile(path) )
{
if( item.has_thumb && system->MakeFilePath(item, path, true) )
{
RemoveStaticFile(path);
item.has_thumb = false;
}
// we don't store it to db (it will be removed or is removed already)
item.file_path.clear();
item.file_type = WINIX_ITEM_FILETYPE_NONE;
}
}
else
{
request->status = WINIX_ERR_PERMISSION_DENIED;
}
}
void Rm::RemoveAllDirs(long dir_id)
void Rm::RemoveFileOrSymlink(Item & item)
{
DirContainer::ParentIterator pnext, p = system->dirs.FindFirstParent(dir_id);
if( db->DelItem(item) == WINIX_ERR_OK )
{
if( item.type == Item::file )
log << log2 << "Rm: deleted file ";
else
log << log2 << "Rm: deleted symlink ";
log << item.url << logend;
TemplatesFunctions::pattern_cacher.DeletePattern(item);
plugin.Call(WINIX_FILE_REMOVED, item.id);
db->EditThreadRemoveItem(item.parent_id);
if( item.file_type != WINIX_ITEM_FILETYPE_NONE )
RemoveStaticFile(item);
}
else
{
// request->status = WINIX_ERR_NO_ITEM;
}
}
void Rm::RemoveDirTree(long dir_id)
{
DirContainer::ParentIterator pnext, p = system->dirs.FindFirstChild(dir_id);
for( ; p != system->dirs.ParentEnd() ; p = pnext )
{
// this iterator p will be deleted by the next DeleteDir(p->second->id)
// (the next iterator we must calculate beforehand)
pnext = system->dirs.NextParent(p);
RemoveAllDirs(p->second->id);
pnext = system->dirs.NextChild(p);
RemoveDirTree(p->second->id);
}
plugin.Call(WINIX_DIR_PREPARE_TO_REMOVE, dir_id);
rm_auth_iq.WhereParentId(dir_id);
db->GetItems(request->item_tab, rm_auth_iq);
static_iq.WhereParentId(dir_id);
db->GetItems(static_item_tab, static_iq);
for(size_t i=0 ; i<request->item_tab.size() ; ++i)
RemoveStaticFile(request->item_tab[i]);
for(size_t i=0 ; i<static_item_tab.size() ; ++i)
RemoveStaticFile(static_item_tab[i]);
if( db->DelDirById(dir_id) == WINIX_ERR_OK )
{
@@ -117,115 +190,96 @@ void Rm::RemoveAllDirs(long dir_id)
void Rm::RemoveAllDirs()
void Rm::RemoveDir(const Item & dir)
{
RemoveAuthPrepareQuery();
old_url = dir.url;
RemoveDirTree(dir.id);
// this method deletes recursively all directories
RemoveAllDirs(request->dir_tab.back()->id);
request->dir_tab.erase(--request->dir_tab.end());
if( request->dir_tab.empty() )
{
// we have deleted the root directory
system->dirs.CheckRootDir(); // adding a new root dir
Item * proot = system->dirs.GetRootDir();
if( proot )
request->dir_tab.push_back(proot);
else
// there is no a root dir
// CheckRootDir() didn't add the root dir (probably problem with the database)
// make sure that ::Make() will check that the dir_tab is empty and returns
return;
}
system->RedirectToLastDir();
}
void Rm::RemoveDir()
{
if( request->param_tab.empty() )
request->status = WINIX_ERR_PERMISSION_DENIED; // use parameter "r" for removing a directory
else
if( request->IsParam(L"r") )
RemoveAllDirs();
else
request->status = WINIX_ERR_UNKNOWN_PARAM;
}
void Rm::RemoveStaticFile(Item & item)
{
if( item.file_path.empty() )
{
log << log1 << "Rm: can't remove a static file: file_path is empty" << logend;
return;
}
if( !system->MakeFilePath(item, path) )
return;
if( ::RemoveFile(path) )
{
log << log1 << "Rm: removed static file: " << path << logend;
item.file_path.clear();
item.file_type = WINIX_ITEM_FILETYPE_NONE;
// we don't store it to db (will be removed or is removed already)
}
else
{
log << log1 << "Rm: can't remove a file: " << path << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
}
if( request->status == WINIX_ERR_OK )
log << log3 << "Rm: removed directory " << old_url << logend;
}
void Rm::RemoveFile()
{
// for safety we check if param_tab is empty
// a user can use "confirm" but can make a mistake when typing
if( !request->param_tab.empty() )
{
request->status = WINIX_ERR_UNKNOWN_PARAM;
return;
}
RemoveFileOrSymlink(request->item);
if( db->DelItem( request->item ) )
{
log << log2 << "Rm: deleted item: subject: " << request->item.subject << ", id: " << request->item.id << logend;
TemplatesFunctions::pattern_cacher.DeletePattern(request->item);
plugin.Call(WINIX_FILE_REMOVED, request->item.id);
if( system->mounts.pmount->type == system->mounts.MountTypeThread() )
db->EditThreadRemoveItem(request->item.parent_id);
if( request->item.file_type != WINIX_ITEM_FILETYPE_NONE )
RemoveStaticFile(request->item);
}
else
{
request->status = WINIX_ERR_NO_ITEM;
}
system->RedirectToLastDir();
if( request->status == WINIX_ERR_OK )
system->RedirectToLastDir();
}
void Rm::MakeGet()
void Rm::RemoveDirContent()
{
if( request->IsParam(L"confirm") )
return; // show confirmation dialog
if( !request->IsParam(L"r") )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
content_dir_iq.WhereParentId(request->dir_tab.back()->id);
db->GetItems(item_tab, content_dir_iq);
for(size_t i=0 ; i<item_tab.size() ; ++i)
{
if( item_tab[i].type == Item::dir )
RemoveDir(item_tab[i]);
else
RemoveFileOrSymlink(item_tab[i]);
}
if( request->status == WINIX_ERR_OK )
system->RedirectToLastDir();
}
void Rm::RemoveDir()
{
if( !request->IsParam(L"r") || request->dir_tab.size() <= 1 )
{
// we cannot remove the root directory (dir_tab.size()==1)
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
RemoveDir(*request->dir_tab.back());
request->dir_tab.erase(--request->dir_tab.end());
if( request->status == WINIX_ERR_OK )
system->RedirectToLastDir();
}
void Rm::Clear()
{
static_item_tab.clear();
item_tab.clear();
}
void Rm::MakePost()
{
Prepare();
if( request->is_item )
{
RemoveFile();
}
else
RemoveDir();
{
if( request->IsPostVar(L"onlycontent") )
RemoveDirContent();
else
RemoveDir();
}
Clear();
}

View File

@@ -24,19 +24,32 @@ public:
Rm();
bool HasAccess();
void MakeGet();
void MakePost();
private:
DbItemQuery rm_auth_iq;
// for static files
DbItemQuery static_iq;
std::vector<Item> static_item_tab;
std::wstring path;
// for directory content
DbItemQuery content_dir_iq;
std::vector<Item> item_tab;
// for logging
std::wstring old_url;
bool HasAccess(const Item & item);
void RemoveAuthPrepareQuery();
void RemoveAllDirs(long dir_id);
void RemoveAllDirs();
void RemoveDir();
void Prepare();
void Clear();
void RemoveFileOrSymlink(Item & item);
void RemoveDir(const Item & dir);
bool RemoveStaticFile(const std::wstring & path);
void RemoveStaticFile(Item & item);
void RemoveDirTree(long dir_id);
void RemoveDirContent();
void RemoveDir();
void RemoveFile();
};

View File

@@ -66,15 +66,6 @@ return true;
void Upload::CreateThumbnail(const Item & item)
{
if( !system->MakeFilePath(item, path) ||
!system->MakeFilePath(item, path_thumb, true, true, config->upload_dirs_chmod) )
return;
system->thumb.CreateThumb(item.id, path, path_thumb, config->thumb_cx, config->thumb_cy, config->thumb_mode);
}
bool Upload::UploadSaveStaticFile(const Item & item, const std::wstring & tmp_filename)
{
@@ -112,7 +103,7 @@ void Upload::UploadFile(Item & item, const std::wstring & tmp_filename)
request->status = db->EditFileById(item, item.id);
if( item.file_type == WINIX_ITEM_FILETYPE_IMAGE && config->create_thumb )
CreateThumbnail(item);
system->thumb.CreateThumb(item, config->thumb_cx, config->thumb_cy, config->thumb_mode);
}
else
{

View File

@@ -25,17 +25,16 @@ public:
Upload();
bool HasAccess();
void MakePost();
void UploadFile(Item & item, const std::wstring & tmp_filename);
private:
std::wstring path, path_thumb;
std::wstring path;
std::string patha, path_thumba;
bool HasAccess(const Item & item);
void CreateThumbnail(const Item & item);
bool UploadSaveStaticFile(const Item & item, const std::wstring & tmp_filename);
bool FunUploadCheckAbuse();
void UploadFile(Item & item, const std::wstring & tmp_filename);
void UploadMulti();
void UploadSingle();
};