]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/gdbserver/utils.c
Copyright updates for 2007.
[thirdparty/binutils-gdb.git] / gdb / gdbserver / utils.c
CommitLineData
c906108c 1/* General utility routines for the remote server for GDB.
6aba47ca
DJ
2 Copyright (C) 1986, 1989, 1993, 1995, 1996, 1997, 1999, 2000, 2002, 2003,
3 2007 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b
JM
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
6f0f660e
EZ
19 Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA. */
c906108c
SS
21
22#include "server.h"
23#include <stdio.h>
24#include <string.h>
25
26/* Generally useful subroutines used throughout the program. */
27
28/* Print the system error message for errno, and also mention STRING
29 as the file name for which the error was encountered.
30 Then return to command level. */
31
32void
fba45db2 33perror_with_name (char *string)
c906108c 34{
5c44784c 35#ifndef STDC_HEADERS
c906108c 36 extern int errno;
5c44784c
JM
37#endif
38 const char *err;
c906108c
SS
39 char *combined;
40
43d5792c
DJ
41 err = strerror (errno);
42 if (err == NULL)
c906108c
SS
43 err = "unknown error";
44
45 combined = (char *) alloca (strlen (err) + strlen (string) + 3);
46 strcpy (combined, string);
47 strcat (combined, ": ");
48 strcat (combined, err);
49
50 error ("%s.", combined);
51}
52
53/* Print an error message and return to command level.
54 STRING is the error message, used as a fprintf string,
55 and ARG is passed as an argument to it. */
56
0729219d 57void
c5aa993b 58error (const char *string,...)
c906108c
SS
59{
60 extern jmp_buf toplevel;
61 va_list args;
c906108c 62 va_start (args, string);
c906108c 63 fflush (stdout);
c906108c 64 vfprintf (stderr, string, args);
c906108c 65 fprintf (stderr, "\n");
c5aa993b 66 longjmp (toplevel, 1);
c906108c
SS
67}
68
69/* Print an error message and exit reporting failure.
70 This is for a error that we cannot continue from.
71 STRING and ARG are passed to fprintf. */
72
73/* VARARGS */
0729219d 74void
0a30fbc4 75fatal (const char *string,...)
c906108c
SS
76{
77 va_list args;
c906108c 78 va_start (args, string);
c906108c
SS
79 fprintf (stderr, "gdb: ");
80 vfprintf (stderr, string, args);
81 fprintf (stderr, "\n");
82 va_end (args);
83 exit (1);
84}
0a30fbc4
DJ
85
86/* VARARGS */
87void
88warning (const char *string,...)
89{
90 va_list args;
91 va_start (args, string);
92 fprintf (stderr, "gdb: ");
93 vfprintf (stderr, string, args);
94 fprintf (stderr, "\n");
95 va_end (args);
96}