1 /*
2  * This file is part of ltrace.
3  * Copyright (C) 2011,2012,2013 Petr Machata, Red Hat Inc.
4  * Copyright (C) 2010 Joe Damato
5  * Copyright (C) 2009 Juan Cespedes
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License as
9  * published by the Free Software Foundation; either version 2 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  */
22 
23 #ifndef COMMON_H
24 #define COMMON_H
25 
26 #include <config.h>
27 
28 #include <sys/types.h>
29 #include <sys/time.h>
30 #include <stdio.h>
31 
32 #include "ltrace.h"
33 #include "defs.h"
34 #include "dict.h"
35 #include "sysdep.h"
36 #include "debug.h"
37 #include "ltrace-elf.h"
38 #include "read_config_file.h"
39 #include "proc.h"
40 #include "forward.h"
41 
42 extern char * command;
43 
44 extern int exiting;  /* =1 if we have to exit ASAP */
45 
46 extern char *PLTs_initialized_by_here;
47 
48 #include "options.h"
49 #include "output.h"
50 
51 /* Events  */
52 extern Event * next_event(void);
53 extern void handle_event(Event * event);
54 
55 extern pid_t execute_program(const char * command, char ** argv);
56 
57 struct breakpoint;
58 struct library_symbol;
59 
60 /* Format VALUE into STREAM.  The dictionary of all arguments is given
61  * for purposes of evaluating array lengths and other dynamic
62  * expressions.  Returns number of characters outputted, -1 in case of
63  * failure.  */
64 int format_argument(FILE *stream, struct value *value,
65 		    struct value_dict *arguments);
66 
67 /* Set *RET to either a duplicate of STR (if WHETHER), or STR
68  * (otherwise).  Return 0 on success or a negative value on failure.
69  * The duplication is not done if STR is NULL.  */
70 int strdup_if(const char **ret, const char *str, int whether);
71 
72 #endif
73