* asranlib/asranlib.c, link/lkar.h, link/lkar.c:
[fw/sdcc] / as / link / lkhead.c
index b9c5541a8c6fd0f247e1cb81604c4c6676530a26..0dd2f5d86ea37d21156282bb05632bc6ff64783c 100644 (file)
@@ -1,65 +1,72 @@
-/* lkhead.c */
+/* lkhead.c
 
-/*
- * (C) Copyright 1989-1995
- * All Rights Reserved
- *
- * Alan R. Baldwin
- * 721 Berkeley St.
- * Kent, Ohio  44240
- */
+   Copyright (C) 1989-1995 Alan R. Baldwin
+   721 Berkeley St., Kent, Ohio 44240
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdio.h>
 #include <string.h>
 #include "aslink.h"
 
-/*Module       lkhead.c
+/*Module        lkhead.c
  *
- *     The module lkhead.c contains the function newhead() which
- *     creates a head structure and the function module() which
- *     loads the module name into the current head structure.
+ *      The module lkhead.c contains the function newhead() which
+ *      creates a head structure and the function module() which
+ *      loads the module name into the current head structure.
  *
- *     lkhead.c contains the following functions:
- *             VOID    newhead()
- *             VOID    module()
+ *      lkhead.c contains the following functions:
+ *              VOID    newhead()
+ *              VOID    module()
  *
- *     lkhead.c contains no local variables.
+ *      lkhead.c contains no local variables.
  */
 
-/*)Function    VOID    newhead()
- *
- *     The function newhead() creates a head structure.  All head
- *     structures are linked to form a linked list of head structures
- *     with the current head structure at the tail of the list.
- *
- *     local variables:
- *             int     i               evaluation value
- *             head *  thp             temporary pointer
- *                                     to a header structure
- *
- *     global variables:
- *             area    *ap             Pointer to the current
- *                                     area structure
- *             lfile   *cfp            The pointer *cfp points to the
- *                                     current lfile structure
- *             head    *headp          The pointer to the first
- *                                     head structure of a linked list
- *             head    *hp             Pointer to the current
- *                                     head structure
- *
- *     functions called:
- *             Addr_T  expr()          lkeval.c
- *             VOID *  new()           lksym.c
- *             VOID    lkparea()       lkarea.c
- *
- *     side effects:
- *             A new head structure is created and linked to any
- *             existing linked head structure.  The head structure
- *             parameters of file handle, number of areas, and number
- *             of global symbols are loaded into the structure.
- *             The default area "_abs_" is created when the first
- *             head structure is created and an areax structure is
- *             created for every head structure called.
+/*)Function     VOID    newhead()
+ *
+ *      The function newhead() creates a head structure.  All head
+ *      structures are linked to form a linked list of head structures
+ *      with the current head structure at the tail of the list.
+ *
+ *      local variables:
+ *              int     i               evaluation value
+ *              head *  thp             temporary pointer
+ *                                      to a header structure
+ *
+ *      global variables:
+ *              area    *ap             Pointer to the current
+ *                                      area structure
+ *              lfile   *cfp            The pointer *cfp points to the
+ *                                      current lfile structure
+ *              head    *headp          The pointer to the first
+ *                                      head structure of a linked list
+ *              head    *hp             Pointer to the current
+ *                                      head structure
+ *
+ *      functions called:
+ *              Addr_T  expr()          lkeval.c
+ *              VOID *  new()           lksym.c
+ *              VOID    lkparea()       lkarea.c
+ *
+ *      side effects:
+ *              A new head structure is created and linked to any
+ *              existing linked head structure.  The head structure
+ *              parameters of file handle, number of areas, and number
+ *              of global symbols are loaded into the structure.
+ *              The default area "_abs_" is created when the first
+ *              head structure is created and an areax structure is
+ *              created for every head structure called.
  */
 
 /*
 VOID
 newhead()
 {
-       register int i;
-       struct head *thp;
+        register int i;
+        struct head *thp;
 
-       hp = (struct head *) new (sizeof(struct head));
-       if (headp == NULL) {
-               headp = hp;
-       } else {
-               thp = headp;
-               while (thp->h_hp)
-                       thp = thp->h_hp;
-               thp->h_hp = hp;
-       }
-       /*
-        * Set file pointer
-        */
-       hp->h_lfile = cfp;
-       /*
-        * Evaluate and build Area pointer list
-        */
-       i = hp->h_narea = eval();
-       if (i)
-               hp->a_list = (struct areax **) new (i*sizeof(struct areax *));
-       /*
-        * Evaluate and build Global symbol pointer list
-        */
-       skip(-1);
-       i = hp->h_nglob = eval();
-       if (i)
-               hp->s_list = (struct sym **) new (i*sizeof(struct sym *));
-       /*
-        * Setup Absolute DEF linkage.
-        */
-       lkparea(_abs_);
-       ap->a_flag = A_ABS;
+        hp = (struct head *) new (sizeof(struct head));
+        if (headp == NULL) {
+                headp = hp;
+        } else {
+                thp = headp;
+                while (thp->h_hp)
+                        thp = thp->h_hp;
+                thp->h_hp = hp;
+        }
+        /*
+         * Set file pointer
+         */
+        hp->h_lfile = cfp;
+        /*
+         * Evaluate and build Area pointer list
+         */
+        i = hp->h_narea = eval();
+        if (i)
+                hp->a_list = (struct areax **) new (i*sizeof(struct areax *));
+        /*
+         * Evaluate and build Global symbol pointer list
+         */
+        skip(-1);
+        i = hp->h_nglob = eval();
+        if (i)
+                hp->s_list = (struct sym **) new (i*sizeof(struct sym *));
+        /*
+         * Setup Absolute DEF linkage.
+         */
+        lkparea(_abs_);
+        ap->a_flag = A_ABS;
     axp->a_addr = 0;
 }
 
-/*)Function    VOID    module()
+/*)Function     VOID    module()
  *
- *     The function module() copies the module name into
- *     the current head structure.
+ *      The function module() copies the module name into
+ *      the current head structure.
  *
- *     local variables:
- *             char    id[]            module id string
+ *      local variables:
+ *              char    id[]            module id string
  *
- *     global variables:
- *             head    *headp          The pointer to the first
- *                                     head structure of a linked list
- *             head    *hp             Pointer to the current
- *                                     head structure
- *             int     lkerr           error flag
- *             FILE *  stderr          c_library
+ *      global variables:
+ *              head    *headp          The pointer to the first
+ *                                      head structure of a linked list
+ *              head    *hp             Pointer to the current
+ *                                      head structure
+ *              int     lkerr           error flag
+ *              FILE *  stderr          c_library
  *
- *     functions called:
- *             int     fprintf()       c_library
- *             VOID    getid()         lklex.c
- *             char *  strncpy()       c_library
+ *      functions called:
+ *              int     fprintf()       c_library
+ *              VOID    getid()         lklex.c
+ *              char *  strncpy()       c_library
  *
- *     side effects:
- *             The module name is copied into the head structure.
+ *      side effects:
+ *              The module name is copied into the head structure.
  */
 
 /*
@@ -142,13 +149,13 @@ newhead()
 VOID
 module()
 {
-       char id[NCPS];
+        char id[NCPS];
 
-       if (headp) {
-               getid(id, -1);
-               strncpy(hp->m_id, id, NCPS);
-       } else {
-               fprintf(stderr, "No header defined\n");
-               lkerr++;
-       }
+        if (headp) {
+                getid(id, -1);
+                strncpy(hp->m_id, id, NCPS);
+        } else {
+                fprintf(stderr, "No header defined\n");
+                lkerr++;
+        }
 }