/* Copyright (c) 1979 Regents of the University of California */
static char sccsid
[] = "@(#)utilities.c 4.2 10/20/80";
* allocate a block of storage on the heap
register char *memblk
, *ptr
;
if (memblk
== (char *)(-1))
for(ptr
=memblk
; ptr
<memblk
+need
; ptr
++)
* Free a block of storage on the stack
else if (free(ptr
) == -1)
0xffffffff , 0xfffffffe , 0xfffffffc , 0xfffffff8 ,
0xfffffff0 , 0xffffffe0 , 0xffffffc0 , 0xffffff80 ,
0xffffff00 , 0xfffffe00 , 0xfffffc00 , 0xfffff800 ,
0xfffff000 , 0xffffe000 , 0xffffc000 , 0xffff8000 ,
0xffff0000 , 0xfffe0000 , 0xfffc0000 , 0xfff80000 ,
0xfff00000 , 0xffe00000 , 0xffc00000 , 0xff800000 ,
0xff000000 , 0xfe000000 , 0xfc000000 , 0xf8000000 ,
0xf0000000 , 0xe0000000 , 0xc0000000 , 0x80000000 ,
* Constant set constructor
cttot(result
, lowerbnd
, upperbnd
, paircnt
, singcnt
, data
)
long *result
; /* pointer to final set */
int lowerbnd
; /* lower bound of set */
int upperbnd
; /* upper - lower of set */
int paircnt
; /* number of pairs to construct */
int singcnt
; /* number of singles to construct */
int data
; /* paircnt plus singcnt sets of data */
limit
= &result
[(upperbnd
+ 1 + BITSPERLONG
- 1) / BITSPERLONG
];
for (lp
= result
; lp
< limit
; )
for (cnt
= 0; cnt
< paircnt
; cnt
++) {
lower
= *dataptr
++ - lowerbnd
;
if (lower
< 0 || lower
> upperbnd
) {
upper
= *dataptr
++ - lowerbnd
;
if (upper
< 0 || upper
> upperbnd
) {
lowerdiv
= lower
/ BITSPERLONG
;
lowermod
= lower
% BITSPERLONG
;
upperdiv
= upper
/ BITSPERLONG
;
uppermod
= upper
% BITSPERLONG
;
if ( lowerdiv
== upperdiv
) {
temp
&= ~_mask
[ uppermod
+ 1 ];
result
[ lowerdiv
] |= temp
;
limit
= &result
[ upperdiv
-1 ];
for ( lp
= &result
[ lowerdiv
+1 ] ; lp
<= limit
; lp
++ ) {
if ( lowerdiv
!= upperdiv
) {
result
[ upperdiv
] |= ~_mask
[ uppermod
+ 1 ];
for (cnt
= 0; cnt
< singcnt
; cnt
++) {
lower
= *dataptr
++ - lowerbnd
;
if (lower
< 0 || lower
> upperbnd
) {
lowerdiv
= lower
/ BITSPERLONG
;
lowermod
= lower
% BITSPERLONG
;
result
[ lowerdiv
] |= ( 1 << lowermod
);
inct(element
, paircnt
, singcnt
, data
)
register int element
; /* element to find */
int paircnt
; /* number of pairs to check */
int singcnt
; /* number of singles to check */
int data
; /* paircnt plus singcnt bounds */
for (cnt
= 0; cnt
< paircnt
; cnt
++) {
if (element
< *dataptr
++) {
if (element
<= *dataptr
++) {
for (cnt
= 0; cnt
< singcnt
; cnt
++) {
if (element
== *dataptr
++) {
8, 9, 10, 4, 5, 6, 10, 22, 23, 10, 0
register char *ap
, *cp
, *dp
;
for (dp
= pd_date
; *dp
; *ap
++ = cp
[*dp
++]);
for (cp
= cp
+ 10, i
= 10; i
; *ap
++ = *cp
++, i
--);
fputs("Execution terminated",stderr
);
fputs(" abnormally",stderr
);