|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved.
4: *
5: * This code is derived from software contributed to Berkeley by
6: * Edward Wang at The University of California, Berkeley.
7: *
8: * Redistribution and use in source and binary forms are permitted provided
9: * that: (1) source distributions retain this entire copyright notice and
10: * comment, and (2) distributions including binaries display the following
11: * acknowledgement: ``This product includes software developed by the
12: * University of California, Berkeley and its contributors'' in the
13: * documentation or other materials provided with the distribution and in
14: * all advertising materials mentioning features or use of this software.
15: * Neither the name of the University nor the names of its contributors may
16: * be used to endorse or promote products derived from this software without
17: * specific prior written permission.
18: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
19: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
20: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21: */
22:
23: #ifndef lint
24: static char sccsid[] = "@(#)wwalloc.c 3.11 (Berkeley) 6/6/90";
25: #endif /* not lint */
26:
27: #include "ww.h"
28:
29: char **
30: wwalloc(row, col, nrow, ncol, size)
31: {
32: register char *p, **pp;
33: register int i;
34:
35: /* fast, call malloc only once */
36: pp = (char **)
37: malloc((unsigned) sizeof (char **) * nrow + size * nrow * ncol);
38: if (pp == 0) {
39: wwerrno = WWE_NOMEM;
40: return 0;
41: }
42: p = (char *)&pp[nrow];
43: col *= size;
44: size /= sizeof (char); /* paranoid */
45: size *= ncol;
46: for (i = 0; i < nrow; i++) {
47: pp[i] = p - col;
48: p += size;
49: }
50: return pp - row;
51: }
52:
53: wwfree(p, row)
54: register char **p;
55: {
56: free((char *)(p + row));
57: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.