153 |
"@code{system-error} or @code{misc_error} keys.") |
"@code{system-error} or @code{misc_error} keys.") |
154 |
#define FUNC_NAME s_scm_gethost |
#define FUNC_NAME s_scm_gethost |
155 |
{ |
{ |
156 |
SCM ans = scm_c_make_vector (5, SCM_UNSPECIFIED); |
SCM result = scm_c_make_vector (5, SCM_UNSPECIFIED); |
|
SCM *ve = SCM_WRITABLE_VELTS (ans); |
|
157 |
SCM lst = SCM_EOL; |
SCM lst = SCM_EOL; |
158 |
struct hostent *entry; |
struct hostent *entry; |
159 |
struct in_addr inad; |
struct in_addr inad; |
189 |
if (!entry) |
if (!entry) |
190 |
scm_resolv_error (FUNC_NAME, host); |
scm_resolv_error (FUNC_NAME, host); |
191 |
|
|
192 |
SCM_VECTOR_SET(ans, 0, scm_mem2string (entry->h_name, strlen (entry->h_name))); |
SCM_VECTOR_SET(result, 0, scm_mem2string (entry->h_name, strlen (entry->h_name))); |
193 |
SCM_VECTOR_SET(ans, 1, scm_makfromstrs (-1, entry->h_aliases)); |
SCM_VECTOR_SET(result, 1, scm_makfromstrs (-1, entry->h_aliases)); |
194 |
SCM_VECTOR_SET(ans, 2, SCM_MAKINUM (entry->h_addrtype + 0L)); |
SCM_VECTOR_SET(result, 2, SCM_MAKINUM (entry->h_addrtype + 0L)); |
195 |
SCM_VECTOR_SET(ans, 3, SCM_MAKINUM (entry->h_length + 0L)); |
SCM_VECTOR_SET(result, 3, SCM_MAKINUM (entry->h_length + 0L)); |
196 |
if (sizeof (struct in_addr) != entry->h_length) |
if (sizeof (struct in_addr) != entry->h_length) |
197 |
{ |
{ |
198 |
SCM_VECTOR_SET(ans, 4, SCM_BOOL_F); |
SCM_VECTOR_SET(result, 4, SCM_BOOL_F); |
199 |
return ans; |
return result; |
200 |
} |
} |
201 |
for (argv = entry->h_addr_list; argv[i]; i++); |
for (argv = entry->h_addr_list; argv[i]; i++); |
202 |
while (i--) |
while (i--) |
204 |
inad = *(struct in_addr *) argv[i]; |
inad = *(struct in_addr *) argv[i]; |
205 |
lst = scm_cons (scm_ulong2num (ntohl (inad.s_addr)), lst); |
lst = scm_cons (scm_ulong2num (ntohl (inad.s_addr)), lst); |
206 |
} |
} |
207 |
SCM_VECTOR_SET(ans, 4, lst); |
SCM_VECTOR_SET(result, 4, lst); |
208 |
return ans; |
return result; |
209 |
} |
} |
210 |
#undef FUNC_NAME |
#undef FUNC_NAME |
211 |
|
|
231 |
"given.") |
"given.") |
232 |
#define FUNC_NAME s_scm_getnet |
#define FUNC_NAME s_scm_getnet |
233 |
{ |
{ |
234 |
SCM ans; |
SCM result = scm_c_make_vector (4, SCM_UNSPECIFIED); |
|
SCM *ve; |
|
235 |
struct netent *entry; |
struct netent *entry; |
236 |
|
|
|
ans = scm_c_make_vector (4, SCM_UNSPECIFIED); |
|
|
ve = SCM_WRITABLE_VELTS (ans); |
|
|
|
|
237 |
if (SCM_UNBNDP (net)) |
if (SCM_UNBNDP (net)) |
238 |
{ |
{ |
239 |
entry = getnetent (); |
entry = getnetent (); |
257 |
} |
} |
258 |
if (!entry) |
if (!entry) |
259 |
SCM_SYSERROR_MSG ("no such network ~A", scm_list_1 (net), errno); |
SCM_SYSERROR_MSG ("no such network ~A", scm_list_1 (net), errno); |
260 |
SCM_VECTOR_SET(ans, 0, scm_mem2string (entry->n_name, strlen (entry->n_name))); |
SCM_VECTOR_SET(result, 0, scm_mem2string (entry->n_name, strlen (entry->n_name))); |
261 |
SCM_VECTOR_SET(ans, 1, scm_makfromstrs (-1, entry->n_aliases)); |
SCM_VECTOR_SET(result, 1, scm_makfromstrs (-1, entry->n_aliases)); |
262 |
SCM_VECTOR_SET(ans, 2, SCM_MAKINUM (entry->n_addrtype + 0L)); |
SCM_VECTOR_SET(result, 2, SCM_MAKINUM (entry->n_addrtype + 0L)); |
263 |
SCM_VECTOR_SET(ans, 3, scm_ulong2num (entry->n_net + 0L)); |
SCM_VECTOR_SET(result, 3, scm_ulong2num (entry->n_net + 0L)); |
264 |
return ans; |
return result; |
265 |
} |
} |
266 |
#undef FUNC_NAME |
#undef FUNC_NAME |
267 |
#endif |
#endif |
277 |
"@code{getprotoent} (see below) if no arguments are supplied.") |
"@code{getprotoent} (see below) if no arguments are supplied.") |
278 |
#define FUNC_NAME s_scm_getproto |
#define FUNC_NAME s_scm_getproto |
279 |
{ |
{ |
280 |
SCM ans; |
SCM result = scm_c_make_vector (3, SCM_UNSPECIFIED); |
|
SCM *ve; |
|
|
struct protoent *entry; |
|
281 |
|
|
282 |
ans = scm_c_make_vector (3, SCM_UNSPECIFIED); |
struct protoent *entry; |
|
ve = SCM_WRITABLE_VELTS (ans); |
|
283 |
if (SCM_UNBNDP (protocol)) |
if (SCM_UNBNDP (protocol)) |
284 |
{ |
{ |
285 |
entry = getprotoent (); |
entry = getprotoent (); |
303 |
} |
} |
304 |
if (!entry) |
if (!entry) |
305 |
SCM_SYSERROR_MSG ("no such protocol ~A", scm_list_1 (protocol), errno); |
SCM_SYSERROR_MSG ("no such protocol ~A", scm_list_1 (protocol), errno); |
306 |
SCM_VECTOR_SET(ans, 0, scm_mem2string (entry->p_name, strlen (entry->p_name))); |
SCM_VECTOR_SET(result, 0, scm_mem2string (entry->p_name, strlen (entry->p_name))); |
307 |
SCM_VECTOR_SET(ans, 1, scm_makfromstrs (-1, entry->p_aliases)); |
SCM_VECTOR_SET(result, 1, scm_makfromstrs (-1, entry->p_aliases)); |
308 |
SCM_VECTOR_SET(ans, 2, SCM_MAKINUM (entry->p_proto + 0L)); |
SCM_VECTOR_SET(result, 2, SCM_MAKINUM (entry->p_proto + 0L)); |
309 |
return ans; |
return result; |
310 |
} |
} |
311 |
#undef FUNC_NAME |
#undef FUNC_NAME |
312 |
#endif |
#endif |
315 |
static SCM |
static SCM |
316 |
scm_return_entry (struct servent *entry) |
scm_return_entry (struct servent *entry) |
317 |
{ |
{ |
318 |
SCM ans; |
SCM result = scm_c_make_vector (4, SCM_UNSPECIFIED); |
|
SCM *ve; |
|
319 |
|
|
320 |
ans = scm_c_make_vector (4, SCM_UNSPECIFIED); |
SCM_VECTOR_SET(result, 0, scm_mem2string (entry->s_name, strlen (entry->s_name))); |
321 |
ve = SCM_WRITABLE_VELTS (ans); |
SCM_VECTOR_SET(result, 1, scm_makfromstrs (-1, entry->s_aliases)); |
322 |
SCM_VECTOR_SET(ans, 0, scm_mem2string (entry->s_name, strlen (entry->s_name))); |
SCM_VECTOR_SET(result, 2, SCM_MAKINUM (ntohs (entry->s_port) + 0L)); |
323 |
SCM_VECTOR_SET(ans, 1, scm_makfromstrs (-1, entry->s_aliases)); |
SCM_VECTOR_SET(result, 3, scm_mem2string (entry->s_proto, strlen (entry->s_proto))); |
324 |
SCM_VECTOR_SET(ans, 2, SCM_MAKINUM (ntohs (entry->s_port) + 0L)); |
return result; |
|
SCM_VECTOR_SET(ans, 3, scm_mem2string (entry->s_proto, strlen (entry->s_proto))); |
|
|
return ans; |
|
325 |
} |
} |
326 |
|
|
327 |
SCM_DEFINE (scm_getserv, "getserv", 0, 2, 0, |
SCM_DEFINE (scm_getserv, "getserv", 0, 2, 0, |