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';
+ /* Check for IMAP. Can't use iid because it should be zero. */
+ EXEC SQL SELECT mach_id INTO :mid FROM filesys
+ WHERE label = :login || '.po' AND type = 'IMAP';
if (sqlca.sqlcode == 0)
- pid = eid;
+ pid = mid;
+ else
+ {
+ /* EXCHANGE user with no IMAP filesystem. Give them
+ * IMAP.EXCHANGE.MIT.EDU instead of 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)
$login =~ tr/a-z/A-Z/;
if ($exchange_id != 0) {
- ($mach_id) = $dbh->selectrow_array("SELECT mach_id FROM machine WHERE " .
- "name = 'IMAP.EXCHANGE.MIT.EDU'");
+ $imap_filesystem = lc($login) . ".po";
+ ($mach_id) = $dbh->selectrow_array("SELECT mach_id FROM filesys " .
+ "WHERE label = " . $dbh->quote($imap_filesystem) .
+ "AND type = 'IMAP'");
if (defined($mach_id)) {
$pop_id = $mach_id;
+ } else {
+ ($mach_id) = $dbh->selectrow_array("SELECT mach_id FROM machine WHERE " .
+ "name = 'IMAP.EXCHANGE.MIT.EDU'");
+ if (defined($mach_id)) {
+ $pop_id = $mach_id;
+ }
}
}