X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/378cc40b38293ffc7298c6a7ed3cd740ad79be52..bfd025d94e67a140ec0eeee79dfcef213d537327:/x2p/util.c diff --git a/x2p/util.c b/x2p/util.c index 0d98de8..aff3f00 100644 --- a/x2p/util.c +++ b/x2p/util.c @@ -1,39 +1,36 @@ -/* $Header: util.c,v 2.0 88/06/05 00:16:07 root Exp $ +/* util.c * - * $Log: util.c,v $ - * Revision 2.0 88/06/05 00:16:07 root - * Baseline version 2.0. - * + * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, + * 2000, 2001, 2005 by Larry Wall and others + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. */ -#include - -#include "handy.h" #include "EXTERN.h" #include "a2p.h" #include "INTERN.h" #include "util.h" +#include #define FLUSH -#define MEM_SIZE unsigned int -static char nomem[] = "Out of memory!\n"; +static const char nomem[] = "Out of memory!\n"; /* paranoid version of malloc */ -static int an = 0; -char * -safemalloc(size) -MEM_SIZE size; +Malloc_t +safemalloc(MEM_SIZE size) { - char *ptr; - char *malloc(); + Malloc_t ptr; - ptr = malloc(size?size:1); /* malloc(0) is NASTY on our system */ + /* malloc(0) is NASTY on some systems */ + ptr = malloc(size ? size : 1); #ifdef DEBUGGING if (debug & 128) - fprintf(stderr,"0x%x: (%05d) malloc %d bytes\n",ptr,an++,size); + fprintf(stderr,"0x%lx: (%05d) malloc %ld bytes\n",(unsigned long)ptr, + an++,(long)size); #endif if (ptr != Nullch) return ptr; @@ -42,23 +39,22 @@ MEM_SIZE size; exit(1); } /*NOTREACHED*/ + return 0; } /* paranoid version of realloc */ -char * -saferealloc(where,size) -char *where; -MEM_SIZE size; +Malloc_t +saferealloc(Malloc_t where, MEM_SIZE size) { - char *ptr; - char *realloc(); + Malloc_t ptr; - ptr = realloc(where,size?size:1); /* realloc(0) is NASTY on our system */ + /* realloc(0) is NASTY on some systems */ + ptr = realloc(where, size ? size : 1); #ifdef DEBUGGING if (debug & 128) { - fprintf(stderr,"0x%x: (%05d) rfree\n",where,an++); - fprintf(stderr,"0x%x: (%05d) realloc %d bytes\n",ptr,an++,size); + fprintf(stderr,"0x%lx: (%05d) rfree\n",(unsigned long)where,an++); + fprintf(stderr,"0x%lx: (%05d) realloc %ld bytes\n",(unsigned long)ptr,an++,(long)size); } #endif if (ptr != Nullch) @@ -68,72 +64,25 @@ MEM_SIZE size; exit(1); } /*NOTREACHED*/ + return 0; } /* safe version of free */ -safefree(where) -char *where; +Free_t +safefree(Malloc_t where) { #ifdef DEBUGGING if (debug & 128) - fprintf(stderr,"0x%x: (%05d) free\n",where,an++); + fprintf(stderr,"0x%lx: (%05d) free\n",(unsigned long)where,an++); #endif free(where); } -/* safe version of string copy */ - -char * -safecpy(to,from,len) -char *to; -register char *from; -register int len; -{ - register char *dest = to; - - if (from != Nullch) - for (len--; len && (*dest++ = *from++); len--) ; - *dest = '\0'; - return to; -} - -#ifdef undef -/* safe version of string concatenate, with \n deletion and space padding */ - -char * -safecat(to,from,len) -char *to; -register char *from; -register int len; -{ - register char *dest = to; - - len--; /* leave room for null */ - if (*dest) { - while (len && *dest++) len--; - if (len) { - len--; - *(dest-1) = ' '; - } - } - if (from != Nullch) - while (len && (*dest++ = *from++)) len--; - if (len) - dest--; - if (*(dest-1) == '\n') - dest--; - *dest = '\0'; - return to; -} -#endif - /* copy a string up to some (non-backslashed) delimiter, if any */ char * -cpytill(to,from,delim) -register char *to, *from; -register int delim; +cpytill(register char *to, register char *from, register int delim) { for (; *from; from++,to++) { if (*from == '\\') { @@ -152,9 +101,7 @@ register int delim; char * -cpy2(to,from,delim) -register char *to, *from; -register int delim; +cpy2(register char *to, register char *from, register int delim) { for (; *from; from++,to++) { if (*from == '\\') @@ -172,11 +119,10 @@ register int delim; /* return ptr to little string in big string, NULL if not found */ char * -instr(big, little) -char *big, *little; - +instr(char *big, const char *little) { - register char *t, *s, *x; + register char *t, *x; + register const char *s; for (t = big; *t; t++) { for (x=t,s=little; *s; x++,s++) { @@ -194,10 +140,9 @@ char *big, *little; /* copy a string to a safe spot */ char * -savestr(str) -char *str; +savestr(const char *str) { - register char *newaddr = safemalloc((MEM_SIZE)(strlen(str)+1)); + register char * const newaddr = (char *) safemalloc((MEM_SIZE)(strlen(str)+1)); (void)strcpy(newaddr,str); return newaddr; @@ -206,75 +151,46 @@ char *str; /* grow a static string to at least a certain length */ void -growstr(strptr,curlen,newlen) -char **strptr; -int *curlen; -int newlen; +growstr(char **strptr, int *curlen, int newlen) { if (newlen > *curlen) { /* need more room? */ if (*curlen) - *strptr = saferealloc(*strptr,(MEM_SIZE)newlen); + *strptr = (char *) saferealloc(*strptr,(MEM_SIZE)newlen); else - *strptr = safemalloc((MEM_SIZE)newlen); + *strptr = (char *) safemalloc((MEM_SIZE)newlen); *curlen = newlen; } } -/*VARARGS1*/ -fatal(pat,a1,a2,a3,a4) -char *pat; +void +fatal(const char *pat,...) { +#if defined(HAS_VPRINTF) + va_list args; + + va_start(args, pat); + vfprintf(stderr,pat,args); + va_end(args); +#else fprintf(stderr,pat,a1,a2,a3,a4); +#endif exit(1); } -static bool firstsetenv = TRUE; -extern char **environ; - +#if defined(DARWIN) +__private_extern__ /* warn() conflicts with libc */ +#endif void -setenv(nam,val) -char *nam, *val; +warn(const char *pat,...) { - register int i=envix(nam); /* where does it go? */ +#if defined(HAS_VPRINTF) + va_list args; - if (!environ[i]) { /* does not exist yet */ - if (firstsetenv) { /* need we copy environment? */ - int j; -#ifndef lint - char **tmpenv = (char**) /* point our wand at memory */ - safemalloc((i+2) * sizeof(char*)); + va_start(args, pat); + vfprintf(stderr,pat,args); + va_end(args); #else - char **tmpenv = Null(char **); -#endif /* lint */ - - firstsetenv = FALSE; - for (j=0; j