- for (last = 0, ep = headp; ep != 0; last = ep, ep = ep->next) {
- if (&(ep->tterm) == tterm) {
- if (last != 0) {
- last->next = ep->next;
- }
- if (ep == _nc_head) {
- _nc_head = ep->next;
- }
- if (ep == _nc_tail) {
- _nc_tail = last;
+ if (bar != 0 && (bar - name) == 2)
+ name = bar + 1;
+
+ return name;
+}
+#endif
+
+static bool
+check_collisions(char *n1, char *n2, int counter)
+{
+ char *pstart, *qstart, *pend, *qend;
+ char nc1[MAX_NAME_SIZE + 2];
+ char nc2[MAX_NAME_SIZE + 2];
+
+ n1 = ForceBar(nc1, n1);
+ n2 = ForceBar(nc2, n2);
+
+#if USE_TERMCAP && NCURSES_XNAMES
+ if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) {
+ n1 = skip_index(n1);
+ n2 = skip_index(n2);
+ }
+#endif
+
+ for (pstart = n1; (pend = strchr(pstart, '|')); pstart = pend + 1) {
+ for (qstart = n2; (qend = strchr(qstart, '|')); qstart = qend + 1) {
+ if ((pend - pstart == qend - qstart)
+ && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0) {
+ if (counter > 0)
+ (void) fprintf(stderr, "Name collision '%.*s' between\n",
+ (int) (pend - pstart), pstart);
+ return (TRUE);