/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FATBLOCK_H
#define FATBLOCK_H
#include <stdint.h>
#include <sys/types.h>
#include "fdpool.h"
typedef uint64_t offset_t;
typedef enum {
EXTENT_TYPE_BOOT,
EXTENT_TYPE_INFO,
EXTENT_TYPE_FAT,
EXTENT_TYPE_FILE,
EXTENT_TYPE_DIR
} extent_type;
struct extent {
offset_t start;
offset_t len;
extent_type type;
struct extent *next;
};
struct file {
struct extent extent;
char *path;
uint32_t size;
dev_t dev;
ino_t ino;
time_t mtime;
struct pooled_fd pfd;
};
struct dir {
struct extent extent;
char *path;
uint32_t size;
struct fat_dirent *entries;
};
struct fs;
int import_tree(struct fs *fs, char *path);
int fs_read(struct fs *fs, char *buf, offset_t start, offset_t len);
#define MALLOC_FAIL (-41) /* memory allocation failed somewhere. */
#define SKY_IS_FALLING (-42) /* One of the files changed out from under us. */
#endif