コード例 #1
0
ファイル: resolve.c プロジェクト: Berrrry/util-linux
int main(int argc, char **argv)
{
	char *value;
	blkid_cache cache;

	blkid_init_debug(BLKID_DEBUG_ALL);
	if (argc != 2 && argc != 3) {
		fprintf(stderr, "Usage:\t%s tagname=value\n"
			"\t%s tagname devname\n"
			"Find which device holds a given token or\n"
			"Find what the value of a tag is in a device\n",
			argv[0], argv[0]);
		exit(1);
	}
	if (blkid_get_cache(&cache, "/dev/null") < 0) {
		fprintf(stderr, "Couldn't get blkid cache\n");
		exit(1);
	}

	if (argv[2]) {
		value = blkid_get_tag_value(cache, argv[1], argv[2]);
		printf("%s has tag %s=%s\n", argv[2], argv[1],
		       value ? value : "<missing>");
	} else {
		value = blkid_get_devname(cache, argv[1], NULL);
		printf("%s has tag %s\n", value ? value : "<none>", argv[1]);
	}
	blkid_put_cache(cache);
	return value ? 0 : 1;
}
コード例 #2
0
ファイル: evaluate.c プロジェクト: Romutk/lab3.2n
/**
 * blkid_evaluate_tag:
 * @token: token name (e.g "LABEL" or "UUID")
 * @value: token data
 * @cache: pointer to cache (or NULL when you don't want to re-use the cache)
 *
 * Returns: allocated string with a device name.
 */
char *blkid_evaluate_tag(const char *token, const char *value, blkid_cache *cache)
{
	struct blkid_config *conf = NULL;
	char *t = NULL, *v = NULL;
	char *ret = NULL;
	int i;

	if (!token)
		return NULL;

	if (!cache || !*cache)
		blkid_init_debug(0);

	DBG(DEBUG_EVALUATE,
	    printf("evaluating  %s%s%s\n", token, value ? "=" : "",
		   value ? value : ""));

	if (!value) {
		if (!strchr(token, '=')) {
			ret = blkid_strdup(token);
			goto out;
		}
		blkid_parse_tag_string(token, &t, &v);
		if (!t || !v)
			goto out;
		token = t;
		value = v;
	}

	conf = blkid_read_config(NULL);
	if (!conf)
		goto out;

	for (i = 0; i < conf->nevals; i++) {
		if (conf->eval[i] == BLKID_EVAL_UDEV)
			ret = evaluate_by_udev(token, value, conf->uevent);
		else if (conf->eval[i] == BLKID_EVAL_SCAN)
			ret = evaluate_by_scan(token, value, cache, conf);
		if (ret)
			break;
	}

	DBG(DEBUG_EVALUATE,
	    printf("%s=%s evaluated as %s\n", token, value, ret));
out:
	blkid_free_config(conf);
	free(t);
	free(v);
	return ret;
}
コード例 #3
0
ファイル: devno.c プロジェクト: AntaresOne/MultiROM-TWRP
int main(int argc, char** argv)
{
	char	*devname, *tmp;
	char	diskname[PATH_MAX];
	int	major, minor;
	dev_t	devno, disk_devno;
	const char *errmsg = "Couldn't parse %s: %s\n";

	blkid_init_debug(BLKID_DEBUG_ALL);
	if ((argc != 2) && (argc != 3)) {
		fprintf(stderr, "Usage:\t%s device_number\n\t%s major minor\n"
			"Resolve a device number to a device name\n",
			argv[0], argv[0]);
		exit(1);
	}
	if (argc == 2) {
		devno = strtoul(argv[1], &tmp, 0);
		if (*tmp) {
			fprintf(stderr, errmsg, "device number", argv[1]);
			exit(1);
		}
	} else {
		major = strtoul(argv[1], &tmp, 0);
		if (*tmp) {
			fprintf(stderr, errmsg, "major number", argv[1]);
			exit(1);
		}
		minor = strtoul(argv[2], &tmp, 0);
		if (*tmp) {
			fprintf(stderr, errmsg, "minor number", argv[2]);
			exit(1);
		}
		devno = makedev(major, minor);
	}
	printf("Looking for device 0x%04llx\n", (long long)devno);
	devname = blkid_devno_to_devname(devno);
	free(devname);

	printf("Looking for whole-device for 0x%04llx\n", (long long)devno);
	if (blkid_devno_to_wholedisk(devno, diskname,
				sizeof(diskname), &disk_devno) == 0)
		printf("found devno 0x%04llx as /dev/%s\n", (long long) disk_devno, diskname);

	return 0;
}
コード例 #4
0
ファイル: read.c プロジェクト: Webster-WXH/util-linux
int main(int argc, char**argv)
{
	blkid_cache cache = NULL;
	int ret;

	blkid_init_debug(BLKID_DEBUG_ALL);
	if (argc > 2) {
		fprintf(stderr, "Usage: %s [filename]\n"
			"Test parsing of the cache (filename)\n", argv[0]);
		exit(1);
	}
	if ((ret = blkid_get_cache(&cache, argv[1])) < 0)
		fprintf(stderr, "error %d reading cache file %s\n", ret,
			argv[1] ? argv[1] : blkid_get_cache_filename(NULL));

	blkid_put_cache(cache);

	return ret;
}
コード例 #5
0
ファイル: evaluate.c プロジェクト: Romutk/lab3.2n
int main(int argc, char *argv[])
{
	blkid_cache cache = NULL;
	char *res;

	if (argc < 3) {
		fprintf(stderr, "usage: %s <token> <value>\n", argv[0]);
		return EXIT_FAILURE;
	}

	blkid_init_debug(0);

	res = blkid_evaluate_tag(argv[1], argv[2], &cache);
	if (res)
		printf("%s\n", res);
	if (cache)
		blkid_put_cache(cache);

	return res ? EXIT_SUCCESS : EXIT_FAILURE;
}
コード例 #6
0
ファイル: devno.c プロジェクト: tcdog001/autelan
int main(int argc, char** argv)
{
    char	*devname, *tmp;
    int	major, minor;
    dev_t	devno;
    const char *errmsg = "Couldn't parse %s: %s\n";

    blkid_init_debug(DEBUG_ALL);
    if ((argc != 2) && (argc != 3)) {
        fprintf(stderr, "Usage:\t%s device_number\n\t%s major minor\n"
                "Resolve a device number to a device name\n",
                argv[0], argv[0]);
        exit(1);
    }
    if (argc == 2) {
        devno = strtoul(argv[1], &tmp, 0);
        if (*tmp) {
            fprintf(stderr, errmsg, "device number", argv[1]);
            exit(1);
        }
    } else {
        major = strtoul(argv[1], &tmp, 0);
        if (*tmp) {
            fprintf(stderr, errmsg, "major number", argv[1]);
            exit(1);
        }
        minor = strtoul(argv[2], &tmp, 0);
        if (*tmp) {
            fprintf(stderr, errmsg, "minor number", argv[2]);
            exit(1);
        }
        devno = makedev(major, minor);
    }
    printf("Looking for device 0x%04llx\n", (long long)devno);
    devname = blkid_devno_to_devname(devno);
    free(devname);
    return 0;
}