115724Sache/* Allocate memory region filled with spaces.
2254400Sglebius   Copyright (C) 1991-2024 Free Software Foundation, Inc.
315724Sache
450477SpeterThis file is part of the libiberty library.
515724SacheLibiberty is free software; you can redistribute it and/or
615724Sachemodify it under the terms of the GNU Library General Public
7254400SglebiusLicense as published by the Free Software Foundation; either
8254400Sglebiusversion 2 of the License, or (at your option) any later version.
915724Sache
10254400SglebiusLibiberty is distributed in the hope that it will be useful,
11254400Sglebiusbut WITHOUT ANY WARRANTY; without even the implied warranty of
1215724SacheMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13254400SglebiusLibrary General Public License for more details.
14254400Sglebius
15254400SglebiusYou should have received a copy of the GNU Library General Public
16254400SglebiusLicense along with libiberty; see the file COPYING.LIB.  If
17254400Sglebiusnot, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
18254400SglebiusBoston, MA 02110-1301, USA.  */
19254400Sglebius
20254400Sglebius/*
21254400Sglebius
22254400Sglebius@deftypefn Extension char* spaces (int @var{count})
23254400Sglebius
24254400SglebiusReturns a pointer to a memory region filled with the specified
25254400Sglebiusnumber of spaces and null terminated.  The returned pointer is
26254400Sglebiusvalid until at least the next call.
27254400Sglebius
28254400Sglebius@end deftypefn
29254400Sglebius
30254400Sglebius*/
31254400Sglebius
32254400Sglebius#ifdef HAVE_CONFIG_H
33254400Sglebius#include "config.h"
3415724Sache#endif
35254400Sglebius#include "ansidecl.h"
3615724Sache#include "libiberty.h"
37
38#if VMS
39#include <stdlib.h>
40#include <unixlib.h>
41#else
42/* For systems with larger pointers than ints, these must be declared.  */
43extern void *malloc (size_t);
44extern void free (void *);
45#endif
46
47const char *
48spaces (int count)
49{
50  register char *t;
51  static char *buf;
52  static int maxsize;
53
54  if (count > maxsize)
55    {
56      free (buf);
57      buf = (char *) malloc (count + 1);
58      if (buf == (char *) 0)
59	return 0;
60      for (t = buf + count ; t != buf ; )
61	{
62	  *--t = ' ';
63	}
64      maxsize = count;
65      buf[count] = '\0';
66    }
67  return (const char *) (buf + maxsize - count);
68}
69
70