server: Moved the create_temp_file function to mapping.c.
This commit is contained in:
parent
5f808f03e1
commit
62eda39fc1
|
@ -115,7 +115,7 @@ static inline int is_overlapped( const struct file *file )
|
||||||
|
|
||||||
/* create a file from a file descriptor */
|
/* create a file from a file descriptor */
|
||||||
/* if the function fails the fd is closed */
|
/* if the function fails the fd is closed */
|
||||||
static struct file *create_file_for_fd( int fd, unsigned int access, unsigned int sharing )
|
struct file *create_file_for_fd( int fd, unsigned int access, unsigned int sharing )
|
||||||
{
|
{
|
||||||
struct file *file;
|
struct file *file;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
@ -226,23 +226,6 @@ int is_same_file( struct file *file1, struct file *file2 )
|
||||||
return is_same_file_fd( file1->fd, file2->fd );
|
return is_same_file_fd( file1->fd, file2->fd );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create a temp file for anonymous mappings */
|
|
||||||
struct file *create_temp_file( int access )
|
|
||||||
{
|
|
||||||
char tmpfn[16];
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
sprintf( tmpfn, "anonmap.XXXXXX" ); /* create it in the server directory */
|
|
||||||
fd = mkstemps( tmpfn, 0 );
|
|
||||||
if (fd == -1)
|
|
||||||
{
|
|
||||||
file_set_error();
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
unlink( tmpfn );
|
|
||||||
return create_file_for_fd( fd, access, 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
static void file_dump( struct object *obj, int verbose )
|
static void file_dump( struct object *obj, int verbose )
|
||||||
{
|
{
|
||||||
struct file *file = (struct file *)obj;
|
struct file *file = (struct file *)obj;
|
||||||
|
|
|
@ -113,8 +113,8 @@ extern struct file *get_file_obj( struct process *process, obj_handle_t handle,
|
||||||
unsigned int access );
|
unsigned int access );
|
||||||
extern int get_file_unix_fd( struct file *file );
|
extern int get_file_unix_fd( struct file *file );
|
||||||
extern int is_same_file( struct file *file1, struct file *file2 );
|
extern int is_same_file( struct file *file1, struct file *file2 );
|
||||||
|
extern struct file *create_file_for_fd( int fd, unsigned int access, unsigned int sharing );
|
||||||
extern struct file *grab_file_unless_removable( struct file *file );
|
extern struct file *grab_file_unless_removable( struct file *file );
|
||||||
extern struct file *create_temp_file( int access );
|
|
||||||
extern void file_set_error(void);
|
extern void file_set_error(void);
|
||||||
extern struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID *group );
|
extern struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID *group );
|
||||||
extern mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner );
|
extern mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner );
|
||||||
|
|
|
@ -162,6 +162,23 @@ static int grow_file( int unix_fd, file_pos_t new_size )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* create a temp file for anonymous mappings */
|
||||||
|
static struct file *create_temp_file( unsigned int access )
|
||||||
|
{
|
||||||
|
char tmpfn[16];
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
sprintf( tmpfn, "anonmap.XXXXXX" ); /* create it in the server directory */
|
||||||
|
fd = mkstemps( tmpfn, 0 );
|
||||||
|
if (fd == -1)
|
||||||
|
{
|
||||||
|
file_set_error();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
unlink( tmpfn );
|
||||||
|
return create_file_for_fd( fd, access, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
/* find the shared PE mapping for a given mapping */
|
/* find the shared PE mapping for a given mapping */
|
||||||
static struct file *get_shared_file( struct mapping *mapping )
|
static struct file *get_shared_file( struct mapping *mapping )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue