Example #1
0
int bdpoll(int argc, char *argv[], char *envp[])
{
	char devnode[FILENAME_MAX];
	const char *devpath;
	bool is_cdrom = false;
	bool support_media_changed = false;
	int opt;

	while ((opt = getopt(argc, argv, "cm")) != -1)
	{
		switch (opt)
		{
			case 'c':
				is_cdrom = true;
				break;
			case 'm':
				support_media_changed = true;
				break;
			default:
				usage(argv[0]);
				return EXIT_FAILURE;
		}
	}

	if (optind == argc)
	{
		usage(argv[0]);
		return EXIT_FAILURE;
	}

	devpath = argv[optind];

	if (!hotplug_devpath_to_devnode(devpath, devnode, sizeof(devnode)))
	{
		err("could not parse devpath");
	}

	for (;;)
	{
		if (poll_for_media(devnode, is_cdrom, support_media_changed))
			bdpoll_notify(devpath);
		sleep(interval_in_seconds);
	}

	return EXIT_SUCCESS;
}
Example #2
0
int bdpoll(int argc, char *argv[], char *envp[])
{
	const char *devname;
	char devnode[1024];
	bool is_cdrom = false;
	bool support_media_changed = false;
	int opt;

	while ((opt = getopt(argc, argv, "cm")) != -1) {
		switch (opt) {
		case 'c':
			is_cdrom = true;
			break;
		case 'm':
			support_media_changed = true;
			break;
		default:
			usage(argv[0]);
			return EXIT_FAILURE;
		}
	}

	if (optind > argc) {
		usage(argv[0]);
		return EXIT_FAILURE;
	}

	devname = argv[optind];
	snprintf(devnode, sizeof(devnode), "/dev/%s", devname);

	daemon(0, 0);

	for (;;) {
		if (poll_for_media(devnode, is_cdrom, support_media_changed))
			bdpoll_notify(devname);
		sleep(interval_in_seconds);
	}

	return EXIT_SUCCESS;
}