home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 581b.lha / genmake_v1.03 / nodes.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-11-07  |  1.6 KB  |  105 lines

  1. /* nodes.c */
  2.  
  3. #include <stdio.h>
  4. #include "types.h"
  5.  
  6. DNODE *
  7. add_dep_node(make_list,name)
  8. DNODE        **make_list;
  9. char        *name;
  10. {
  11.     DNODE        *prev;
  12.     DNODE        *cur;
  13.     DNODE        *new;
  14.  
  15.     for (prev = NULL, cur = *make_list; cur != NULL; cur = cur->next)
  16.         prev = cur;
  17.     new = (DNODE *)malloc(sizeof(DNODE));
  18.     new->name = (char *)malloc(strlen(name)+1);
  19.     strcpy(new->name,name);
  20.     new->next = NULL;
  21.     new->dlist = NULL;
  22.     new->use_it = 1;
  23.     if (prev == NULL)
  24.         *make_list = new;
  25.     else
  26.         prev->next = new;
  27.     return(new);
  28. }
  29.  
  30. FNODE *
  31. add_file_node(dnode,name)
  32. DNODE        *dnode;
  33. char        *name;
  34. {
  35.     FNODE        *prev;
  36.     FNODE        *cur;
  37.     FNODE        *new;
  38.  
  39.     for (prev = NULL, cur = dnode->dlist; cur != NULL; cur = cur->next)
  40.         prev = cur;
  41.     new = (FNODE *)malloc(sizeof(FNODE));
  42.     new->name = (char *)malloc(strlen(name)+1);
  43.     strcpy(new->name,name);
  44.     new->next = NULL;
  45.     if (prev == NULL)
  46.         dnode->dlist = new;
  47.     else
  48.         prev->next = new;
  49.     return(new);
  50. }
  51.  
  52. in_file_list(dnode,name)
  53. DNODE        *dnode;
  54. char        *name;
  55. {
  56.     FNODE        *cur;
  57.  
  58.     for (cur = dnode->dlist; cur != NULL; cur = cur->next)
  59.         if (!strcmp(cur->name,name))
  60.             return(1);
  61.     return(0);
  62. }
  63.  
  64. DNODE *
  65. find_dep(make_list,name)
  66. DNODE        **make_list;
  67. char        *name;
  68. {
  69.     DNODE        *cur;
  70.  
  71.     for (cur = *make_list; cur != NULL; cur = cur->next)
  72.         if (!strcmp(cur->name,name))
  73.             return(cur);
  74.     return(NULL);
  75. }
  76.  
  77. free_list(make_list)
  78. DNODE        **make_list;
  79. {
  80.     DNODE        *cur;
  81.     DNODE        *next;
  82.  
  83.     cur = *make_list;
  84.     while (cur != NULL) {
  85.         next = cur->next;
  86.         free(cur->name);
  87.         free_fnodes(cur->dlist);
  88.         free(cur);
  89.         cur = next;
  90.     }
  91. }
  92.  
  93. free_fnodes(dlist)
  94. FNODE        *dlist;
  95. {
  96.     FNODE        *next;
  97.  
  98.     while (dlist != NULL) {
  99.         next = dlist->next;
  100.         free(dlist->name);
  101.         free(dlist);
  102.         dlist = next;
  103.     }
  104. }
  105.