int do_cluster(void)
{
FILE *out;
- char outf[64], outft[64], *mach, machbuf[41], *p;
+ char outf[64], outft[64], *mach, machbuf[64], clubuf[64], *p;
struct stat sb;
time_t ftime;
EXEC SQL BEGIN DECLARE SECTION;
char name[41], label2[17], data[33];
EXEC SQL END DECLARE SECTION;
set_mask **machs, *ms, *ps;
- int oneclu;
sprintf(outf, "%s/cluster.db", hesiod_dir);
ms = machs[mid];
if (nbitsset(ms) > 1)
{
- oneclu = 0;
+ sprintf(clubuf, "mrinternal-%d", mid);
for (cid = 1; cid < maxclu; cid++)
{
if (SET_ISSET(cid, ms))
break;
strtrim(label2);
strtrim(data);
- fprintf(out, "mrinternal-%d.cluster\t%s %s \"%s %s\"\n",
- mid, HCLASS, HTYPE, label2, data);
+ fprintf(out, "%s.cluster\t%s %s \"%s %s\"\n",
+ clubuf, HCLASS, HTYPE, label2, data);
}
EXEC SQL CLOSE d_cursor;
}
}
else
{
- oneclu = 1;
for (cid = 1; cid < maxclu; cid++)
if (SET_ISSET(cid, ms))
break;
EXEC SQL SELECT name INTO :name FROM clusters WHERE clu_id = :cid;
strtrim(name);
+ strcpy(clubuf, name);
}
if ((mach = hash_lookup(machines, mid)))
{
+ fprintf(out, "%s.cluster\t%s CNAME %s.cluster\n",
+ mach, HCLASS, clubuf);
for (p = machbuf; *mach && *mach != '.'; mach++)
*p++ = *mach;
- *p = '\0';
- if (oneclu)
+ if (!strcasecmp(mach, ".mit.edu"))
{
+ *p = '\0';
fprintf(out, "%s.cluster\t%s CNAME %s.cluster\n",
- machbuf, HCLASS, name);
- }
- else
- {
- fprintf(out, "%s.cluster\t%s CNAME mrinternal-%d.cluster\n",
- machbuf, HCLASS, mid);
+ machbuf, HCLASS, clubuf);
}
}
for (id = mid + 1; id < maxmach; id++)
machs[id] = NULL;
if ((mach = hash_lookup(machines, id)))
{
+ fprintf(out, "%s.cluster\t%s CNAME %s.cluster\n",
+ mach, HCLASS, clubuf);
for (p = machbuf; *mach && *mach != '.'; mach++)
*p++ = *mach;
- *p = '\0';
- if (oneclu)
+ if (!strcasecmp(mach, ".mit.edu"))
{
+ *p = '\0';
fprintf(out, "%s.cluster\t%s CNAME %s.cluster\n",
- machbuf, HCLASS, name);
- }
- else
- {
- fprintf(out,
- "%s.cluster\t%s CNAME mrinternal-%d.cluster\n",
- machbuf, HCLASS, mid);
+ machbuf, HCLASS, clubuf);
}
}
}
continue;
if (!*strtrim(name))
continue;
- if ((i = strlen(name)) < 9 || strcmp(&name[i - 8], ".MIT.EDU"))
+ if ((i = strlen(name)) < 9 || !strchr(name, '.') ||
+ strcmp(strchr(name, '.'), ".MIT.EDU"))
{
- fprintf(stderr, "Name %s not in MIT domain\n", name);
+ fprintf(stderr, "Ignoring alias %s\n", name);
continue;
}
else
continue;
if (!*strtrim(name))
continue;
- if ((i = strlen(name)) < 9 || strcmp(&name[i - 8], ".MIT.EDU"))
- continue;
+ if ((i = strlen(name)) < 9 || !strchr(name, '.') ||
+ strcmp(strchr(name, '.'), ".MIT.EDU"))
+ {
+ fprintf(stderr, "Ignoring machine %s\n", name);
+ continue;
+ }
else
name[i - 8] = 0;
strtrim(vendor);