remake
4.3+dbg-1.5
src
buildargv.h
Go to the documentation of this file.
1
/* $Id: buildargv.h,v 1.1 2006/01/21 13:40:21 rockyb Exp $ */
2
/* Create and destroy argument vectors (argv's)
3
Copyright (C) 1992, 2001 Free Software Foundation, Inc.
4
Written by Fred Fish @ Cygnus Support
5
6
Copyright (C) 2008 R. Bernstein rocky@gnu.org
7
8
This file is part of the libiberty library.
9
Libiberty is free software; you can redistribute it and/or
10
modify it under the terms of the GNU Library General Public
11
License as published by the Free Software Foundation; either
12
version 2 of the License, or (at your option) any later version.
13
14
Libiberty is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
Library General Public License for more details.
18
19
You should have received a copy of the GNU Library General Public
20
License along with libiberty; see the file COPYING.LIB. If
21
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22
Boston, MA 02111-1307, USA. */
23
24
/* rocky: Below we only need/use the freeargv and buildargv routine
25
from the above. Some small adaption was made to include outside of
26
libiberty.
27
*/
28
/*
29
30
@deftypefn Extension void freeargv (char **@var{vector})
31
32
Free an argument vector that was built using @code{buildargv}. Simply
33
scans through @var{vector}, freeing the memory for each argument until
34
the terminating @code{NULL} is found, and then frees @var{vector}
35
itself.
36
37
@end deftypefn
38
39
*/
40
void
freeargv
(
char
**vector);
41
/*
42
43
@deftypefn Extension char** buildargv (char *@var{sp})
44
45
Given a pointer to a string, parse the string extracting fields
46
separated by whitespace and optionally enclosed within either single
47
or double quotes (which are stripped off), and build a vector of
48
pointers to copies of the string for each field. The input string
49
remains unchanged. The last element of the vector is followed by a
50
@code{NULL} element.
51
52
All of the memory for the pointer array and copies of the string
53
is obtained from @code{malloc}. All of the memory can be returned to the
54
system with the single function call @code{freeargv}, which takes the
55
returned result of @code{buildargv}, as it's argument.
56
57
Returns a pointer to the argument vector if successful. Returns
58
@code{NULL} if @var{sp} is @code{NULL} or if there is insufficient
59
memory to complete building the argument vector.
60
61
If the input is a null string (as opposed to a @code{NULL} pointer),
62
then buildarg returns an argument vector that has one arg, a null
63
string.
64
65
@end deftypefn
66
67
The memory for the argv array is dynamically expanded as necessary.
68
69
In order to provide a working buffer for extracting arguments into,
70
with appropriate stripping of quotes and translation of backslash
71
sequences, we allocate a working buffer at least as long as the input
72
string. This ensures that we always have enough space in which to
73
work, since the extracted arg is never larger than the input string.
74
75
The argument vector is always kept terminated with a @code{NULL} arg
76
pointer, so it can be passed to @code{freeargv} at any time, or
77
returned, as appropriate.
78
79
*/
80
char
**
buildargv
(
const
char
*input);
81
buildargv
char ** buildargv(const char *input)
freeargv
void freeargv(char **vector)
Generated on Wed Mar 18 2020 07:42:22 for remake by
1.8.13