Alexandre Julliard : server: Move the functions to extend file to mapping. c since it's the only user.
Alexandre Julliard
julliard at winehq.org
Tue Nov 24 12:40:20 CST 2009
Module: wine
Branch: master
Commit: 78d211b3bd61468aa53e3e0b2330b27211c76b02
URL: http://source.winehq.org/git/wine.git/?a=commit;h=78d211b3bd61468aa53e3e0b2330b27211c76b02
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Nov 23 15:58:25 2009 +0100
server: Move the functions to extend file to mapping.c since it's the only user.
---
server/file.c | 42 ------------------------------------------
server/file.h | 1 -
server/mapping.c | 42 ++++++++++++++++++++++++++++++++++++++++++
3 files changed, 42 insertions(+), 43 deletions(-)
diff --git a/server/file.c b/server/file.c
index a74de14..01fefdb 100644
--- a/server/file.c
+++ b/server/file.c
@@ -641,48 +641,6 @@ struct file *grab_file_unless_removable( struct file *file )
return (struct file *)grab_object( file );
}
-/* extend a file beyond the current end of file */
-static int extend_file( struct file *file, file_pos_t new_size )
-{
- static const char zero;
- int unix_fd = get_file_unix_fd( file );
- off_t size = new_size;
-
- if (unix_fd == -1) return 0;
-
- if (sizeof(new_size) > sizeof(size) && size != new_size)
- {
- set_error( STATUS_INVALID_PARAMETER );
- return 0;
- }
- /* extend the file one byte beyond the requested size and then truncate it */
- /* this should work around ftruncate implementations that can't extend files */
- if (pwrite( unix_fd, &zero, 1, size ) != -1)
- {
- ftruncate( unix_fd, size );
- return 1;
- }
- file_set_error();
- return 0;
-}
-
-/* try to grow the file to the specified size */
-int grow_file( struct file *file, file_pos_t size )
-{
- struct stat st;
- int unix_fd = get_file_unix_fd( file );
-
- if (unix_fd == -1) return 0;
-
- if (fstat( unix_fd, &st ) == -1)
- {
- file_set_error();
- return 0;
- }
- if (st.st_size >= size) return 1; /* already large enough */
- return extend_file( file, size );
-}
-
/* create a file */
DECL_HANDLER(create_file)
{
diff --git a/server/file.h b/server/file.h
index f59ec9e..21b3879 100644
--- a/server/file.h
+++ b/server/file.h
@@ -110,7 +110,6 @@ extern struct file *get_file_obj( struct process *process, obj_handle_t handle,
extern int get_file_unix_fd( struct file *file );
extern int is_same_file( struct file *file1, struct file *file2 );
extern struct file *grab_file_unless_removable( struct file *file );
-extern int grow_file( struct file *file, file_pos_t size );
extern struct file *create_temp_file( int access );
extern void file_set_error(void);
extern struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID *group );
diff --git a/server/mapping.c b/server/mapping.c
index a303111..39c7f50 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -126,6 +126,48 @@ static void init_page_size(void)
#define ROUND_SIZE(size) (((size) + page_mask) & ~page_mask)
+/* extend a file beyond the current end of file */
+static int extend_file( struct file *file, file_pos_t new_size )
+{
+ static const char zero;
+ int unix_fd = get_file_unix_fd( file );
+ off_t size = new_size;
+
+ if (unix_fd == -1) return 0;
+
+ if (sizeof(new_size) > sizeof(size) && size != new_size)
+ {
+ set_error( STATUS_INVALID_PARAMETER );
+ return 0;
+ }
+ /* extend the file one byte beyond the requested size and then truncate it */
+ /* this should work around ftruncate implementations that can't extend files */
+ if (pwrite( unix_fd, &zero, 1, size ) != -1)
+ {
+ ftruncate( unix_fd, size );
+ return 1;
+ }
+ file_set_error();
+ return 0;
+}
+
+/* try to grow the file to the specified size */
+static int grow_file( struct file *file, file_pos_t size )
+{
+ struct stat st;
+ int unix_fd = get_file_unix_fd( file );
+
+ if (unix_fd == -1) return 0;
+
+ if (fstat( unix_fd, &st ) == -1)
+ {
+ file_set_error();
+ return 0;
+ }
+ if (st.st_size >= size) return 1; /* already large enough */
+ return extend_file( file, size );
+}
+
/* find the shared PE mapping for a given mapping */
static struct file *get_shared_file( struct mapping *mapping )
{
More information about the wine-cvs
mailing list