11e642749SÁkos Kovács /* 21e642749SÁkos Kovács * Copyright (c) 2010 The DragonFly Project. All rights reserved. 31e642749SÁkos Kovács * 41e642749SÁkos Kovács * This code is derived from software contributed to The DragonFly Project 51e642749SÁkos Kovács * by Alex Hornung <ahornung@gmail.com> 61e642749SÁkos Kovács * 71e642749SÁkos Kovács * Redistribution and use in source and binary forms, with or without 81e642749SÁkos Kovács * modification, are permitted provided that the following conditions 91e642749SÁkos Kovács * are met: 101e642749SÁkos Kovács * 111e642749SÁkos Kovács * 1. Redistributions of source code must retain the above copyright 121e642749SÁkos Kovács * notice, this list of conditions and the following disclaimer. 131e642749SÁkos Kovács * 2. Redistributions in binary form must reproduce the above copyright 141e642749SÁkos Kovács * notice, this list of conditions and the following disclaimer in 151e642749SÁkos Kovács * the documentation and/or other materials provided with the 161e642749SÁkos Kovács * distribution. 171e642749SÁkos Kovács * 3. Neither the name of The DragonFly Project nor the names of its 181e642749SÁkos Kovács * contributors may be used to endorse or promote products derived 191e642749SÁkos Kovács * from this software without specific, prior written permission. 201e642749SÁkos Kovács * 211e642749SÁkos Kovács * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 221e642749SÁkos Kovács * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 231e642749SÁkos Kovács * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 241e642749SÁkos Kovács * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 251e642749SÁkos Kovács * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 261e642749SÁkos Kovács * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 271e642749SÁkos Kovács * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 281e642749SÁkos Kovács * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 291e642749SÁkos Kovács * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 301e642749SÁkos Kovács * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 311e642749SÁkos Kovács * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 321e642749SÁkos Kovács * SUCH DAMAGE. 331e642749SÁkos Kovács */ 3424cad3d2SSascha Wildner 351e642749SÁkos Kovács #ifndef LIBFSID_H 361e642749SÁkos Kovács #define LIBFSID_H 371e642749SÁkos Kovács 38*3d1a8f11SSascha Wildner #include <sys/param.h> 391e642749SÁkos Kovács #include <sys/uio.h> 4024cad3d2SSascha Wildner 411e642749SÁkos Kovács #include <err.h> 421e642749SÁkos Kovács #include <fcntl.h> 4324cad3d2SSascha Wildner #include <stdio.h> 4424cad3d2SSascha Wildner #include <stdlib.h> 451e642749SÁkos Kovács #include <string.h> 4624cad3d2SSascha Wildner #include <unistd.h> 471e642749SÁkos Kovács 4824cad3d2SSascha Wildner typedef enum { 4924cad3d2SSascha Wildner FSID_UNKNOWN, 5024cad3d2SSascha Wildner FSID_HAMMER, 5124cad3d2SSascha Wildner FSID_UFS, 5224cad3d2SSascha Wildner FSID_CD9660, 5324cad3d2SSascha Wildner FSID_EXT2, 5424cad3d2SSascha Wildner FSID_MSDOSFS 5524cad3d2SSascha Wildner } fsid_t; 561e642749SÁkos Kovács 5724cad3d2SSascha Wildner typedef fsid_t (probe_func_t)(const char *); 581e642749SÁkos Kovács typedef char *(volname_func_t)(const char *); 591e642749SÁkos Kovács 601e642749SÁkos Kovács struct fs_type { 611e642749SÁkos Kovács const char *fs_name; 621e642749SÁkos Kovács probe_func_t *fs_probe; 631e642749SÁkos Kovács volname_func_t *fs_volname; 641e642749SÁkos Kovács }; 651e642749SÁkos Kovács 661e642749SÁkos Kovács probe_func_t hammer_probe; 671e642749SÁkos Kovács probe_func_t ufs_probe; 681e642749SÁkos Kovács probe_func_t cd9660_probe; 691e642749SÁkos Kovács probe_func_t ext2_probe; 701e642749SÁkos Kovács probe_func_t msdosfs_probe; 711e642749SÁkos Kovács 721e642749SÁkos Kovács volname_func_t hammer_volname; 731e642749SÁkos Kovács volname_func_t ufs_volname; 741e642749SÁkos Kovács volname_func_t cd9660_volname; 751e642749SÁkos Kovács volname_func_t ext2_volname; 761e642749SÁkos Kovács volname_func_t msdosfs_volname; 771e642749SÁkos Kovács 7824cad3d2SSascha Wildner fsid_t fsid_probe(const char *dev, const char *fs_name); 7924cad3d2SSascha Wildner fsid_t fsid_probe_all(const char *dev); 801e642749SÁkos Kovács 8124cad3d2SSascha Wildner char *fsid_volname(const char *dev, const char *fs_name); 821e642749SÁkos Kovács char *fsid_volname_all(const char *dev); 831e642749SÁkos Kovács 841e642749SÁkos Kovács /* Extra functions */ 8524cad3d2SSascha Wildner const char *fsid_fsname(fsid_t); 861e642749SÁkos Kovács int fsid_fs_count(void); 871e642749SÁkos Kovács 881e642749SÁkos Kovács #ifdef _FSID_INTERNAL 891e642749SÁkos Kovács int fsid_dev_read(const char *dev, off_t off, size_t len, char *buf); 901e642749SÁkos Kovács #endif 9124cad3d2SSascha Wildner 921e642749SÁkos Kovács #endif /* LIBFSID_H */ 93