blob: ef0791e32de05bf8b2c346bd719348f47ca992c1 [file] [log] [blame]
njneb8896b2005-06-04 20:03:55 +00001
2/*--------------------------------------------------------------------*/
3/*--- File/socket-related libc stuff. pub_core_libcfile.h ---*/
4/*--------------------------------------------------------------------*/
5
6/*
7 This file is part of Valgrind, a dynamic binary instrumentation
8 framework.
9
10 Copyright (C) 2000-2005 Julian Seward
11 jseward@acm.org
12
13 This program is free software; you can redistribute it and/or
14 modify it under the terms of the GNU General Public License as
15 published by the Free Software Foundation; either version 2 of the
16 License, or (at your option) any later version.
17
18 This program is distributed in the hope that it will be useful, but
19 WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software
25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26 02111-1307, USA.
27
28 The GNU General Public License is contained in the file COPYING.
29*/
30
31#ifndef __PUB_CORE_LIBCFILE_H
32#define __PUB_CORE_LIBCFILE_H
33
34//--------------------------------------------------------------------
35// PURPOSE: This module contains all the libc code that relates to
36// files and sockets: opening, reading, writing, etc.
37//--------------------------------------------------------------------
38
39#include "pub_tool_libcfile.h"
40
njneb8896b2005-06-04 20:03:55 +000041/* Move an fd into the Valgrind-safe range */
njn327fe8a2005-06-12 02:49:35 +000042extern Int VG_(safe_fd) ( Int oldfd );
43extern Int VG_(fcntl) ( Int fd, Int cmd, Int arg );
njneb8896b2005-06-04 20:03:55 +000044
njnae7359b2005-06-19 21:10:42 +000045/* Convert an fd into a filename */
njnf845f8f2005-06-23 02:26:47 +000046extern Bool VG_(resolve_filename) ( Int fd, HChar* buf, Int n_buf );
njnae7359b2005-06-19 21:10:42 +000047
sewardj45f4e7c2005-09-27 19:20:21 +000048/* Return the size of a file */
49extern Int VG_(fsize) ( Int fd );
50
njn73750612005-10-14 03:11:30 +000051/* Is the file a directory? */
52extern Bool VG_(is_dir) ( HChar* f );
53
njne38e2332005-06-18 04:13:54 +000054/* Default destination port to be used in logging over a network, if
55 none specified. */
56#define VG_CLO_DEFAULT_LOGPORT 1500
57
njneb8896b2005-06-04 20:03:55 +000058extern Int VG_(write_socket)( Int sd, void *msg, Int count );
59extern Int VG_(connect_via_socket)( UChar* str );
60extern Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen );
61extern Int VG_(getpeername) ( Int sd, struct vki_sockaddr *name, Int *namelen );
62extern Int VG_(getsockopt) ( Int sd, Int level, Int optname, void *optval,
63 Int *optlen );
64
sewardj45f4e7c2005-09-27 19:20:21 +000065extern Int VG_(access) ( HChar* path, Bool irusr, Bool iwusr, Bool ixusr );
66
njn73750612005-10-14 03:11:30 +000067/* Is the file executable? Returns: 0 = success, non-0 is failure */
68extern Int VG_(check_executable)(HChar* f);
69
sewardj45f4e7c2005-09-27 19:20:21 +000070extern SysRes VG_(pread) ( Int fd, void* buf, Int count, Int offset );
71
72/* Create and open (-rw------) a tmp file name incorporating said arg.
73 Returns -1 on failure, else the fd of the file. If fullname is
74 non-NULL, the file's name is written into it. The number of bytes
75 written is guaranteed not to exceed 64+strlen(part_of_name). */
76extern Int VG_(mkstemp) ( HChar* part_of_name, /*OUT*/HChar* fullname );
77
njneb8896b2005-06-04 20:03:55 +000078#endif // __PUB_CORE_LIBCFILE_H
79
80/*--------------------------------------------------------------------*/
81/*--- end ---*/
82/*--------------------------------------------------------------------*/