summaryrefslogtreecommitdiff
path: root/bcc/table.c
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2010-05-30 18:16:12 +0200
committerLubomir Rintel <lkundrak@v3.sk>2013-10-29 16:30:53 +0100
commit1341b94d6609468c1816a94c6cee40e69ba2da90 (patch)
tree4de978f4c48cc754d29e98d8515b0caf11e1769c /bcc/table.c
parentc507d2f4b685874573fe0bb85a1a3a7d4d32dbd0 (diff)
downloaddev86-1341b94d6609468c1816a94c6cee40e69ba2da90.tar.gz
Untie structure members from structure
In historic K&R C, structure members name space was global. For compatibility, search all structures for a member if it is not found.
Diffstat (limited to 'bcc/table.c')
-rw-r--r--bcc/table.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/bcc/table.c b/bcc/table.c
index e863fb5..ae34839 100644
--- a/bcc/table.c
+++ b/bcc/table.c
@@ -726,6 +726,24 @@ char *name;
return symptr;
}
}
+
+#ifndef VERY_SMALL_MEMORY
+ /* In ancient UNIX, C structure members were global */
+ if (!ancient)
+ return NULL;
+
+ /* Find any structure member of given name */
+ laststruct(name);
+ while (name[0]) {
+ if ((symptr = findlorg(name)) != NULL)
+ return symptr;
+ if (--name[1] == 0) {
+ name[1] = 255;
+ name[0]--;
+ }
+ }
+#endif
+
return NULL;
}
#endif