#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>

static int modprobe(char *module)
{
	char cmdline[PATH_MAX];

	snprintf(cmdline, PATH_MAX, "/sbin/modprobe %s", module);
	return(system(cmdline));
}

int find_device(char *dirname)
{
	struct dirent *ent;
	DIR *dir;
	char path[PATH_MAX];

	snprintf(path, PATH_MAX, "/proc/acpi/%s", dirname);
	dir = opendir(path);
	if(!dir)
		return(0);
	while((ent = readdir(dir)))
	{
		if(strcmp(ent->d_name, ".") && strcmp(ent->d_name, ".."))
		{
			closedir(dir);
			return(1);
		}
	}
	return(0);
}

void check_device(char *module, char *dir)
{
	modprobe(module);
	printf("%s support is ", module);
	if(find_device(dir))
		printf("found\n");
	else
		printf("not found\n");
}

int main()
{
	check_device("battery", "battery");
	check_device("thermal", "thermal_zone");
	check_device("ac", "ac_adapter");
	return(0);
}

