aboutsummaryrefslogtreecommitdiff
path: root/src/functionplugger.cpp
blob: c8d3fd2a186227409b0a227fbbd07db03ad14a22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "functionplugger.h"

#include <sys/types.h>
#include <dirent.h>

extern Bu::PluginInfo pluginFunctionDirName;
extern Bu::PluginInfo pluginFunctionDirs;
extern Bu::PluginInfo pluginFunctionExecute;
extern Bu::PluginInfo pluginFunctionExists;
extern Bu::PluginInfo pluginFunctionFileName;
extern Bu::PluginInfo pluginFunctionFiles;
extern Bu::PluginInfo pluginFunctionGetMakeDeps;
extern Bu::PluginInfo pluginFunctionMatches;
extern Bu::PluginInfo pluginFunctionReplace;
extern Bu::PluginInfo pluginFunctionTargets;
extern Bu::PluginInfo pluginFunctionToString;
extern Bu::PluginInfo pluginFunctionUnlink;
extern Bu::PluginInfo pluginFunctionRegEx;

FunctionPlugger::FunctionPlugger()
{
	registerBuiltinPlugin( &pluginFunctionDirName );
	registerBuiltinPlugin( &pluginFunctionDirs );
	registerBuiltinPlugin( &pluginFunctionExecute );
	registerBuiltinPlugin( &pluginFunctionExists );
	registerBuiltinPlugin( &pluginFunctionFileName );
	registerBuiltinPlugin( &pluginFunctionFiles );
	registerBuiltinPlugin( &pluginFunctionGetMakeDeps );
	registerBuiltinPlugin( &pluginFunctionMatches );
	registerBuiltinPlugin( &pluginFunctionReplace );
	registerBuiltinPlugin( &pluginFunctionTargets );
	registerBuiltinPlugin( &pluginFunctionToString );
	registerBuiltinPlugin( &pluginFunctionUnlink );
	registerBuiltinPlugin( &pluginFunctionRegEx );

	DIR *dir = opendir("/usr/lib/build");
	if( !dir )
		return;
	struct dirent *de;
	while( (de = readdir( dir )) )
	{
		if( strncmp("pluginFunction", de->d_name, 15 ) )
			continue;

		Bu::FString sFile("/usr/lib/build/");
		sFile += de->d_name;
		char *s = de->d_name;
		for(; *s && *s != '.'; s++ ) { }
		registerExternalPlugin(
			sFile,
			Bu::FString( de->d_name, (ptrdiff_t)s-(ptrdiff_t)de->d_name )
			);
	}

	closedir( dir );
}

FunctionPlugger::~FunctionPlugger()
{
}