/* libparted - a library for manipulating disk partitions Copyright (C) 1999, 2000, 2001, 2006, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /** * \addtogroup PedFileSystem * @{ */ /** \file filesys.h */ #ifndef PED_FILESYS_H_INCLUDED #define PED_FILESYS_H_INCLUDED typedef struct _PedFileSystem PedFileSystem; typedef struct _PedFileSystemType PedFileSystemType; typedef struct _PedFileSystemAlias PedFileSystemAlias; typedef const struct _PedFileSystemOps PedFileSystemOps; #include #include #include struct _PedFileSystemOps { PedGeometry* (*probe) (PedGeometry* geom); int (*clobber) (PedGeometry* geom); PedFileSystem* (*open) (PedGeometry* geom); PedFileSystem* (*create) (PedGeometry* geom, PedTimer* timer); int (*close) (PedFileSystem* fs); int (*check) (PedFileSystem* fs, PedTimer* timer); PedFileSystem* (*copy) (const PedFileSystem* fs, PedGeometry* geom, PedTimer* timer); int (*resize) (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer); PedConstraint* (*get_create_constraint) (const PedDevice* dev); PedConstraint* (*get_resize_constraint) (const PedFileSystem* fs); PedConstraint* (*get_copy_constraint) (const PedFileSystem* fs, const PedDevice* dev); }; /** * Structure describing type of file system */ struct _PedFileSystemType { PedFileSystemType* next; const char* const name; /**< name of the file system type */ const int* block_sizes; PedFileSystemOps* const ops; }; /** * Structure describing a file system alias. This is separate from * PedFileSystemType because probing only looks through the list of types, * and does not probe aliases separately. */ struct _PedFileSystemAlias { PedFileSystemAlias* next; PedFileSystemType* fs_type; const char* alias; int deprecated; }; /** * Structure describing file system */ struct _PedFileSystem { PedFileSystemType* type; /**< the file system type */ PedGeometry* geom; /**< where the file system actually is */ int checked; /**< 1 if the file system has been checked. 0 otherwise. */ void* type_specific; }; extern void ped_file_system_type_register (PedFileSystemType* type); extern void ped_file_system_type_unregister (PedFileSystemType* type); extern void ped_file_system_alias_register (PedFileSystemType* type, const char* alias, int deprecated); extern void ped_file_system_alias_unregister (PedFileSystemType* type, const char* alias); extern PedFileSystemType* ped_file_system_type_get (const char* name); extern PedFileSystemType* ped_file_system_type_get_next (const PedFileSystemType* fs_type); extern PedFileSystemAlias* ped_file_system_alias_get_next (const PedFileSystemAlias* fs_alias); extern PedFileSystemType* ped_file_system_probe (PedGeometry* geom); extern PedGeometry* ped_file_system_probe_specific ( const PedFileSystemType* fs_type, PedGeometry* geom); extern int ped_file_system_clobber (PedGeometry* geom); extern PedFileSystem* ped_file_system_open (PedGeometry* geom); extern PedFileSystem* ped_file_system_create (PedGeometry* geom, const PedFileSystemType* type, PedTimer* timer); extern int ped_file_system_close (PedFileSystem* fs); extern int ped_file_system_check (PedFileSystem* fs, PedTimer* timer); extern PedFileSystem* ped_file_system_copy (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer); extern int ped_file_system_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer); extern PedConstraint* ped_file_system_get_create_constraint ( const PedFileSystemType* fs_type, const PedDevice* dev); extern PedConstraint* ped_file_system_get_resize_constraint ( const PedFileSystem* fs); extern PedConstraint* ped_file_system_get_copy_constraint ( const PedFileSystem* fs, const PedDevice* dev); #endif /* PED_FILESYS_H_INCLUDED */ /** @} */