home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1989, 1990 by the University of Washington
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- */
-
- #include <stdio.h>
-
- #include <pfs.h>
- #include <pmachine.h> /* for correct definition of ZERO */
-
- static PATTRIB lfree = NULL;
- int pattrib_count = 0;
- int pattrib_max = 0;
-
- /*
- * atalloc - allocate and initialize vlink structure
- *
- * ATALLOC returns a pointer to an initialized structure of type
- * PATTRIB. If it is unable to allocate such a structure, it
- * returns NULL.
- */
- PATTRIB
- atalloc()
- {
- PATTRIB at;
- if(lfree) {
- at = lfree;
- lfree = lfree->next;
- }
- else {
- at = (PATTRIB) malloc(sizeof(PATTRIB_ST));
- if (!at) return(NULL);
- pattrib_max++;
- }
-
- pattrib_count++;
-
- ZERO(at);
- /* Initialize and fill in default values; all items are
- 0 [or NULL] save precedence */
- at->precedence = ATR_PREC_OBJECT;
-
- return(at);
- }
-
- /*
- * atfree - free a PATTRIB structure
- *
- * ATFREE takes a pointer to a PATTRRIB structure and adds it to
- * the free list for later reuse.
- */
- void
- atfree(at)
- PATTRIB at;
- {
- if(at->aname) stfree(at->aname);
-
- if((strcmp(at->avtype,"ASCII") == 0) && at->value.ascii)
- stfree(at->value.ascii);
- if((strcmp(at->avtype,"LINK") == 0) && at->value.link)
- vlfree(at->value.link);
-
- if(at->avtype) stfree(at->avtype);
-
- at->next = lfree;
- at->previous = NULL;
- lfree = at;
- pattrib_count--;
- }
-
- /*
- * atlfree - free a PATTRIB structure
- *
- * ATLFREE takes a pointer to a PATTRIB structure frees it and any linked
- * PATTRIB structures. It is used to free an entrie list of PATTRIB
- * structures.
- */
- void
- atlfree(at)
- PATTRIB at;
- {
- PATTRIB nxt;
-
- while(at != NULL) {
- nxt = at->next;
- atfree(at);
- at = nxt;
- }
- }
-
-