+#endif // wxUSE_TEXTDLG
+
+#ifdef __MWERKS__
+char *strdup(const char *s)
+{
+ return strcpy( (char*) malloc( strlen( s ) + 1 ) , s ) ;
+}
+
+int isascii( int c )
+{
+ return ( c >= 0 && c < 128 ) ;
+}
+#endif
+
+// ----------------------------------------------------------------------------
+// network and user id functions
+// ----------------------------------------------------------------------------
+
+// Get Full RFC822 style email address
+bool wxGetEmailAddress(wxChar *address, int maxSize)
+{
+ wxString email = wxGetEmailAddress();
+ if ( !email )
+ return FALSE;
+
+ wxStrncpy(address, email, maxSize - 1);
+ address[maxSize - 1] = _T('\0');
+
+ return TRUE;
+}
+
+wxString wxGetEmailAddress()
+{
+ wxString email;
+
+ wxString host = wxGetHostName();
+ if ( !!host )
+ {
+ wxString user = wxGetUserId();
+ if ( !!user )
+ {
+ wxString email(user);
+ email << _T('@') << host;
+ }
+ }
+
+ return email;
+}
+
+wxString wxGetUserId()
+{
+ static const int maxLoginLen = 256; // FIXME arbitrary number
+
+ wxString buf;
+ bool ok = wxGetUserId(buf.GetWriteBuf(maxLoginLen), maxLoginLen);
+ buf.UngetWriteBuf();
+
+ if ( !ok )
+ buf.Empty();
+
+ return buf;
+}
+
+wxString wxGetUserName()
+{
+ static const int maxUserNameLen = 1024; // FIXME arbitrary number
+
+ wxString buf;
+ bool ok = wxGetUserName(buf.GetWriteBuf(maxUserNameLen), maxUserNameLen);
+ buf.UngetWriteBuf();
+
+ if ( !ok )
+ buf.Empty();
+
+ return buf;
+}
+
+wxString wxGetHostName()
+{
+ static const size_t hostnameSize = 257;
+
+ wxString buf;
+ bool ok = wxGetHostName(buf.GetWriteBuf(hostnameSize), hostnameSize);
+
+ buf.UngetWriteBuf();
+
+ if ( !ok )
+ buf.Empty();
+
+ return buf;
+}
+
+wxString wxGetFullHostName()
+{
+ static const size_t hostnameSize = 257;
+
+ wxString buf;
+ bool ok = wxGetFullHostName(buf.GetWriteBuf(hostnameSize), hostnameSize);
+
+ buf.UngetWriteBuf();
+
+ if ( !ok )
+ buf.Empty();
+
+ return buf;
+}