* query. This is 512 - overhead (~78) [derived empirically]
* (it used to be 446 with older versions of bind)
*/
-#define MAXHESSIZE 434
+#define MAXHESSIZE 256
char hesiod_dir[MAXPATHLEN];
for (sawdot = 1; *name; name++)
{
+ if (*name == '$')
+ return 0;
if (*name == '.')
{
if (sawdot)
char fullname[USERS_FULLNAME_SIZE], oa[USERS_OFFICE_ADDR_SIZE];
char op[USERS_OFFICE_PHONE_SIZE], hp[USERS_HOME_PHONE_SIZE];
char nn[USERS_NICKNAME_SIZE], potype[USERS_POTYPE_SIZE];
- int uid, id, pid, iid, mid, status;
+ int uid, id, pid, iid, eid, mid, status;
EXEC SQL END DECLARE SECTION;
sprintf(poutf, "%s/passwd.db", hesiod_dir);
users = create_hash(12001);
EXEC SQL DECLARE u_cursor CURSOR FOR
SELECT login, unix_uid, shell, fullname, nickname, office_addr,
- office_phone, home_phone, users_id, potype, pop_id, imap_id, status
+ office_phone, home_phone, users_id, potype, pop_id, imap_id, exchange_id,
+ status
FROM users
WHERE status = 1 OR status = 2 OR status = 5 OR status = 6
ORDER BY users_id;
while (1)
{
EXEC SQL FETCH u_cursor INTO :login, :uid, :shell, :fullname, :nn,
- :oa, :op, :hp, :id, :potype, :pid, :iid, :status;
+ :oa, :op, :hp, :id, :potype, :pid, :iid, :eid, :status;
if (sqlca.sqlcode)
break;
strtrim(login);
fprintf(uout, "%d.uid\t%s CNAME %s.passwd\n", uid, HCLASS, login);
}
+ if (eid != 0)
+ {
+ /* eid will be for EXCHANGE.MIT.EDU, but we need to convert it to
+ * IMAP.EXCHANGE.MIT.EDU.
+ */
+ EXEC SQL SELECT mach_id INTO :eid FROM machine WHERE
+ name = 'IMAP.EXCHANGE.MIT.EDU';
+ if (sqlca.sqlcode == 0)
+ pid = eid;
+ }
+
if (iid != 0)
{
EXEC SQL SELECT mach_id INTO :mid FROM filesys