Esempio n. 1
0
const char *fs_uae_plugins_dir(void) {
    static const char *path = NULL;
    if (path == NULL) {
        path = get_default_dir("Plugins", "plugins_dir", NULL,
                "plugins-dir");
    }
    return path;
}
Esempio n. 2
0
int main(int argc, char **argv)
{
	char check_exist=0, quiet=0, remove=0, verbose=0, force=0, list=0;
	prog = basename(argv[0]);
	opterr = 0;
	int c;
	while((c = getopt(argc, argv, "d:efqrvl")) != -1)
	{
		switch(c) {
			case 'd':
				directory = optarg;
				break;
			case 'e':
				check_exist = 1;
			case 'f':
				force = 1;
				break;
			case 'q':
				quiet = 1;
				break;
			case 'r':
				remove = 1;
				break;
			case 'v':
				verbose = 1;
				break;
			case 'l':
				list=1;
				break;
			default:
				usage();
				exit(1);
		}
	}
	if(list) {
		execl("/bin/cat", "/bin/cat", "/proc/modules");
		return 1;
	}
	if(get_uid() && !check_exist) {
		fprintf(stderr, "%s: you must be root to use this program!\n", prog);
		return 1;
	}
	if(remove && check_exist)
	{
		usage();
		exit(1);
	}
	if(!directory) directory = get_default_dir();
	struct stat st;
	if(stat(directory, &st) == -1) {
		if(!quiet) fprintf(stderr, "%s: could not stat module directory %s: %s\n", prog, directory, strerror(errno));
		exit(2);
	}
	char *args=0;
	char *module = argv[optind];
	if(optind+1 < argc)
		args = argv[optind+1];
	if(!module)
	{
		usage();
		exit(1);
	}
	if(verbose && !check_exist && !remove)
		printf("%snsert%s module %s...\n", 
				force ? "Forcing i" : "I",
				force ? "ion of" : "ing",
				module);
	if(remove && verbose)
		printf("Removing module %s...\n", module);
	int ret=0;
	if(remove)
		ret = unload(module, force);
	else if(check_exist)
		ret = check_module_exists(module);
	else
		ret = load(module, args, force);
	if(ret == -1) ret = -errno;
	if(verbose && check_exist && ret)
		printf("Module %s is inserted\n", module);
	
	if(ret && !quiet && !check_exist) {
		if(remove && ret < 0)
			fprintf(stderr, "%s: could not remove module %s: %s\n", 
				prog, module, 
				ret == -EINVAL ? "modules depend on it" : "not loaded");
		if(remove && ret > 0)
			fprintf(stderr, "%s: module %s exit routine returned code %d\n", prog, module, ret);
		if(!remove && ret < 0)
			fprintf(stderr, "%s: could not insert module %s: %s\n", prog, module, strerror(-ret));
		if(!remove && ret > 0)
			fprintf(stderr, "%s: module %s init routine returned code %d\n", prog, module, ret);
	}
	if(check_exist)
		return ret ? 0 : 1;
	
	if(ret < 0) return 4;
	if(ret > 0) return 5;
	return 0;
}