added a special thread for making thumbnails (thumb.h thumb.cpp)

git-svn-id: svn://ttmath.org/publicrep/winix/trunk@700 e52654a7-88a9-db11-a3e9-0013d4bc506e
pull/3/head
Tomasz Sowa 13 years ago
parent e854fe3681
commit 5d09eb149c

@ -5,7 +5,7 @@ CXX = g++
endif
ifndef CXXFLAGS
CXXFLAGS = -fPIC -Wall -O2 -I/usr/local/include -I/home/tomek/roboczy/winix -I/home/tomek/roboczy/ezc/src -L/usr/local/lib -I/usr/local/include/ImageMagick -DEZC_USE_WINIX_LOGGER
CXXFLAGS = -fPIC -Wall -pedantic -O2 -I/usr/local/include -I/home/tomek/roboczy/winix -I/home/tomek/roboczy/ezc/src -L/usr/local/lib -DEZC_USE_WINIX_LOGGER
endif
@ -28,7 +28,7 @@ winix: FORCE
@cd plugins/stats ; $(MAKE) -e
@cd plugins/ticket ; $(MAKE) -e
@cd ../ezc/src ; $(MAKE) -e
$(CXX) -shared -o winix.so $(CXXFLAGS) core/*.o db/*.o functions/*.o templates/*.o notify/*.o ../ezc/src/ezc.a -lfcgi -lpq -lz -lpthread -lfetch `MagickWand-config --ldflags --libs`
$(CXX) -shared -o winix.so $(CXXFLAGS) core/*.o db/*.o functions/*.o templates/*.o notify/*.o ../ezc/src/ezc.a -lfcgi -lpq -lz -lpthread -lfetch
@cd main ; $(MAKE) -e
# use the full path with winix.so
$(CXX) -o winix $(CXXFLAGS) main/*.o /home/tomek/roboczy/winix/winix.so

@ -17,10 +17,10 @@ app.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
app.o: ../notify/notifythread.h ../core/basethread.h synchro.h
app.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h
app.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h users.h
app.o: groups.h group.h loadavg.h sessionmanager.h sessioncontainer.h
app.o: basethread.h ../functions/functions.h ../functions/functionbase.h
app.o: ../core/request.h ../core/system.h ../core/synchro.h
app.o: ../functions/functionparser.h ../functions/adduser.h
app.o: groups.h group.h loadavg.h thumb.h basethread.h sessionmanager.h
app.o: sessioncontainer.h ../functions/functions.h
app.o: ../functions/functionbase.h ../core/request.h ../core/system.h
app.o: ../core/synchro.h ../functions/functionparser.h ../functions/adduser.h
app.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h
app.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h
app.o: ../functions/createthread.h ../functions/default.h
@ -59,7 +59,7 @@ config.o: ../templates/htmltextstream.h ../notify/notifythread.h
config.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
config.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h
config.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h
config.o: sessionmanager.h sessioncontainer.h basethread.h
config.o: thumb.h basethread.h sessionmanager.h sessioncontainer.h
config.o: ../functions/functions.h ../functions/functionbase.h
config.o: ../core/request.h ../core/system.h ../core/synchro.h
config.o: ../functions/functionparser.h ../functions/adduser.h
@ -157,12 +157,13 @@ mounts.o: ../templates/htmltextstream.h ../notify/notifythread.h
mounts.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
mounts.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h
mounts.o: mountparser.h plugin.h pluginmsg.h system.h users.h groups.h
mounts.o: group.h loadavg.h sessionmanager.h sessioncontainer.h basethread.h
mounts.o: ../functions/functions.h ../functions/functionbase.h
mounts.o: ../core/request.h ../core/system.h ../core/synchro.h
mounts.o: ../functions/functionparser.h ../functions/adduser.h
mounts.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h
mounts.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h
mounts.o: group.h loadavg.h thumb.h basethread.h sessionmanager.h
mounts.o: sessioncontainer.h ../functions/functions.h
mounts.o: ../functions/functionbase.h ../core/request.h ../core/system.h
mounts.o: ../core/synchro.h ../functions/functionparser.h
mounts.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h
mounts.o: ../functions/privchanger.h ../functions/chown.h
mounts.o: ../functions/ckeditor.h ../functions/cp.h
mounts.o: ../functions/createthread.h ../functions/default.h
mounts.o: ../functions/download.h ../functions/emacs.h ../functions/last.h
mounts.o: ../functions/login.h ../functions/logout.h ../functions/ls.h
@ -194,7 +195,7 @@ plugin.o: ../templates/htmltextstream.h ../notify/notifythread.h
plugin.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
plugin.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h
plugin.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h
plugin.o: sessionmanager.h sessioncontainer.h basethread.h
plugin.o: thumb.h basethread.h sessionmanager.h sessioncontainer.h
plugin.o: ../functions/functions.h ../functions/functionbase.h
plugin.o: ../core/request.h ../core/system.h ../core/synchro.h
plugin.o: ../functions/functionparser.h ../functions/adduser.h
@ -231,8 +232,8 @@ plugindata.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
plugindata.o: ../notify/notifythread.h ../core/basethread.h synchro.h
plugindata.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h
plugindata.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h
plugindata.o: users.h groups.h group.h loadavg.h sessionmanager.h
plugindata.o: sessioncontainer.h basethread.h ../functions/functions.h
plugindata.o: users.h groups.h group.h loadavg.h thumb.h basethread.h
plugindata.o: sessionmanager.h sessioncontainer.h ../functions/functions.h
plugindata.o: ../functions/functionbase.h ../core/request.h ../core/system.h
plugindata.o: ../core/synchro.h ../functions/functionparser.h
plugindata.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h
@ -277,7 +278,7 @@ request.o: ../templates/htmltextstream.h ../notify/notifythread.h
request.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
request.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h
request.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h
request.o: sessionmanager.h sessioncontainer.h basethread.h
request.o: thumb.h basethread.h sessionmanager.h sessioncontainer.h
request.o: ../functions/functions.h ../functions/functionbase.h
request.o: ../core/request.h ../core/system.h ../core/synchro.h
request.o: ../functions/functionparser.h ../functions/adduser.h
@ -324,7 +325,7 @@ sessionmanager.o: ../templates/htmltextstream.h ../notify/notifythread.h
sessionmanager.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
sessionmanager.o: ../core/config.h ../core/users.h ugcontainer.h mounts.h
sessionmanager.o: mount.h mountparser.h users.h groups.h group.h loadavg.h
sessionmanager.o: sessionparser.h plugin.h pluginmsg.h
sessionmanager.o: thumb.h sessionparser.h plugin.h pluginmsg.h
sessionmanager.o: ../functions/functions.h ../functions/functionbase.h
sessionmanager.o: ../core/request.h ../core/system.h ../core/synchro.h
sessionmanager.o: ../functions/functionparser.h ../functions/adduser.h
@ -370,10 +371,16 @@ system.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
system.o: ../notify/notifythread.h ../core/basethread.h synchro.h
system.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h
system.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h
system.o: users.h groups.h group.h loadavg.h ../templates/templates.h
system.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
system.o: ../core/httpsimpleparser.h ../core/log.h
system.o: ../templates/indexpatterns.h ../core/request.h ../core/system.h
system.o: ../core/sessionmanager.h
system.o: users.h groups.h group.h loadavg.h thumb.h basethread.h
system.o: ../templates/templates.h ../templates/patterncacher.h
system.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
system.o: ../core/log.h ../templates/indexpatterns.h ../core/request.h
system.o: ../core/system.h ../core/sessionmanager.h
textstream.o: textstream.h misc.h item.h
thumb.o: thumb.h basethread.h textstream.h ../db/db.h ../db/dbbase.h
thumb.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h
thumb.o: item.h ../core/error.h log.h ../db/dbitemquery.h ../core/item.h
thumb.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h
thumb.o: ../core/thread.h ../core/dircontainer.h ../core/ugcontainer.h
thumb.o: ../../ezc/src/utf8.h
users.o: users.h

@ -1 +1 @@
o = acceptbaseparser.o app.o basethread.o bbcodeparser.o compress.o config.o confparser.o dircontainer.o dirs.o groups.o htmlfilter.o httpsimpleparser.o item.o lastcontainer.o loadavg.o log.o misc.o mount.o mountparser.o mounts.o plugin.o plugindata.o postmultiparser.o rebus.o request.o session.o sessioncontainer.o sessionmanager.o sessionparser.o synchro.o system.o textstream.o users.o
o = acceptbaseparser.o app.o basethread.o bbcodeparser.o compress.o config.o confparser.o dircontainer.o dirs.o groups.o htmlfilter.o httpsimpleparser.o item.o lastcontainer.o loadavg.o log.o misc.o mount.o mountparser.o mounts.o plugin.o plugindata.o postmultiparser.o rebus.o request.o session.o sessioncontainer.o sessionmanager.o sessionparser.o synchro.o system.o textstream.o thumb.o users.o

@ -7,7 +7,6 @@
*
*/
#include "wand/MagickWand.h"
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
@ -147,7 +146,6 @@ bool App::Init()
session_manager.LoadSessions();
CreateStaticTree();
MagickWandGenesis();
plugin.Call(WINIX_PLUGIN_INIT);
@ -155,12 +153,6 @@ return true;
}
void App::Uninit()
{
MagickWandTerminus();
}
void App::Close()
{
@ -984,6 +976,7 @@ void App::WaitForThreads()
system.notify.WaitForThread();
session_manager.WaitForGC();
system.thumb.WaitForThread();
}
@ -1019,6 +1012,7 @@ sigset_t set;
Ezc::WideToUTF8(app->config.base_url, app->url_to_fetch_on_exit);
app->system.notify.PrepareToStopThread();
app->session_manager.PrepareToStopGC();
app->system.thumb.WakeUpThread();
app->Unlock();
// this thread will hang on this method
@ -1051,6 +1045,9 @@ sigset_t set;
// gc for sessions
session_manager.StartGC();
// thumbnails
system.thumb.StartThread();
}

@ -49,7 +49,6 @@ public:
bool InitFCGI();
bool DropPrivileges();
bool Init();
void Uninit();
void Start();
void Close();
void LogUserGroups();

@ -17,6 +17,7 @@ BaseThread::BaseThread() : thread_signal(PTHREAD_COND_INITIALIZER)
synchro = 0;
thread_id = 0;
work_mode = 0;
wake_up_was_called = false;
}
@ -91,6 +92,8 @@ bool BaseThread::BaseSignalReceived()
{
bool make_do = false;
wake_up_was_called = false;
try
{
make_do = SignalReceived(); // your short-time virtual method (objects are locked)
@ -119,13 +122,18 @@ void BaseThread::BaseDo()
// use it with Lock and Unlock
bool BaseThread::WaitForSignal()
{
if( synchro->was_stop_signal || wake_up_was_called )
return true;
return pthread_cond_wait(&thread_signal, &synchro->mutex) == 0;
}
// you should use this method with: synchro->Lock() and Unlock()
void BaseThread::WakeUpThread()
{
// you should use it with: synchro->Lock() and Unlock()
wake_up_was_called = true;
pthread_cond_signal(&thread_signal);
}
@ -168,14 +176,14 @@ bool make_do;
{
make_do = false;
if( !synchro->was_stop_signal && WaitForSignal() ) // automatically unlock, wait and lock again when signal comes
if( WaitForSignal() ) // automatically unlock, wait and lock again when signal comes
if( !synchro->was_stop_signal )
make_do = BaseSignalReceived(); // your short-time virtual method will be called (objects locked)
make_do = BaseSignalReceived(); // your short-time virtual method will be called (objects locked)
Unlock(); // unlocking from WaitForSignal()
Unlock(); // unlocking from WaitForSignal()
if( make_do )
BaseDo(); // your long-time virtual method will be called (objects *not* locked)
BaseDo(); // your long-time virtual method will be called (objects *not* locked)
}
}
while( !IsExitSignal() );

@ -63,6 +63,10 @@ public:
// it's called only if Init() returned true
virtual void Uninit() {}
protected:
// signal came (work mode = 0 - default)
// signal comes when an other thread calls WakeUpThread() method
// check specific job and return true to call Do() next
@ -81,12 +85,15 @@ public:
virtual void Work() {}
protected:
Synchro * synchro;
pthread_t thread_id; // thread id - set by StartThread()
pthread_cond_t thread_signal;
int work_mode;
bool wake_up_was_called;
void SignalLoop();
static void * StartRoutine(void *);

@ -113,9 +113,11 @@ void Config::AssignValues(bool stdout_is_closed)
upload_dir = Text(L"upload_dir");
upload_dirs_chmod = Int(L"upload_dirs_chmod", 0750);
upload_files_chmod = Int(L"upload_files_chmod", 0640);
create_thumb = Bool(L"create_thumb", false); // !! will be true
create_thumb = Bool(L"create_thumb", true);
thumb_mode = Int(L"thumb_mode", 2);
thumb_cx = Size(L"thumb_cx", 150);
thumb_cy = Size(L"thumb_cy", 150);
convert_cmd = Text(L"convert_cmd", L"/usr/local/bin/convert");
templates_dir = Text(L"templates_dir");
templates_dir_default = Text(L"templates_dir_default");

@ -198,9 +198,21 @@ public:
int upload_files_chmod;
// create a thumbnail from an image
// default: false (!!will be true)
// default: true
bool create_thumb;
// the mode of creating a thumbnail
// width means thumb_cx, height means thumb_cy
// 1: Width given, height automagically selected to preserve aspect ratio.
// 2: Height given, width automagically selected to preserve aspect ratio.
// 3: Maximum values of height and width given, aspect ratio preserved.
// 4: Minimum values of width and height given, aspect ratio preserved.
// 5: Width and height emphatically given, original aspect ratio ignored.
// 6: Change as per widthxheight (3) but only if an image dimension exceeds a specified dimension.
// 7: Change dimensions only if both image dimensions are less than specified dimensions.
// default: 2
int thumb_mode;
// width of thumbnails
// default: 150
size_t thumb_cx;
@ -209,6 +221,10 @@ public:
// default: 150
size_t thumb_cy;
// the convert program
// default: /usr/local/bin/convert
std::wstring convert_cmd;
// locale: en, pl
// default: en
std::wstring locale_str;

@ -58,6 +58,8 @@ void Item::Clear()
file_fs = -1;
file_type = WINIX_ITEM_FILETYPE_NONE;
has_thumb = false;
html_template.clear();
SetDateToNow();

@ -69,28 +69,12 @@ Type type;
long default_item;
// external static file authorized by winix
/*
enum Auth
{
auth_none = 0, // there is not an external file
auth_image = 1, // png, gif, jpg - only types available to render by a web browser
auth_document = 2, // pdf doc xls txt
auth_other = 3 // other file
};
Auth auth;
std::wstring auth_path; // path to a file (if auth!=auth_none)
*/
// static file (if exists)
std::wstring file_path; // relative file path
int file_fs; // file system type where the file was saved
int file_type; // file type (none, image, doc, etc)
bool has_thumb;
std::wstring html_template;

@ -903,3 +903,4 @@ tm Time(time_t par)
return res;
}

@ -67,6 +67,10 @@ void System::Init()
notify.SetUsers(&users);
notify.SetDirs(&dirs);
notify.Init();
thumb.SetSynchro(synchro);
thumb.SetConvertCmd(config->convert_cmd);
thumb.SetDb(db);
}

@ -21,6 +21,7 @@
#include "rebus.h"
#include "loadavg.h"
#include "synchro.h"
#include "thumb.h"
#include "notify/notify.h"
@ -52,6 +53,9 @@ public:
// notifications (by emails)
Notify notify;
// thumbnails (special thread)
Thumb thumb;
// the time when the winix starts
time_t system_start;

@ -0,0 +1,228 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#include "thumb.h"
#include "utf8.h"
#include "log.h"
void Thumb::SetConvertCmd(const std::wstring & cmd)
{
convert_cmd = cmd;
}
void Thumb::SetDb(Db * pdb)
{
db = pdb;
}
// first thread (objects locked)
void Thumb::CreateThumb(long item_id, const std::wstring & source, const std::wstring & dst, size_t cx, size_t cy, int aspect_mode)
{
item_temp.item_id = item_id;
item_temp.source = source;
item_temp.dst = dst;
item_temp.cx = cx;
item_temp.cy = cy;
item_temp.aspect_mode = aspect_mode;
thumb_tab.insert(thumb_tab.end(), item_temp);
WakeUpThread();
}
// second thread (objects locked)
bool Thumb::SignalReceived()
{
return !thumb_tab.empty();
}
// second thread (objects not locked)
void Thumb::Do()
{
ThumbTab::iterator i;
bool end;
Lock();
i = thumb_tab.begin();
Unlock();
do
{
Lock();
if( i != thumb_tab.end() )
{
item_work = *i;
thumb_tab.erase(i++);
end = false;
}
else
{
end = true;
}
Unlock();
if( !end )
CreateThumbnail();
}
while( !end );
}
void Thumb::EscapePath(const std::string & path)
{
command << '"';
for(size_t i=0 ; i<path.size() ; ++i)
{
if( path[i] == '"' )
command << '\\';
command << path[i];
}
command << "\" ";
}
/*
from: http://www.imagemagick.org/script/command-line-processing.php#geometry
scale% Height and width both scaled by specified percentage.
scale-x%xscale-y% Height and width individually scaled by specified percentages. (Only one % symbol needed.)
width Width given, height automagically selected to preserve aspect ratio.
xheight Height given, width automagically selected to preserve aspect ratio.
widthxheight Maximum values of height and width given, aspect ratio preserved.
widthxheight^ Minimum values of width and height given, aspect ratio preserved.
widthxheight! Width and height emphatically given, original aspect ratio ignored.
widthxheight> Change as per widthxheight but only if an image dimension exceeds a specified dimension.
widthxheight< Change dimensions only if both image dimensions exceed specified dimensions.
*/
void Thumb::SelectAspect()
{
switch( item_work.aspect_mode )
{
case WINIX_THUMB_MODE_1:
command << item_work.cx;
break;
case WINIX_THUMB_MODE_3:
command << item_work.cx << "x" << item_work.cy;
break;
case WINIX_THUMB_MODE_4:
command << '"' << item_work.cx << "x" << item_work.cy << "^\"";
break;
case WINIX_THUMB_MODE_5:
command << '"' << item_work.cx << "x" << item_work.cy << "!\"";
break;
case WINIX_THUMB_MODE_6:
command << '"' << item_work.cx << "x" << item_work.cy << ">\"";
break;
case WINIX_THUMB_MODE_7:
command << '"' << item_work.cx << "x" << item_work.cy << "<\"";
break;
case WINIX_THUMB_MODE_2:
default:
command << "x" << item_work.cy;
break;
}
}
// second thread (objects are not locked)
void Thumb::CreateThumbnail()
{
command.Clear();
Ezc::WideToUTF8(convert_cmd, tempa);
command << tempa << " -quiet -strip -thumbnail ";
SelectAspect();
command << " ";
Ezc::WideToUTF8(item_work.source, tempa);
EscapePath(tempa);
Ezc::WideToUTF8(item_work.dst, tempa);
EscapePath(tempa);
if( system(command.CStr()) == 0 )
{
Lock();
log << log3 << "Thumb: created a thumbnail: " << tempa << logend;
db->EditHasThumbById(true, item_work.item_id);
Unlock();
}
else
{
Lock();
log << log3 << "Thumb: some problems with creating a thumbnail: " << tempa << logend;
Unlock();
}
}
// second thread (objects are not locked)
// !! there is a problem with GIF files
// Bus error (core dumped)
/*
#include "wand/MagickWand.h"
// compiler options:
// include: -I/usr/local/include/ImageMagick
// link with: `MagickWand-config --ldflags --libs`
void Thumb::CreateThumbnail()
{
Ezc::WideToUTF8(item_work.source, sourcea);
Ezc::WideToUTF8(item_work.dst, dsta);
MagickWandGenesis();
MagickWand * wand = NewMagickWand();
if( MagickReadImage(wand, sourcea.c_str()) )
{
MagickThumbnailImage(wand, item_work.cx, item_work.cy);
if( MagickWriteImage(wand, dsta.c_str()) )
{
Lock();
log << log3 << "Thumb: created a thumbnail: " << dsta << logend;
Unlock();
}
}
DestroyMagickWand(wand);
MagickWandTerminus();
}
*/

@ -0,0 +1,90 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#ifndef headerfilecmslucorethumb
#define headerfilecmslucorethumb
#include "basethread.h"
#include <string>
#include <list>
#include "textstream.h"
#include "db/db.h"
// Width given, height automagically selected to preserve aspect ratio.
#define WINIX_THUMB_MODE_1 1
// Height given, width automagically selected to preserve aspect ratio.
#define WINIX_THUMB_MODE_2 2
// Maximum values of height and width given, aspect ratio preserved.
#define WINIX_THUMB_MODE_3 3
// Minimum values of width and height given, aspect ratio preserved.
#define WINIX_THUMB_MODE_4 4
// Width and height emphatically given, original aspect ratio ignored.
#define WINIX_THUMB_MODE_5 5
// Change as per widthxheight but only if an image dimension exceeds a specified dimension.
#define WINIX_THUMB_MODE_6 6
// Change dimensions only if both image dimensions are less than specified dimensions.
#define WINIX_THUMB_MODE_7 7
class Thumb : public BaseThread
{
public:
void CreateThumb(long item_id, const std::wstring & source, const std::wstring & dst,
size_t cx, size_t cy, int aspect_mode = WINIX_THUMB_MODE_2);
void SetConvertCmd(const std::wstring & cmd);
void SetDb(Db * pdb);
private:
Db * db;
struct ThumbItem
{
long item_id;
std::wstring source;
std::wstring dst;
size_t cx;
size_t cy;
int aspect_mode;
};
// queue of thumbnails to create
typedef std::list<ThumbItem> ThumbTab;
ThumbTab thumb_tab;
ThumbItem item_temp;
// this is set before the second thread starts
std::wstring convert_cmd;
// only for second thread
ThumbItem item_work;
std::string tempa;
TextStream<std::string> command;
virtual bool SignalReceived();
virtual void Do();
void CreateThumbnail();
void SelectAspect();
void EscapePath(const std::string & path);
};
#endif

@ -240,7 +240,7 @@ Error Db::AddItemIntoItem(Item & item)
query.Clear();
query << R("insert into core.item (user_id, modification_user_id, group_id, privileges, "
"date_creation, date_modification, type, parent_id, content_id, file_path, file_fs, file_type, "
"default_item, subject, guest_name, template, url) values (")
"has_thumb, default_item, subject, guest_name, template, url) values (")
<< item.user_id
<< item.modification_user_id
<< item.group_id
@ -253,6 +253,7 @@ Error Db::AddItemIntoItem(Item & item)
<< item.file_path
<< item.file_fs
<< item.file_type
<< static_cast<int>(item.has_thumb)
<< item.default_item
<< item.subject
<< item.guest_name
@ -347,7 +348,7 @@ Error Db::EditItemInItem(Item & item, bool with_url)
query.Clear();
query << R("update core.item set (user_id, modification_user_id, group_id, privileges, "
"date_creation, date_modification, type, default_item, parent_id, subject, "
"guest_name, file_path, file_fs, file_type, template");
"guest_name, file_path, file_fs, file_type, has_thumb, template");
if( with_url )
query << R(", url");
@ -367,6 +368,7 @@ Error Db::EditItemInItem(Item & item, bool with_url)
<< item.file_path
<< item.file_fs
<< item.file_type
<< static_cast<int>(item.has_thumb)
<< item.html_template;
if( with_url )
@ -628,7 +630,7 @@ PGresult * Db::GetItemsQuery(const DbItemQuery & iq, bool skip_other_sel)
if( iq.sel_url ) query << R(" ,url");
if( iq.sel_type ) query << R(" ,type");
if( iq.sel_default_item ) query << R(" ,default_item");
if( iq.sel_file ) query << R(" ,file_path, file_fs, file_type");
if( iq.sel_file ) query << R(" ,file_path, file_fs, file_type, has_thumb");
if( iq.sel_html_template ) query << R(" ,template");
}
@ -1040,7 +1042,7 @@ return result;
Error Db::EditFileById(Item & item, long id)
Error Db::EditFileById(const Item & item, long id)
{
PGresult * r = 0;
Error result = WINIX_ERR_OK;
@ -1048,10 +1050,11 @@ Error Db::EditFileById(Item & item, long id)
try
{
query.Clear();
query << R("update core.item set (file_path, file_fs, file_type) = (")
query << R("update core.item set (file_path, file_fs, file_type, has_thumb) = (")
<< item.file_path
<< item.file_fs
<< item.file_type
<< static_cast<int>(item.has_thumb)
<< R(") where id=") << id << R(";");
r = AssertQuery(query);
@ -1069,6 +1072,34 @@ return result;
Error Db::EditHasThumbById(bool has_thumb, long id)
{
PGresult * r = 0;
Error result = WINIX_ERR_OK;
try
{
query.Clear();
query << R("update core.item set (has_thumb) = (")
<< static_cast<int>(has_thumb)
<< R(") where id=") << id << R(";");
r = AssertQuery(query);
AssertResult(r, PGRES_COMMAND_OK);
}
catch(const Error & e)
{
result = e;
}
ClearResult(r);
return result;
}
Error Db::DelDirById(long id)
{
Error result = WINIX_ERR_OK;

@ -63,7 +63,8 @@ public:
bool GetPriv(Item & item, long id);
Error EditPrivById(Item & item, long id);
Error EditParentUrlById(Item & item, long id);
Error EditFileById(Item & item, long id); // file_path, file_fs, file_type
Error EditFileById(const Item & item, long id); // file_path, file_fs, file_type
Error EditHasThumbById(bool has_thumb, long id);
Error DelDirById(long id);
Error EditSubjectById(Item & item, long id);

@ -168,6 +168,11 @@ int DbBase::AssertValueInt(PGresult * r, int row, int col)
}
bool DbBase::AssertValueBool(PGresult * r, int row, int col)
{
return strtol( AssertValue(r, row, col), 0, 10 ) != 0;
}
unsigned long DbBase::AssertValueULong(PGresult * r, int row, int col)
{

@ -41,6 +41,7 @@ public:
static void AssertValueWide(PGresult * r, int row, int col, std::wstring & result);
static long AssertValueLong(PGresult * r, int row, int col);
static int AssertValueInt(PGresult * r, int row, int col);
static bool AssertValueBool(PGresult * r, int row, int col);
static unsigned long AssertValueULong(PGresult * r, int row, int col);
static unsigned int AssertValueUInt(PGresult * r, int row, int col);
static tm AssertValueTm(PGresult * r, int row, int col);

@ -35,6 +35,7 @@ void DbItemColumns::SetColumns(PGresult * r)
file_path = PQfnumber(r, "file_path");
file_fs = PQfnumber(r, "file_fs");
file_type = PQfnumber(r, "file_type");
has_thumb = PQfnumber(r, "has_thumb");
}
@ -61,6 +62,7 @@ void DbItemColumns::SetItem(PGresult * r, long row, Item & item)
if( file_path != -1 ) item.file_path = DbBase::AssertValueWide(r, row, file_path);
if( file_fs != -1 ) item.file_fs = DbBase::AssertValueInt(r, row, file_fs);
if( file_type != -1 ) item.file_type = DbBase::AssertValueInt(r, row, file_type);
if( has_thumb != -1 ) item.has_thumb = DbBase::AssertValueBool(r, row, has_thumb);
}

@ -39,7 +39,8 @@ struct DbItemColumns
int file_path;
int file_fs;
int file_type;
int has_thumb;
void SetColumns(PGresult * r);
void SetItem(PGresult * r, long row, Item & item);
};

@ -30,7 +30,7 @@ struct DbItemQuery
bool sel_url; // url
bool sel_type; // type (dir, file, none)
bool sel_default_item; // default_item
bool sel_file; // file_path, file_fs, file_type
bool sel_file; // file_path, file_fs, file_type, has_thumb
bool sel_html_template; // template
bool where_id; //

@ -26,7 +26,8 @@ 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/synchro.h
adduser.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
adduser.o: ../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
@ -51,7 +52,8 @@ 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/synchro.h
cat.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
cat.o: ../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
@ -77,7 +79,8 @@ 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/synchro.h
chmod.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
chmod.o: ../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
@ -103,7 +106,8 @@ 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/synchro.h
chown.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
chown.o: ../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
@ -132,7 +136,8 @@ ckeditor.o: ../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
ckeditor.o: ../core/group.h ../core/loadavg.h ../core/synchro.h
ckeditor.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
ckeditor.o: ../core/basethread.h ../core/synchro.h
cp.o: cp.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
cp.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h ../core/misc.h
cp.o: ../core/item.h ../core/error.h ../core/log.h ../core/textstream.h
@ -157,7 +162,8 @@ 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/synchro.h ../core/misc.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
@ -188,7 +194,8 @@ createthread.o: ../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/synchro.h
createthread.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
createthread.o: ../core/synchro.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
@ -215,7 +222,8 @@ default.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
default.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
default.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
default.o: ../core/mountparser.h ../core/users.h ../core/groups.h
default.o: ../core/group.h ../core/loadavg.h ../core/synchro.h
default.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
default.o: ../core/basethread.h ../core/synchro.h
download.o: download.h functionbase.h ../core/item.h ../db/db.h
download.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
download.o: ../core/textstream.h ../core/misc.h ../core/item.h
@ -244,7 +252,8 @@ download.o: ../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
download.o: ../core/group.h ../core/loadavg.h ../core/synchro.h
download.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
download.o: ../core/basethread.h ../core/synchro.h
emacs.o: emacs.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
emacs.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
emacs.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@ -270,11 +279,12 @@ 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/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/basethread.h ../core/system.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: ../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
functionbase.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@ -304,7 +314,8 @@ functionbase.o: ../notify/templatesnotify.h ../core/users.h
functionbase.o: ../core/ugcontainer.h ../core/lastcontainer.h
functionbase.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
functionbase.o: ../core/users.h ../core/groups.h ../core/group.h
functionbase.o: ../core/loadavg.h ../core/synchro.h
functionbase.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
functionbase.o: ../core/synchro.h
functionparser.o: functionparser.h ../core/request.h ../core/requesttypes.h
functionparser.o: ../core/session.h ../core/item.h ../core/error.h
functionparser.o: ../core/user.h ../core/plugindata.h ../core/rebus.h
@ -335,7 +346,8 @@ functionparser.o: ../core/synchro.h ../notify/templatesnotify.h
functionparser.o: ../core/users.h ../core/ugcontainer.h
functionparser.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
functionparser.o: ../core/mountparser.h ../core/users.h ../core/groups.h
functionparser.o: ../core/group.h ../core/loadavg.h ../core/log.h
functionparser.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
functionparser.o: ../core/basethread.h ../core/log.h
functions.o: functions.h functionbase.h ../core/item.h ../db/db.h
functions.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
functions.o: ../core/textstream.h ../core/misc.h ../core/item.h
@ -359,15 +371,15 @@ functions.o: ../notify/templatesnotify.h ../core/users.h
functions.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h
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/synchro.h functionparser.h adduser.h cat.h chmod.h
functions.o: privchanger.h chown.h ckeditor.h cp.h createthread.h default.h
functions.o: download.h emacs.h last.h login.h logout.h ls.h mkdir.h mv.h
functions.o: node.h priv.h reload.h rm.h run.h specialdefault.h stat.h
functions.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
functions.o: 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 ../core/basethread.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
@ -401,7 +413,7 @@ 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/synchro.h
funthread.o: ../core/thumb.h ../core/basethread.h ../core/synchro.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
@ -427,7 +439,8 @@ 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/synchro.h
last.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
last.o: ../core/basethread.h ../core/synchro.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
@ -453,7 +466,8 @@ 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/synchro.h
login.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
login.o: ../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
@ -480,7 +494,7 @@ 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/synchro.h
logout.o: ../core/thumb.h ../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
@ -505,7 +519,8 @@ 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/synchro.h
ls.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
ls.o: ../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
@ -531,7 +546,8 @@ 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/synchro.h
mkdir.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
mkdir.o: ../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
@ -556,7 +572,8 @@ 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/synchro.h
mv.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
mv.o: ../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
@ -582,7 +599,8 @@ 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/synchro.h
node.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
node.o: ../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
@ -608,7 +626,8 @@ 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/synchro.h
priv.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
priv.o: ../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
@ -639,6 +658,7 @@ privchanger.o: ../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
privchanger.o: ../core/thumb.h ../core/basethread.h
reload.o: reload.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
reload.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
reload.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h
@ -665,11 +685,11 @@ 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/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/basethread.h ../core/system.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: ../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
rm.o: ../core/item.h ../core/error.h ../core/log.h ../core/textstream.h
@ -694,9 +714,9 @@ 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/synchro.h ../core/plugin.h
rm.o: ../core/pluginmsg.h ../core/system.h ../core/sessionmanager.h
rm.o: ../core/sessioncontainer.h ../core/basethread.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
@ -725,7 +745,8 @@ 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/synchro.h
run.o: ../core/loadavg.h ../core/thumb.h ../core/basethread.h
run.o: ../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
@ -756,7 +777,8 @@ 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/synchro.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
@ -782,7 +804,8 @@ 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/synchro.h
stat.o: ../core/group.h ../core/loadavg.h ../core/thumb.h
stat.o: ../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
@ -809,7 +832,7 @@ subject.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
subject.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
subject.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h
subject.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
subject.o: ../core/synchro.h
subject.o: ../core/thumb.h ../core/basethread.h ../core/synchro.h
template.o: template.h functionbase.h ../core/item.h ../db/db.h
template.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h