1 |
/* GNU m4 -- A simple macro processor |
/* GNU m4 -- A simple macro processor |
2 |
Copyright 1999, 2000 Free Software Foundation, Inc. |
Copyright 1999, 2000, 2001 Free Software Foundation, Inc. |
3 |
|
|
4 |
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
5 |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
24 |
#include <pwd.h> |
#include <pwd.h> |
25 |
#include <stdlib.h> |
#include <stdlib.h> |
26 |
#include <unistd.h> |
#include <unistd.h> |
27 |
#ifdef TM_IN_SYS_TIME |
#if TM_IN_SYS_TIME |
28 |
# include <sys/time.h> |
# include <sys/time.h> |
29 |
#else |
#else |
30 |
# include <time.h> |
# include <time.h> |
67 |
|
|
68 |
{ 0, 0, FALSE, FALSE }, |
{ 0, 0, FALSE, FALSE }, |
69 |
}; |
}; |
|
|
|
70 |
|
|
71 |
/** |
/** |
72 |
* getcwd() |
* getcwd() |
79 |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
80 |
return; |
return; |
81 |
|
|
82 |
bp = getcwd(buf, sizeof buf); |
bp = getcwd (buf, sizeof buf); |
83 |
|
|
84 |
if (bp != NULL) /* in case of error return null string */ |
if (bp != NULL) /* in case of error return null string */ |
85 |
m4_shipout_string (obs, buf, 0 , FALSE); |
m4_shipout_string (obs, buf, 0, FALSE); |
86 |
} |
} |
87 |
|
|
88 |
/** |
/** |
95 |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
96 |
return; |
return; |
97 |
|
|
98 |
env = getenv((char*)M4ARG(1)); |
env = getenv (M4ARG (1)); |
99 |
|
|
100 |
if (env != NULL) |
if (env != NULL) |
101 |
m4_shipout_string (obs, env, 0, FALSE); |
m4_shipout_string (obs, env, 0, FALSE); |
112 |
return; |
return; |
113 |
|
|
114 |
if (argc == 4) |
if (argc == 4) |
115 |
if (!m4_numeric_arg(argv[0], (char*)M4ARG(3), &overwrite)) |
if (!m4_numeric_arg (argv[0], M4ARG (3), &overwrite)) |
116 |
return; |
return; |
117 |
|
|
118 |
#ifdef HAVE_SETENV |
#if HAVE_SETENV |
119 |
setenv((char*)M4ARG(1), (char*)M4ARG(2), overwrite); |
setenv (M4ARG (1), M4ARG (2), overwrite); |
120 |
#else |
#else |
121 |
#ifdef HAVE_PUTENV |
#if HAVE_PUTENV |
122 |
if (!overwrite && getenv ((char*)M4ARG(1)) != NULL) |
if (!overwrite && getenv (M4ARG (1)) != NULL) |
123 |
return; |
return; |
124 |
|
|
125 |
obstack_grow (obs, (char*)M4ARG(1), strlen ((char*)M4ARG(1))); |
obstack_grow (obs, M4ARG (1), strlen (M4ARG (1))); |
126 |
obstack_1grow (obs, '='); |
obstack_1grow (obs, '='); |
127 |
obstack_grow (obs, (char*)M4ARG(2), strlen ((char*)M4ARG(2))); |
obstack_grow (obs, M4ARG (2), strlen (M4ARG (2))); |
128 |
obstack_1grow (obs, '\0'); |
obstack_1grow (obs, '\0'); |
129 |
|
|
130 |
{ |
{ |
143 |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
144 |
return; |
return; |
145 |
|
|
146 |
#ifdef HAVE_UNSETENV |
#if HAVE_UNSETENV |
147 |
unsetenv ((char*)M4ARG(1)); |
unsetenv (M4ARG (1)); |
148 |
#endif /* HAVE_UNSETENV */ |
#endif /* HAVE_UNSETENV */ |
149 |
} |
} |
150 |
|
|
172 |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
173 |
return; |
return; |
174 |
|
|
175 |
m4_shipout_int(obs, getpid()); |
m4_shipout_int (obs, getpid ()); |
176 |
} |
} |
177 |
|
|
178 |
/** |
/** |
183 |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
184 |
return; |
return; |
185 |
|
|
186 |
m4_shipout_int(obs, getppid()); |
m4_shipout_int (obs, getppid ()); |
187 |
} |
} |
188 |
|
|
189 |
/** |
/** |
196 |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
197 |
return; |
return; |
198 |
|
|
199 |
pw = getpwnam((char*)M4ARG(1)); |
pw = getpwnam (M4ARG (1)); |
200 |
|
|
201 |
if (pw != NULL) |
if (pw != NULL) |
202 |
{ |
{ |
204 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
205 |
m4_shipout_string (obs, pw->pw_passwd, 0, TRUE); |
m4_shipout_string (obs, pw->pw_passwd, 0, TRUE); |
206 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
207 |
m4_shipout_int(obs, pw->pw_uid); |
m4_shipout_int (obs, pw->pw_uid); |
208 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
209 |
m4_shipout_int(obs, pw->pw_gid); |
m4_shipout_int (obs, pw->pw_gid); |
210 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
211 |
m4_shipout_string (obs, pw->pw_gecos, 0, TRUE); |
m4_shipout_string (obs, pw->pw_gecos, 0, TRUE); |
212 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
227 |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
if (m4_bad_argc (argv[0], argc, 2, 2)) |
228 |
return; |
return; |
229 |
|
|
230 |
if (!m4_numeric_arg(argv[0], (char*)M4ARG(1), &uid)) |
if (!m4_numeric_arg (argv[0], M4ARG (1), &uid)) |
231 |
return; |
return; |
232 |
|
|
233 |
pw = getpwuid(uid); |
pw = getpwuid (uid); |
234 |
|
|
235 |
if (pw != NULL) |
if (pw != NULL) |
236 |
{ |
{ |
238 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
239 |
m4_shipout_string (obs, pw->pw_passwd, 0, TRUE); |
m4_shipout_string (obs, pw->pw_passwd, 0, TRUE); |
240 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
241 |
m4_shipout_int(obs, pw->pw_uid); |
m4_shipout_int (obs, pw->pw_uid); |
242 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
243 |
m4_shipout_int(obs, pw->pw_gid); |
m4_shipout_int (obs, pw->pw_gid); |
244 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
245 |
m4_shipout_string (obs, pw->pw_gecos, 0, TRUE); |
m4_shipout_string (obs, pw->pw_gecos, 0, TRUE); |
246 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
260 |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
261 |
return; |
return; |
262 |
|
|
263 |
if (gethostname(buf, sizeof buf) < 0) |
if (gethostname (buf, sizeof buf) < 0) |
264 |
return; |
return; |
265 |
|
|
266 |
m4_shipout_string (obs, buf, 0, FALSE); |
m4_shipout_string (obs, buf, 0, FALSE); |
274 |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
275 |
return; |
return; |
276 |
|
|
277 |
m4_shipout_int(obs, rand()); |
m4_shipout_int (obs, rand ()); |
278 |
} |
} |
279 |
|
|
280 |
/** |
/** |
288 |
return; |
return; |
289 |
|
|
290 |
if (argc == 1) |
if (argc == 1) |
291 |
seed = time(0L) * getpid(); |
seed = time (0L) * getpid (); |
292 |
else |
else |
293 |
{ |
{ |
294 |
if (!m4_numeric_arg(argv[0], (char*)M4ARG(1), &seed)) |
if (!m4_numeric_arg (argv[0], M4ARG (1), &seed)) |
295 |
return; |
return; |
296 |
} |
} |
297 |
|
|
298 |
srand(seed); |
srand (seed); |
299 |
} |
} |
300 |
|
|
301 |
/** |
/** |
308 |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
309 |
return; |
return; |
310 |
|
|
311 |
if (uname(&ut) == 0) |
if (uname (&ut) == 0) |
312 |
{ |
{ |
313 |
m4_shipout_string (obs, ut.sysname, 0, TRUE); |
m4_shipout_string (obs, ut.sysname, 0, TRUE); |
314 |
obstack_1grow (obs, ','); |
obstack_1grow (obs, ','); |
330 |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
if (m4_bad_argc (argv[0], argc, 1, 1)) |
331 |
return; |
return; |
332 |
|
|
333 |
m4_shipout_int(obs, getuid()); |
m4_shipout_int (obs, getuid ()); |
334 |
} |
} |