예제 #1
0
파일: inetmsg.cpp 프로젝트: bhaggerty/wwiv
char *read_inet_addr(char *pszInternetEmailAddress, int nUserNumber) {
  if (!nUserNumber) {
    return NULL;
  }

  if (nUserNumber == GetSession()->usernum && check_inet_addr(GetSession()->GetCurrentUser()->GetEmailAddress())) {
    strcpy(pszInternetEmailAddress, GetSession()->GetCurrentUser()->GetEmailAddress());
  } else {
    //pszInternetEmailAddress = NULL;
    *pszInternetEmailAddress = 0;
    WFile inetAddrFile(syscfg.datadir, INETADDR_DAT);
    if (!inetAddrFile.Exists()) {
      inetAddrFile.Open(WFile::modeReadWrite | WFile::modeBinary | WFile::modeCreateFile, WFile::shareUnknown,
                        WFile::permReadWrite);
      for (int i = 0; i <= syscfg.maxusers; i++) {
        long lCurPos = 80L * static_cast<long>(i);
        inetAddrFile.Seek(lCurPos, WFile::seekBegin);
        inetAddrFile.Write(pszInternetEmailAddress, 80L);
      }
    } else {
      char szUserName[ 255 ];
      inetAddrFile.Open(WFile::modeReadOnly | WFile::modeBinary);
      long lCurPos = 80L * static_cast<long>(nUserNumber);
      inetAddrFile.Seek(lCurPos, WFile::seekBegin);
      inetAddrFile.Read(szUserName, 80L);
      if (check_inet_addr(szUserName)) {
        strcpy(pszInternetEmailAddress, szUserName);
      } else {
        sprintf(pszInternetEmailAddress, "User #%d", nUserNumber);
        WUser user;
        GetApplication()->GetUserManager()->ReadUser(&user, nUserNumber);
        user.SetEmailAddress("");
        GetApplication()->GetUserManager()->WriteUser(&user, nUserNumber);
      }
    }
    inetAddrFile.Close();
  }
  return pszInternetEmailAddress;
}