File: expand.h

package info (click to toggle)
remake 4.1%2Bdbg1.3~dfsg.1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 3,800 kB
  • sloc: ansic: 30,269; perl: 1,608; sh: 303; ruby: 294; makefile: 288; lisp: 26
file content (72 lines) | stat: -rw-r--r-- 2,698 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* $Id: expand.h,v 1.9 2006/12/18 10:12:25 rockyb Exp $
Copyright (C) 2005 R. Bernstein <rocky@gnu.org>
This file is part of GNU Make (remake variant).

GNU Make is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU Make is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Make; see the file COPYING.  If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */

/** \file expand.h
 *
 *  \brief Header for variable expansion functions for GNU Make.
 */

#ifndef REMAKE_EXPAND_H
#define REMAKE_EXPAND_H

#include "variable.h"
#include "filedef.h"

/*! Like variable_expand_for_file, but the returned string is malloc'd.
   This function is called a lot.  It wants to be efficient.  */

extern char *allocated_variable_expand_for_file(const char *psz_line, 
						file_t *p_file);


/*! Expand an argument for an expansion function.  The text starting
   at STR and ending at END is variable-expanded into a
   null-terminated string that is returned as the value.  This is done
   without clobbering `variable_buffer' or the current
   variable-expansion that is in progress.  */

extern char *expand_argument(const char *str, const char *end);

/*! Install a new variable_buffer context, returning the current one for
   safe-keeping.  */

extern void install_variable_buffer (char **pp_buf, unsigned int *pi_len);

/*! Restore a previously-saved variable_buffer setting (free the current one).
 */

#define recursively_expand(v)   recursively_expand_for_file (v, NULL)

/*! Recursively expand V.  The returned string is malloc'd.  */
extern char *recursively_expand_for_file(variable_t *v, file_t *file);

/*! Subroutine of variable_expand and friends:
   The text to add is LENGTH chars starting at STRING to the variable_buffer.
   The text is added to the buffer at PTR, and the updated pointer into
   the buffer is returned as the value.  Thus, the value returned by
   each call to variable_buffer_output should be the first argument to
   the following call.  */

extern void restore_variable_buffer(char *p_buf, unsigned int len);

/** Expand PSZ_LINE. Expansion uses P_FILE_SET if it is not NULL. */
extern char *variable_expand_set (char *psz_line, 
				  variable_set_list_t *p_file_set);

#endif /*REMAKE_EXPAND_H*/