aboutsummaryrefslogtreecommitdiff
path: root/src/conditionplugger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/conditionplugger.cpp')
-rw-r--r--src/conditionplugger.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/conditionplugger.cpp b/src/conditionplugger.cpp
new file mode 100644
index 0000000..3edfa00
--- /dev/null
+++ b/src/conditionplugger.cpp
@@ -0,0 +1,43 @@
1#include "conditionplugger.h"
2
3#include <sys/types.h>
4#include <dirent.h>
5
6extern Bu::PluginInfo pluginConditionAlways;
7extern Bu::PluginInfo pluginConditionNever;
8extern Bu::PluginInfo pluginConditionFileTime;
9extern Bu::PluginInfo pluginConditionFileExists;
10
11ConditionPlugger::ConditionPlugger()
12{
13 registerBuiltinPlugin( &pluginConditionAlways );
14 registerBuiltinPlugin( &pluginConditionNever );
15 registerBuiltinPlugin( &pluginConditionFileTime );
16 registerBuiltinPlugin( &pluginConditionFileExists );
17
18 DIR *dir = opendir("/usr/lib/build");
19 if( !dir )
20 return;
21 struct dirent *de;
22 while( (de = readdir( dir )) )
23 {
24 if( strncmp("pluginCondition", de->d_name, 15 ) )
25 continue;
26
27 Bu::FString sFile("/usr/lib/build/");
28 sFile += de->d_name;
29 char *s = de->d_name;
30 for(; *s && *s != '.'; s++ ) { }
31 registerExternalPlugin(
32 sFile,
33 Bu::FString( de->d_name, (ptrdiff_t)s-(ptrdiff_t)de->d_name )
34 );
35 }
36
37 closedir( dir );
38}
39
40ConditionPlugger::~ConditionPlugger()
41{
42}
43