1*1c60b9acSAndroid Build Coastguard Worker /* 2*1c60b9acSAndroid Build Coastguard Worker * Copyright (C) 2017 National Institute of Advanced Industrial Science 3*1c60b9acSAndroid Build Coastguard Worker * and Technology (AIST) 4*1c60b9acSAndroid Build Coastguard Worker * 5*1c60b9acSAndroid Build Coastguard Worker * All rights reserved. 6*1c60b9acSAndroid Build Coastguard Worker * 7*1c60b9acSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 8*1c60b9acSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions are met: 9*1c60b9acSAndroid Build Coastguard Worker * 10*1c60b9acSAndroid Build Coastguard Worker * Redistributions of source code must retain the above copyright notice, this 11*1c60b9acSAndroid Build Coastguard Worker * list of conditions and the following disclaimer. 12*1c60b9acSAndroid Build Coastguard Worker * 13*1c60b9acSAndroid Build Coastguard Worker * Redistributions in binary form must reproduce the above copyright notice, 14*1c60b9acSAndroid Build Coastguard Worker * this list of conditions and the following disclaimer in the documentation 15*1c60b9acSAndroid Build Coastguard Worker * and/or other materials provided with the distribution. 16*1c60b9acSAndroid Build Coastguard Worker * 17*1c60b9acSAndroid Build Coastguard Worker * Neither the name of AIST nor the names of its contributors may be used 18*1c60b9acSAndroid Build Coastguard Worker * to endorse or promote products derived from this software without specific 19*1c60b9acSAndroid Build Coastguard Worker * prior written permission. 20*1c60b9acSAndroid Build Coastguard Worker * 21*1c60b9acSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22*1c60b9acSAndroid Build Coastguard Worker * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23*1c60b9acSAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24*1c60b9acSAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 25*1c60b9acSAndroid Build Coastguard Worker * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26*1c60b9acSAndroid Build Coastguard Worker * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27*1c60b9acSAndroid Build Coastguard Worker * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28*1c60b9acSAndroid Build Coastguard Worker * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29*1c60b9acSAndroid Build Coastguard Worker * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30*1c60b9acSAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31*1c60b9acSAndroid Build Coastguard Worker * POSSIBILITY OF SUCH DAMAGE. 32*1c60b9acSAndroid Build Coastguard Worker */ 33*1c60b9acSAndroid Build Coastguard Worker 34*1c60b9acSAndroid Build Coastguard Worker typedef uint32_t u32_be_t; 35*1c60b9acSAndroid Build Coastguard Worker 36*1c60b9acSAndroid Build Coastguard Worker struct romfs_superblock { 37*1c60b9acSAndroid Build Coastguard Worker u32_be_t magic1; 38*1c60b9acSAndroid Build Coastguard Worker u32_be_t magic2; 39*1c60b9acSAndroid Build Coastguard Worker u32_be_t size; 40*1c60b9acSAndroid Build Coastguard Worker u32_be_t checksum; 41*1c60b9acSAndroid Build Coastguard Worker }; 42*1c60b9acSAndroid Build Coastguard Worker 43*1c60b9acSAndroid Build Coastguard Worker struct romfs_i { 44*1c60b9acSAndroid Build Coastguard Worker u32_be_t next; 45*1c60b9acSAndroid Build Coastguard Worker u32_be_t dir_start; 46*1c60b9acSAndroid Build Coastguard Worker u32_be_t size; 47*1c60b9acSAndroid Build Coastguard Worker u32_be_t checksum; 48*1c60b9acSAndroid Build Coastguard Worker }; 49*1c60b9acSAndroid Build Coastguard Worker 50*1c60b9acSAndroid Build Coastguard Worker enum { 51*1c60b9acSAndroid Build Coastguard Worker RFST_HARDLINK = 0, 52*1c60b9acSAndroid Build Coastguard Worker RFST_DIR = 1, 53*1c60b9acSAndroid Build Coastguard Worker RFST_SYMLINK = 3, 54*1c60b9acSAndroid Build Coastguard Worker }; 55*1c60b9acSAndroid Build Coastguard Worker 56*1c60b9acSAndroid Build Coastguard Worker typedef const struct romfs_i *romfs_inode_t; 57*1c60b9acSAndroid Build Coastguard Worker typedef const struct romfs_superblock *romfs_t; 58*1c60b9acSAndroid Build Coastguard Worker 59*1c60b9acSAndroid Build Coastguard Worker const void * 60*1c60b9acSAndroid Build Coastguard Worker romfs_get_info(romfs_t romfs, const char *path, size_t *len, size_t *csum); 61*1c60b9acSAndroid Build Coastguard Worker size_t 62*1c60b9acSAndroid Build Coastguard Worker romfs_mount_check(romfs_t romfs); 63*1c60b9acSAndroid Build Coastguard Worker 64