xref: /aosp_15_r20/external/libwebsockets/lib/misc/romfs.h (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
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