Browse Source

Changed implementation of dependency generator

ceriel 33 years ago
parent
commit
e94f2d7e1d
2 changed files with 18 additions and 7 deletions
  1. 9 0
      lang/cem/cemcom.ansi/idf.str
  2. 9 7
      lang/cem/cemcom.ansi/main.c

+ 9 - 0
lang/cem/cemcom.ansi/idf.str

@@ -32,6 +32,15 @@ struct idf	{
 
 /* ALLOCDEF "idf" 50 */
 
+#ifndef NOPP
+struct dependency	{
+	struct dependency *next;
+	struct idf *dep_idf;
+};
+
+/* ALLOCDEF "dependency" 10 */
+#endif /* NOPP */
+
 extern struct idf *str2idf(), *idf_hashed();
 
 extern int level;

+ 9 - 7
lang/cem/cemcom.ansi/main.c

@@ -138,13 +138,13 @@ main(argc, argv)
 
 #ifndef NOPP
 
-struct idf    *file_head;
+struct dependency    *file_head;
 extern char *strrindex();
 
 list_dependencies(source)
 char *source;
 {
-    register struct idf *p = file_head;
+    register struct dependency *p = file_head;
 
     if (source) {
 	register char *s = strrindex(source, '.');
@@ -167,9 +167,8 @@ char *source;
 	fatal("could not open %s", dep_file);
     }
     while (p) {
-	ASSERT(p->id_resmac == K_FILE);
-	dependency(p->id_text, source);
-	p = (struct idf *) (p->id_file);
+	dependency(p->dep_idf->id_text, source);
+	p = p->next;
     }
 }
 
@@ -179,9 +178,12 @@ char *s;
     register struct idf *p = str2idf(s);
 
     if (! p->id_resmac) {
+	register struct dependency *q = new_dependency();
+
 	p->id_resmac = K_FILE;
-	p->id_file = (char *) file_head;
-	file_head = p;
+	q->dep_idf = p;
+	q->next = file_head;
+	file_head = q;
     }
 }