Move functions from dl-sysdepio.c to here, but mark them weak so
[kopensolaris-gnu/glibc.git] / sysdeps / mach / hurd / dl-sysdepio.c
1 /* Operating system support for run-time dynamic linker.  Hurd version.
2    Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public License as
7    published by the Free Software Foundation; either version 2 of the
8    License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Library General Public License for more details.
14
15    You should have received a copy of the GNU Library General Public
16    License along with the GNU C Library; see the file COPYING.LIB.  If not,
17    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18    Boston, MA 02111-1307, USA.  */
19
20 #include <hurd.h>
21 #include <link.h>
22 #include <unistd.h>
23 #include <fcntl.h>
24 #include <stdlib.h>
25 #include <sys/mman.h>
26 #include <sys/wait.h>
27 #include <assert.h>
28 #include <sysdep.h>
29 #include <mach/mig_support.h>
30 #include "hurdstartup.h"
31 #include <mach/host_info.h>
32 #include "../stdio-common/_itoa.h"
33 #include <hurd/auth.h>
34 #include <hurd/term.h>
35 #include <stdarg.h>
36 #include <ctype.h>
37 #include <sys/stat.h>
38
39 void
40 _dl_sysdep_fatal (const char *msg, ...)
41 {
42   va_list ap;
43
44   va_start (ap, msg);
45   do
46     {
47       size_t len = strlen (msg);
48       mach_msg_type_number_t nwrote;
49       do
50         {
51           if (__io_write (_hurd_init_dtable[2], msg, len, -1, &nwrote))
52             break;
53           len -= nwrote;
54           msg += nwrote;
55         } while (nwrote > 0);
56       msg = va_arg (ap, const char *);
57     } while (msg);
58   va_end (ap);
59
60   _exit (127);
61 }
62
63
64 void
65 _dl_sysdep_error (const char *msg, ...)
66 {
67   va_list ap;
68
69   va_start (ap, msg);
70   do
71     {
72       size_t len = strlen (msg);
73       mach_msg_type_number_t nwrote;
74       do
75         {
76           if (__io_write (_hurd_init_dtable[2], msg, len, -1, &nwrote))
77             break;
78           len -= nwrote;
79           msg += nwrote;
80         } while (nwrote > 0);
81       msg = va_arg (ap, const char *);
82     } while (msg);
83   va_end (ap);
84 }
85
86
87 void
88 _dl_sysdep_message (const char *msg, ...)
89 {
90   va_list ap;
91
92   va_start (ap, msg);
93   do
94     {
95       size_t len = strlen (msg);
96       mach_msg_type_number_t nwrote;
97       do
98         {
99           if (__io_write (_hurd_init_dtable[1], msg, len, -1, &nwrote))
100             break;
101           len -= nwrote;
102           msg += nwrote;
103         } while (nwrote > 0);
104       msg = va_arg (ap, const char *);
105     } while (msg);
106   va_end (ap);
107 }