home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
printer
/
proff.arc
/
STACK.C
< prev
Wrap
C/C++ Source or Header
|
1988-02-12
|
2KB
|
115 lines
#include <stdio.h>
#include "proff.h"
struct _proffitem {
int Xinval;
int Xrmval;
int Xoffset;
int Xlsval;
int Xplval;
int Xm1val;
int Xm2val;
int Xm3val;
int Xm4val;
int Xfill;
int Xrjust;
char Xcchar;
char Xgenesc;
char Xroman;
char Xbolding;
char Xpaging;
char Xautopar;
struct _proffitem *prev;
};
static struct
_proffitem *head = NULL;
static struct
_proffitem *top = NULL;
char *pusherr = "save: stack overflow.\n";
char *poperr = "restore: stack underflow.\n";
/*
* save - save proff parameters
*
*/
save()
{
struct _proffitem *sp;
char *malloc();
if ((sp = (struct _proffitem *) malloc(sizeof(*sp))) == NULL) {
fprintf(stderr,pusherr);
return(FALSE);
}
else {
p_memoryus += sizeof(struct _proffitem);
if (head == NULL) { /* first element in stack */
head = sp;
top = NULL;
}
sp->Xinval = inval;
sp->Xrmval = rmval;
sp->Xoffset= offset;
sp->Xlsval = lsval;
sp->Xplval = plval;
sp->Xm1val = m1val;
sp->Xm2val = m2val;
sp->Xm3val = m3val;
sp->Xm4val = m4val;
sp->Xfill = fill;
sp->Xrjust = rjust;
sp->Xcchar = cchar;
sp->Xgenesc= genesc;
sp->Xroman = roman;
sp->Xbolding = bolding;
sp->Xpaging = paging;
sp->Xautopar = autopar;
sp->prev = top;
top = sp;
}
return(TRUE);
}
restore()
{
struct _proffitem *sp;
if (top != NULL) {
inval = top->Xinval;
rmval = top->Xrmval;
offset= top->Xoffset;
lsval = top->Xlsval;
plval = top->Xplval;
m1val = top->Xm1val;
m2val = top->Xm2val;
m3val = top->Xm3val;
m4val = top->Xm4val;
fill = top->Xfill;
rjust = top->Xrjust;
cchar = top->Xcchar;
genesc= top->Xgenesc;
roman = top->Xroman;
bolding = top->Xbolding;
paging = top->Xpaging;
autopar = top->Xautopar;
sp = top->prev;
free(top);
p_memoryus -= sizeof(struct _proffitem);
if ((top = sp) == NULL)
head = NULL;
}
else
fprintf(stderr,poperr);
}