1*1e642749SÁkos Kovács /* 2*1e642749SÁkos Kovács * Copyright (c) 2010 The DragonFly Project. All rights reserved. 3*1e642749SÁkos Kovács * 4*1e642749SÁkos Kovács * This code is derived from software contributed to The DragonFly Project 5*1e642749SÁkos Kovács * by Ákos Kovács <akoskovacs@gmx.com> 6*1e642749SÁkos Kovács * 7*1e642749SÁkos Kovács * Redistribution and use in source and binary forms, with or without 8*1e642749SÁkos Kovács * modification, are permitted provided that the following conditions 9*1e642749SÁkos Kovács * are met: 10*1e642749SÁkos Kovács * 11*1e642749SÁkos Kovács * 1. Redistributions of source code must retain the above copyright 12*1e642749SÁkos Kovács * notice, this list of conditions and the following disclaimer. 13*1e642749SÁkos Kovács * 2. Redistributions in binary form must reproduce the above copyright 14*1e642749SÁkos Kovács * notice, this list of conditions and the following disclaimer in 15*1e642749SÁkos Kovács * the documentation and/or other materials provided with the 16*1e642749SÁkos Kovács * distribution. 17*1e642749SÁkos Kovács * 3. Neither the name of The DragonFly Project nor the names of its 18*1e642749SÁkos Kovács * contributors may be used to endorse or promote products derived 19*1e642749SÁkos Kovács * from this software without specific, prior written permission. 20*1e642749SÁkos Kovács * 21*1e642749SÁkos Kovács * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22*1e642749SÁkos Kovács * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23*1e642749SÁkos Kovács * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24*1e642749SÁkos Kovács * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25*1e642749SÁkos Kovács * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26*1e642749SÁkos Kovács * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 27*1e642749SÁkos Kovács * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28*1e642749SÁkos Kovács * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 29*1e642749SÁkos Kovács * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30*1e642749SÁkos Kovács * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 31*1e642749SÁkos Kovács * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*1e642749SÁkos Kovács * SUCH DAMAGE. 33*1e642749SÁkos Kovács */ 34*1e642749SÁkos Kovács #include "libfsid.h" 35*1e642749SÁkos Kovács #include <vfs/gnu/ext2fs/ext2_fs.h> 36*1e642749SÁkos Kovács #include <vfs/gnu/ext2fs/fs.h> 37*1e642749SÁkos Kovács 38*1e642749SÁkos Kovács static char buffer[sizeof(struct ext2_super_block)*2]; 39*1e642749SÁkos Kovács 40*1e642749SÁkos Kovács int 41*1e642749SÁkos Kovács ext2_probe(const char *dev) 42*1e642749SÁkos Kovács { 43*1e642749SÁkos Kovács static struct ext2_super_block *fs; 44*1e642749SÁkos Kovács 45*1e642749SÁkos Kovács if (fsid_dev_read(dev, SBOFF, sizeof(buffer), buffer) != 0) 46*1e642749SÁkos Kovács return 0; 47*1e642749SÁkos Kovács 48*1e642749SÁkos Kovács fs = (struct ext2_super_block *)&buffer; 49*1e642749SÁkos Kovács 50*1e642749SÁkos Kovács if (fs->s_magic == EXT2_SUPER_MAGIC) 51*1e642749SÁkos Kovács return 1; 52*1e642749SÁkos Kovács 53*1e642749SÁkos Kovács return 0; 54*1e642749SÁkos Kovács } 55*1e642749SÁkos Kovács 56*1e642749SÁkos Kovács char * 57*1e642749SÁkos Kovács ext2_volname(const char *dev) 58*1e642749SÁkos Kovács { 59*1e642749SÁkos Kovács static struct ext2_super_block *fs; 60*1e642749SÁkos Kovács 61*1e642749SÁkos Kovács if (fsid_dev_read(dev, SBOFF, sizeof(buffer), buffer) != 0) 62*1e642749SÁkos Kovács return NULL; 63*1e642749SÁkos Kovács 64*1e642749SÁkos Kovács fs = (struct ext2_super_block *)&buffer; 65*1e642749SÁkos Kovács 66*1e642749SÁkos Kovács if (fs->s_magic != EXT2_SUPER_MAGIC) 67*1e642749SÁkos Kovács return NULL; 68*1e642749SÁkos Kovács 69*1e642749SÁkos Kovács if (fs->s_volume_name[0] == '\0') 70*1e642749SÁkos Kovács return NULL; 71*1e642749SÁkos Kovács 72*1e642749SÁkos Kovács fs->s_volume_name[15] = '\0'; 73*1e642749SÁkos Kovács return fs->s_volume_name; 74*1e642749SÁkos Kovács } 75