chiark / gitweb /
Infrastructure: Split the files into subdirectories.
[mLib] / sys / env.h
CommitLineData
e19206c2 1/* -*-c-*-
2 *
e19206c2 3 * Fiddling with environment variables
4 *
5 * (c) 1999 Straylight/Edgeware
6 */
7
d4efbcd9 8/*----- Licensing notice --------------------------------------------------*
e19206c2 9 *
10 * This file is part of the mLib utilities library.
11 *
12 * mLib is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU Library General Public License as
14 * published by the Free Software Foundation; either version 2 of the
15 * License, or (at your option) any later version.
d4efbcd9 16 *
e19206c2 17 * mLib is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU Library General Public License for more details.
d4efbcd9 21 *
e19206c2 22 * You should have received a copy of the GNU Library General Public
23 * License along with mLib; if not, write to the Free
24 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
25 * MA 02111-1307, USA.
26 */
27
c6e0eaf0 28#ifndef MLIB_ENV_H
29#define MLIB_ENV_H
e19206c2 30
31#ifdef __cplusplus
32 extern "C" {
33#endif
34
35/*----- Header files ------------------------------------------------------*/
36
c6e0eaf0 37#ifndef MLIB_SYM_H
e19206c2 38# include "sym.h"
39#endif
40
41/*----- Functions provided ------------------------------------------------*/
42
43/* --- @env_get@ --- *
44 *
45 * Arguments: @sym_table *t@ = pointer to a symbol table
46 * @const char *name@ = pointer to variable name to look up
47 *
48 * Returns: Pointer to corresponding value string, or null.
49 *
50 * Use: Looks up an environment variable in the table and returns its
51 * value. If the variable can't be found, a null pointer is
52 * returned.
53 */
54
55extern char *env_get(sym_table */*t*/, const char */*name*/);
56
57/* --- @env_put@ --- *
58 *
59 * Arguments: @sym_table *t@ = pointer to a symbol table
60 * @const char *name@ = pointer to variable name to set
61 * @const char *value@ = pointer to value string to assign
62 *
63 * Returns: ---
64 *
65 * Use: Assigns a value to a variable. If the @name@ contains an
66 * equals character, then it's assumed to be of the form
67 * `VAR=VALUE' and @value@ argument is ignored. Otherwise, if
68 * @value@ is null, the variable is deleted. Finally, the
69 * normal case: @name@ is a plain name, and @value@ is a normal
70 * string causes the variable to be assigned the value in the
71 * way you'd expect.
72 */
73
74extern void env_put(sym_table */*t*/,
75 const char */*name*/, const char */*value*/);
76
77/* --- @env_import@ --- *
78 *
79 * Arguments: @sym_table *t@ = pointer to a symbol table
80 * @char **env@ = pointer to an environment list
81 *
82 * Returns: ---
83 *
84 * Use: Inserts all of the environment variables listed into a symbol
85 * table for rapid access. Equivalent to a lot of calls to
86 * @env_put@.
87 */
88
89extern void env_import(sym_table */*t*/, char **/*env*/);
90
91/* --- @env_export@ --- *
92 *
93 * Arguments: @sym_table *t@ = pointer to a symbol table
94 *
95 * Returns: A big environment list.
96 *
97 * Use: Extracts an environment table from a symbol table
98 * representation of an environment. The table and all of the
99 * strings are in one big block allocated from the heap.
100 */
101
102extern char **env_export(sym_table */*t*/);
103
104/* --- @env_destroy@ --- *
105 *
106 * Arguments: @sym_table *t@ = pointer to symbol table
107 *
108 * Returns: ---
109 *
110 * Use: Destroys all the variables in the symbol table.
111 */
112
113extern void env_destroy(sym_table */*t*/);
114
115/*----- That's all, folks -------------------------------------------------*/
116
117#ifdef __cplusplus
118 }
119#endif
120
121#endif