diff options
Diffstat (limited to 'options.h')
-rw-r--r-- | options.h | 51 |
1 files changed, 44 insertions, 7 deletions
@@ -1,5 +1,6 @@ /* * This file is part of ltrace. + * Copyright (C) 2012 Petr Machata, Red Hat Inc. * Copyright (C) 2009,2010 Joe Damato * Copyright (C) 1998,2002,2008 Juan Cespedes * Copyright (C) 2006 Ian Wienand @@ -20,11 +21,15 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA */ +#ifndef _OPTIONS_H_ +#define _OPTIONS_H_ #include <stdio.h> #include <sys/types.h> +#include <sys/time.h> #include "forward.h" +#include "vect.h" struct options_t { int align; /* -a: default alignment column for results */ @@ -63,15 +68,47 @@ struct opt_p_t { struct opt_p_t *next; }; -struct opt_F_t -{ - struct opt_F_t *next; - char *filename; - int own_filename : 1; +extern struct opt_p_t *opt_p; /* attach to process with a given pid */ + +enum opt_F_kind { + OPT_F_UNKNOWN = 0, + OPT_F_BROKEN, + OPT_F_FILE, + OPT_F_DIR, }; -extern struct opt_p_t *opt_p; /* attach to process with a given pid */ +struct opt_F_t { + char *pathname; + int own_pathname : 1; + enum opt_F_kind kind : 2; +}; + +/* If entry->kind is OPT_F_UNKNOWN, figure out whether it should be + * OPT_F_FILE or OPT_F_DIR, cache the result, and return it. Return + * OPT_F_BROKEN on failure. Error message will have been printed in + * that case. */ +enum opt_F_kind opt_F_get_kind(struct opt_F_t *entry); -extern struct opt_F_t *opt_F; /* alternate configuration file(s) */ +/* Destroy and release any memory associated with ENTRY (but don't + * free ENTRY itself). */ +void opt_F_destroy(struct opt_F_t *entry); + +/* PATHS contains colon-separated list of values, akin to enviroment + * variables PATH, PYTHONPATH, and others. No escaping is possible. + * The list is split and added to VEC, which shall be a vector + * initialized like VECT_INIT(VEC, struct opt_F_t); Returns 0 on + * success or a negative value on failure. */ +int parse_colon_separated_list(const char *paths, struct vect *vec); + +/* Vector of struct opt_F_t. */ +extern struct vect opt_F; + +struct opt_c_struct { + int count; + struct timeval tv; +}; +extern struct dict *dict_opt_c; extern char **process_options(int argc, char **argv); + +#endif /* _OPTIONS_H_ */ |