ChangeLog, bitops.c, ext2fs.h, fileio.c:

ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
  fileio.c (ext2fs_file_get_size, ext2fs_file_set_size, ext2fs_file_get_fs):
  	New functions added.
  bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call com_err
  	if OMIT_COM_ERR is defined.
bitmap-optimize
Theodore Ts'o 1997-11-03 19:16:55 +00:00
parent 3b12bf9469
commit 79a90bdad0
4 changed files with 70 additions and 10 deletions

View File

@ -1,3 +1,16 @@
Sun Nov 2 20:36:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
* ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
* fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
ext2fs_file_get_fs): New functions added.
Fri Oct 31 12:16:52 1997 <tytso@EDT.MIT.EDU>
* bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
com_err if OMIT_COM_ERR is defined.
Thu Oct 30 11:33:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
* Rename new error codes to _ET_ in them for consistency.

View File

@ -70,19 +70,23 @@ int ext2fs_test_bit(int nr, const void * addr)
void ext2fs_warn_bitmap(errcode_t errcode, unsigned long arg,
const char *description)
{
#ifndef OMIT_COM_ERR
if (description)
com_err(0, errcode, "#%u for %s", arg, description);
else
com_err(0, errcode, "#%u", arg);
#endif
}
void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap,
int code, unsigned long arg)
{
#ifndef OMIT_COM_ERR
if (bitmap->description)
com_err(0, bitmap->base_error_code+code,
"#%u for %s", arg, bitmap->description);
else
com_err(0, bitmap->base_error_code + code, "#%u", arg);
#endif
}

View File

@ -580,13 +580,16 @@ extern errcode_t ext2fs_expand_dir(ext2_filsys fs, ino_t dir);
/* fileio.c */
extern errcode_t ext2fs_file_open(ext2_filsys fs, ino_t ino,
int flags, ext2_file_t *ret);
extern ext2_filsys ext2fs_file_get_fs(ext2_file_t file);
extern errcode_t ext2fs_file_close(ext2_file_t file);
extern errcode_t ext2fs_file_read(ext2_file_t file, void *buf,
int wanted, int *got);
unsigned int wanted, unsigned int *got);
extern errcode_t ext2fs_file_write(ext2_file_t file, void *buf,
int nbytes, int *written);
unsigned int nbytes, unsigned int *written);
extern errcode_t ext2fs_file_llseek(ext2_file_t file, ext2_off_t offset,
int whence, ext2_off_t *ret_pos);
extern ext2_off_t ext2fs_file_get_size(ext2_file_t file);
extern errcode_t ext2fs_file_set_size(ext2_file_t file, ext2_off_t size);
/* freefs.c */
extern void ext2fs_free(ext2_filsys fs);
@ -721,9 +724,9 @@ extern int ext2fs_get_library_version(const char **ver_string,
const char **date_string);
/* inline functions */
extern errcode_t ext2fs_get_mem(long size, void **ptr);
extern errcode_t ext2fs_get_mem(unsigned long size, void **ptr);
extern errcode_t ext2fs_free_mem(void **ptr);
extern errcode_t ext2fs_resize_mem(long size, void **ptr);
extern errcode_t ext2fs_resize_mem(unsigned long size, void **ptr);
extern void ext2fs_mark_super_dirty(ext2_filsys fs);
extern void ext2fs_mark_changed(ext2_filsys fs);
extern int ext2fs_test_changed(ext2_filsys fs);
@ -754,7 +757,7 @@ extern int ext2fs_group_of_ino(ext2_filsys fs, ino_t ino);
/*
* Allocate memory
*/
_INLINE_ errcode_t ext2fs_get_mem(long size, void **ptr)
_INLINE_ errcode_t ext2fs_get_mem(unsigned long size, void **ptr)
{
*ptr = malloc(size);
if (!*ptr)
@ -775,7 +778,7 @@ _INLINE_ errcode_t ext2fs_free_mem(void **ptr)
/*
* Resize memory
*/
_INLINE_ errcode_t ext2fs_resize_mem(long size, void **ptr)
_INLINE_ errcode_t ext2fs_resize_mem(unsigned long size, void **ptr)
{
void *p;

View File

@ -77,6 +77,16 @@ fail:
return retval;
}
/*
* This function returns the filesystem handle of a file from the structure
*/
ext2_filsys ext2fs_file_get_fs(ext2_file_t file)
{
if (file->magic != EXT2_ET_MAGIC_EXT2_FILE)
return 0;
return file->fs;
}
/*
* This function flushes the dirty block buffer out to disk if
* necessary.
@ -130,12 +140,12 @@ errcode_t ext2fs_file_close(ext2_file_t file)
errcode_t ext2fs_file_read(ext2_file_t file, void *buf,
int wanted, int *got)
unsigned int wanted, unsigned int *got)
{
ext2_filsys fs;
errcode_t retval;
blk_t b, pb;
int start, left, c, count = 0;
unsigned int start, left, c, count = 0;
char *ptr = buf;
EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE);
@ -200,12 +210,12 @@ fail:
errcode_t ext2fs_file_write(ext2_file_t file, void *buf,
int nbytes, int *written)
unsigned int nbytes, unsigned int *written)
{
ext2_filsys fs;
errcode_t retval;
blk_t b, pb;
int start, c, count = 0;
unsigned int start, c, count = 0;
char *ptr = buf;
EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE);
@ -282,4 +292,34 @@ errcode_t ext2fs_file_llseek(ext2_file_t file, ext2_off_t offset,
return 0;
}
/*
* This function returns the size of the file, according to the inode
*/
ext2_off_t ext2fs_file_get_size(ext2_file_t file)
{
if (file->magic != EXT2_ET_MAGIC_EXT2_FILE)
return 0;
return file->inode.i_size;
}
/*
* This function sets the size of the file, truncating it if necessary
*
* XXX still need to call truncate
*/
extern errcode_t ext2fs_file_set_size(ext2_file_t file, ext2_off_t size)
{
errcode_t retval;
EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE);
file->inode.i_size = size;
retval = ext2fs_write_inode(file->fs, file->ino, &file->inode);
if (retval)
return retval;
/*
* XXX truncate inode if necessary
*/
return 0;
}