home *** CD-ROM | disk | FTP | other *** search
-
- /********************************************
- memory.c
- copyright 1991, 1992 Michael D. Brennan
-
- This is a source file for mawk, an implementation of
- the AWK programming language.
-
- Mawk is distributed without warranty under the terms of
- the GNU General Public License, version 2, 1991.
- ********************************************/
-
-
- /* $Log: memory.c,v $
- * Revision 1.2 1993/07/17 13:23:08 mike
- * indent and general code cleanup
- *
- * Revision 1.1.1.1 1993/07/03 18:58:17 mike
- * move source to cvs
- *
- * Revision 5.2 1993/01/01 21:30:48 mike
- * split new_STRING() into new_STRING and new_STRING0
- *
- * Revision 5.1 1991/12/05 07:56:21 brennan
- * 1.1 pre-release
- *
- */
-
-
- /* memory.c */
-
- #include "mawk.h"
- #include "memory.h"
-
- static STRING *PROTO(xnew_STRING, (unsigned)) ;
-
-
- STRING null_str =
- {0, 1, ""} ;
-
- static STRING *
- xnew_STRING(len)
- unsigned len ;
- {
- STRING *sval = (STRING *) zmalloc(len + STRING_OH) ;
-
- sval->len = len ;
- sval->ref_cnt = 1 ;
- return sval ;
- }
-
- /* allocate space for a STRING */
-
- STRING *
- new_STRING0(len)
- unsigned len ;
- {
- if (len == 0)
- {
- null_str.ref_cnt++ ;
- return &null_str ;
- }
- else
- {
- STRING *sval = xnew_STRING(len) ;
- sval->str[len] = 0 ;
- return sval ;
- }
- }
-
- /* convert char* to STRING* */
-
- STRING *
- new_STRING(s)
- char *s ;
- {
-
- if (s[0] == 0)
- {
- null_str.ref_cnt++ ;
- return &null_str ;
- }
- else
- {
- STRING *sval = xnew_STRING(strlen(s)) ;
- strcpy(sval->str, s) ;
- return sval ;
- }
- }
-
-
- #ifdef DEBUG
-
- void
- DB_free_STRING(sval)
- register STRING *sval ;
- {
- if (--sval->ref_cnt == 0) zfree(sval, sval->len + STRING_OH) ;
- }
-
- #endif
-