Metropoli BBS
VIEWER: newtok.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.  All Rights Reserved. */
/* newtok APL2 V1.0.0 **************************************************
* Called to allocate a new token.                                      *
***********************************************************************/
#define INCLUDES APLMEM+APLTOKEN
#include "includes.h"
Apltoken newtok(parm_code,parm_flags,parm_offset,namebuf,namelen)
int parm_code, parm_flags, parm_offset; /* token code, flags, offset */
char *namebuf;                /* name buffer */
int namelen;                  /* length of name buffer */
{
     Chrcopy; Execfree;
     extern int aplerr;
     Apltoken new;
     char *cp;

     if (aplerr) return(NULL);
     new = malloc(sizeof (struct apltoken));
     if (new == NULL) return(NULL); /* out of storage */
     new->token_flags = parm_flags;
     new->token_offset = parm_offset;
     new->token_code = parm_code;
     new->token_work = NULL;
     if (namebuf) {
          new->token_ptr.token_string = cp = malloc(namelen + 1);
          if (cp == NULL) { /* out of storage */
               execfree(new);
               return(NULL);
          }
          cp = chrcopy(cp,namebuf,namelen,1); /* copy name */
          *cp = '\0'; /* add delimiter */
     }
     else new->token_ptr.token_string = NULL;
     return(new);
}
[ RETURN TO DIRECTORY ]