/* * Copyright (C) 2016 Jo-Philipp Wich * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include #include #include "probe.h" #include "libblkid-tiny/libblkid-tiny.h" static struct probe_info * probe_path_tiny(const char *path) { struct probe_info *info = NULL; struct blkid_struct_probe pr = { }; char *type, *dev, *uuid, *label, *version; if (probe_block((char *)path, &pr) == 0 && pr.id && !pr.err) { info = calloc_a(sizeof(*info), &type, strlen(pr.id->name) + 1, &dev, strlen(pr.dev) + 1, &uuid, strlen(pr.uuid) + 1, &label, strlen(pr.label) + 1, &version, strlen(pr.version) + 1); if (info) { info->type = strcpy(type, pr.id->name); if (pr.dev[0]) info->dev = strcpy(dev, pr.dev); if (pr.uuid[0]) info->uuid = strcpy(uuid, pr.uuid); if (pr.label[0]) info->label = strcpy(label, pr.label); if (pr.version[0]) info->version = strcpy(version, pr.version); } } return info; } struct probe_info * probe_path(const char *path) { struct probe_info *info; info = probe_path_tiny(path); if (!info) info = probe_path_libblkid(path); return info; } int make_devs(void) { return mkblkdev(); }