8sa1-gcc/gcc/f/sts.c
Kaveh R. Ghazi 04d87103d4 Warning fixes:
* sta.c (ffesta_ffebad_1sp, ffesta_ffebad_1st, ffesta_ffebad_2st):
        Const-ify a char*.
        * sta.h (ffesta_ffebad_1sp, ffesta_ffebad_1st, ffesta_ffebad_2st):
        Likewise.
        * stb.c (ffestb_local_u_): Likewise.
        (ffestb_do, ffestb_dowhile, ffestb_else, ffestb_elsexyz,
        ffestb_else3_, ffestb_endxyz, ffestb_goto, ffestb_let,
        ffestb_type, ffestb_type1_, ffestb_varlist, ffestb_R423B,
        ffestb_R522, ffestb_R528, ffestb_R542, ffestb_R834, ffestb_R835,
        ffestb_R838, ffestb_R841, ffestb_R1102, ffestb_blockdata,
        ffestb_R1212, ffestb_R1228, ffestb_V009, ffestb_module,
        ffestb_R809, ffestb_R810, ffestb_R10014_, ffestb_R10015_,
        ffestb_R10018_, ffestb_R1107, ffestb_R1202, ffestb_R12026_,
        ffestb_S3P4, ffestb_V012, ffestb_V014, ffestb_V025, ffestb_V0255_,
        ffestb_V020, ffestb_dimlist, ffestb_dummy, ffestb_R524,
        ffestb_R547, ffestb_decl_chartype, ffestb_decl_dbltype,
        ffestb_decl_gentype, ffestb_decl_recursive, ffestb_decl_entsp_2_,
        ffestb_decl_func_, ffestb_V003, ffestb_V016, ffestb_V027,
        ffestb_decl_R539): Likewise.
        * stb.h (_ffestb_args_): Likewise.
        * stc.c (ffestc_subr_binsrch_, ffestc_subr_is_present_,
        ffestc_subr_speccmp_, ffestc_R904, ffestc_R907): Likewise.
        * std.c (ffestd_R1001dump_1005_1_, ffestd_R1001dump_1005_2_,
        ffestd_R1001dump_1005_3_, ffestd_R1001dump_1005_4_,
        ffestd_R1001dump_1005_5_, ffestd_R1001dump_1010_1_,
        ffestd_R1001dump_1010_2_, ffestd_R1001dump_1010_3_,
        ffestd_R1001dump_1010_4_, ffestd_R1001dump_1010_5_): Likewise.
        * ste.c (ffeste_begin_iterdo_, ffeste_subr_file_): Likewise.
        * sts.c (ffests_printf_1D, ffests_printf_1U, ffests_printf_1s,
        ffests_printf_2Us, ffests_puts, ffests_puttext): Likewise.
        * sts.h (ffests_printf_1D, ffests_printf_1U, ffests_printf_1s,
        ffests_printf_2Us, ffests_puts, ffests_puttext): Likewise.
        * stt.c (ffestt_exprlist_drive, ffestt_implist_drive,
        ffestt_tokenlist_drive): Add prototype arguments.
        * stt.h (ffestt_exprlist_drive, ffestt_implist_drive,
        ffestt_tokenlist_drive): Likewise.
        * stu.c (ffestu_dummies_transition_): Likewise.
        (ffestu_sym_end_transition): Const-ify a char*.
        * stw.c (ffestw_display_state, ffestw_new, ffestw_pop): Add
        prototype arguments.
        * stw.h (ffestw_display_state, ffestw_new, ffestw_pop): Likewise.
        * version.c (ffe_version_string): Const-ify a char*.
        * version.h (ffe_version_string): Likewise.

From-SVN: r26064
1999-03-30 09:23:52 +00:00

274 lines
6.2 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* sts.c -- Implementation File (module.c template V1.0)
Copyright (C) 1995 Free Software Foundation, Inc.
Contributed by James Craig Burley.
This file is part of GNU Fortran.
GNU Fortran is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Fortran is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Fortran; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
Related Modules:
None (despite the name, it doesn't really depend on ffest*)
Description:
Provides an arbitrary-length string facility for the limited needs of
GNU Fortran FORMAT statement generation.
Modifications:
*/
/* Include files. */
#include "proj.h"
#include "sts.h"
#include "com.h"
#include "malloc.h"
/* Externals defined here. */
/* Simple definitions and enumerations. */
/* Internal typedefs. */
/* Private include files. */
/* Internal structure definitions. */
/* Static objects accessed by functions in this module. */
/* Static functions (internal). */
/* Internal macros. */
/* ffests_kill -- Kill a varying-length string
ffests s;
ffests_kill(s);
The storage associated with the string <s> is freed. */
void
ffests_kill (ffests s)
{
if (s->text_ != NULL)
malloc_kill_ksr (s->pool_, s->text_, s->max_);
}
/* ffests_new -- Make a varying-length string
ffests s;
ffests_new(s,malloc_pool_image(),0);
The string is initialized to hold, in this case, 0 characters, and
current and future heap manipulations to hold the string will use
the image pool. */
void
ffests_new (ffests s, mallocPool pool, ffestsLength size)
{
s->pool_ = pool;
s->len_ = 0;
s->max_ = size;
if (size == 0)
s->text_ = NULL;
else
s->text_ = malloc_new_ksr (pool, "ffests", size);
}
/* ffests_printf_1D -- printf("...%ld...",(long)) to a string
ffests s;
ffests_printf_1D(s,"...%ld...",1);
Like printf, but into a string. */
void
ffests_printf_1D (ffests s, const char *ctl, long arg1)
{
char quickbuf[40];
char *buff;
ffestsLength len;
if ((len = strlen (ctl) + 21) < ARRAY_SIZE (quickbuf))
/* No # bigger than 20 digits. */
{
sprintf (&quickbuf[0], ctl, arg1);
ffests_puttext (s, &quickbuf[0], strlen (quickbuf));
}
else
{
buff = malloc_new_ks (malloc_pool_image (), "ffests_printf_1D", len);
sprintf (buff, ctl, arg1);
ffests_puttext (s, buff, strlen (buff));
malloc_kill_ks (malloc_pool_image (), buff, len);
}
}
/* ffests_printf_1U -- printf("...%lu...",(unsigned long)) to a string
ffests s;
ffests_printf_1U(s,"...%lu...",1);
Like printf, but into a string. */
void
ffests_printf_1U (ffests s, const char *ctl, unsigned long arg1)
{
char quickbuf[40];
char *buff;
ffestsLength len;
if ((len = strlen (ctl) + 21) < ARRAY_SIZE (quickbuf))
/* No # bigger than 20 digits. */
{
sprintf (&quickbuf[0], ctl, arg1);
ffests_puttext (s, &quickbuf[0], strlen (quickbuf));
}
else
{
buff = malloc_new_ks (malloc_pool_image (), "ffests_printf_1U", len);
sprintf (buff, ctl, arg1);
ffests_puttext (s, buff, strlen (buff));
malloc_kill_ks (malloc_pool_image (), buff, len);
}
}
/* ffests_printf_1s -- printf("...%s...",(char *)) to a string
ffests s;
ffests_printf_1s(s,"...%s...","hi there!");
Like printf, but into a string. */
void
ffests_printf_1s (ffests s, const char *ctl, const char *arg1)
{
char quickbuf[40];
char *buff;
ffestsLength len;
if ((len = strlen (ctl) + strlen (arg1) - 1) < ARRAY_SIZE (quickbuf))
{
sprintf (&quickbuf[0], ctl, arg1);
ffests_puttext (s, &quickbuf[0], strlen (quickbuf));
}
else
{
buff = malloc_new_ks (malloc_pool_image (), "ffests_printf_1s", len);
sprintf (buff, ctl, arg1);
ffests_puttext (s, buff, strlen (buff));
malloc_kill_ks (malloc_pool_image (), buff, len);
}
}
/* ffests_printf_2Us -- printf("...%lu...%s...",...) to a string
ffests s;
ffests_printf_2Us(s,"...%lu...%s...",1,"hi there!");
Like printf, but into a string. */
void
ffests_printf_2Us (ffests s, const char *ctl, unsigned long arg1, const char *arg2)
{
char quickbuf[60];
char *buff;
ffestsLength len;
if ((len = strlen (ctl) + 21 + strlen (arg2) - 1) < ARRAY_SIZE (quickbuf))
/* No # bigger than 20 digits. */
{
sprintf (&quickbuf[0], ctl, arg1, arg2);
ffests_puttext (s, &quickbuf[0], strlen (quickbuf));
}
else
{
buff = malloc_new_ks (malloc_pool_image (), "ffests_printf_2Us", len);
sprintf (buff, ctl, arg1, arg2);
ffests_puttext (s, buff, strlen (buff));
malloc_kill_ks (malloc_pool_image (), buff, len);
}
}
/* ffests_putc -- Put a single character into string
ffests s;
ffests_putc(s,'*'); */
void
ffests_putc (ffests s, char c)
{
ffests_puttext (s, &c, 1);
}
/* ffests_puts -- Put a zero-terminated (C-style) string into string
ffests s;
ffests_puts(s,"append me"); */
void
ffests_puts (ffests s, const char *string)
{
ffests_puttext (s, string, strlen (string));
}
/* ffests_puttext -- Put a number of characters into string
ffests s;
ffests_puttext(s,"hi there",8);
The string need not be 0-terminated, because the passed length is used,
and may be 0. */
void
ffests_puttext (ffests s, const char *text, ffestsLength length)
{
ffestsLength newlen;
ffestsLength newmax;
if (length <= 0)
return;
newlen = s->len_ + length;
if (newlen > s->max_)
{
if (s->text_ == NULL)
{
s->max_ = 40;
s->text_ = malloc_new_ksr (s->pool_, "ffests", s->max_);
}
else
{
newmax = s->max_ << 1;
while (newmax < newlen)
newmax <<= 1;
s->text_ = malloc_resize_ksr (s->pool_, s->text_, newmax, s->max_);
s->max_ = newmax;
}
}
memcpy (s->text_ + s->len_, text, length);
s->len_ = newlen;
}