|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T s ┃
Length: 1309 (0x51d) Types: TextFile Names: »storage.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/vn/storage.c«
/* ** vn news reader. ** ** storage.c - storage allocation routines ** ** see copyright disclaimer / history in vn.c source file */ #include <stdio.h> #include "vn.h" extern char *malloc(); extern int L_allow; extern PAGE Page; /* Storage allocaters. One more call to malloc in entry_order routine. */ char *str_store (s) char *s; { static unsigned av_len = 0; /* current storage available */ static char *avail; int len; if (s == NULL) s = ""; if ((len = strlen(s)+1) > av_len) { if (len > STRBLKSIZE) av_len = len; else av_len = STRBLKSIZE; if ((avail = malloc(av_len)) == NULL) printex ("can't allocate memory for string storage"); } strcpy (avail,s); s = avail; avail += len; av_len -= len; return (s); } /* ** called after number of terminal lines (L_allow) is known, to set ** up storage for Page. */ page_alloc () { char *body; if ((body = malloc(L_allow*sizeof(BODY))) == NULL) printex ("can't allocate memory for display storage"); Page.b = (BODY *) body; } NODE *node_store() { static int nd_avail = 0; static NODE *nd; NODE *ret; if (nd_avail <= 0) { if ((nd = (NODE *) malloc(sizeof(NODE)*NDBLKSIZE)) == NULL) printex ("can't allocate memory for newsgroup table"); nd_avail = NDBLKSIZE; } --nd_avail; ret = nd; ++nd; return(ret); }