/* ** USER PROFILE ** ** (c) COPYRIGHT MIT 1995. ** Please first read the full copyright statement in the file COPYRIGH. ** @(#) $Id: HTUser.c,v 2.4 1998/05/04 19:37:38 frystyk Exp $ ** ** Contains information about local host, email, etc. ** ** May 96 HFN Written */ /* Library include files */ #include "wwwsys.h" #include "WWWUtil.h" #include "HTInet.h" #include "HTUser.h" /* Implemented here */ /* The default directory for "save locally" and "save and execute" files: */ #ifndef HT_TMP_ROOT #define HT_TMP_ROOT "/tmp/" /* URL format - not local file */ #endif struct _HTUserProfile { char * user; char * fqdn; /* Fully qualified domain name */ char * email; /* Email address of current user */ char * news; /* The news server to use */ char * tmp; /* Location for temporary files */ time_t timezone; /* Time zone in seconds */ void * context; /* Application specific */ }; /* ------------------------------------------------------------------------- */ /* ** Create a new host profile object and initialize it with what we can ** find on this host. */ PUBLIC HTUserProfile * HTUserProfile_new (const char * name, void * context) { HTUserProfile * me = NULL; if (name) { if ((me = (HTUserProfile *) HT_CALLOC(1, sizeof(HTUserProfile)))==NULL) HT_OUTOFMEM("HTUserProfile_new"); if (CORE_TRACE) HTTrace("User Profile Adding `%s\'\n", name); StrAllocCopy(me->user, name); /* Set the context */ me->context = context; } return me; } /* ** Localize a user profile by filling in all the information that we ** can figure out automatically, for example the email address, news ** server etc. */ PUBLIC BOOL HTUserProfile_localize (HTUserProfile * up) { if (up) { if (CORE_TRACE) HTTrace("User Profile Localizing %p\n", up); /* Find the FQDN */ up->fqdn = HTGetHostName(); /* Find the user email address */ up->email = HTGetMailAddress(); /* Find the news server */ up->news = HTGetNewsServer(); /* Find the timezone offset */ up->timezone = HTGetTimeZoneOffset(); /* Find the default location for temporary files */ StrAllocCopy(up->tmp, HT_TMP_ROOT); if (*(up->tmp+strlen(up->tmp)-1) != '/') StrAllocCat(up->tmp, "/"); return YES; } return NO; } /* ** Delete a user profile */ PUBLIC BOOL HTUserProfile_delete (HTUserProfile * up) { if (up) { HT_FREE(up->user); HT_FREE(up->fqdn); HT_FREE(up->email); HT_FREE(up->news); HT_FREE(up->tmp); HT_FREE(up); return YES; } return NO; } PUBLIC char * HTUserProfile_fqdn (HTUserProfile * up) { return up ? up->fqdn : NULL; } PUBLIC BOOL HTUserProfile_setFqdn (HTUserProfile * up, const char * fqdn) { if (up && fqdn) { StrAllocCopy(up->fqdn, fqdn); return YES; } return NO; } PUBLIC char * HTUserProfile_email (HTUserProfile * up) { return up ? up->email : NULL; } PUBLIC BOOL HTUserProfile_setEmail (HTUserProfile * up, const char * email) { if (up && email) { StrAllocCopy(up->email, email); return YES; } return NO; } PUBLIC char * HTUserProfile_news (HTUserProfile * up) { return up ? up->news : NULL; } PUBLIC BOOL HTUserProfile_setNews (HTUserProfile * up, const char * news) { if (up && news) { StrAllocCopy(up->news, news); return YES; } return NO; } PUBLIC char * HTUserProfile_tmp (HTUserProfile * up) { return up ? up->tmp : NULL; } PUBLIC BOOL HTUserProfile_setTmp (HTUserProfile * up, const char * tmp) { if (up && tmp) { StrAllocCopy(up->tmp, tmp); if (*(up->tmp+strlen(up->tmp)-1) != '/') StrAllocCat(up->tmp, "/"); return YES; } return NO; } PUBLIC time_t HTUserProfile_timezone (HTUserProfile * up) { return up ? up->timezone : 0; } PUBLIC BOOL HTUserProfile_setTimezone (HTUserProfile * up, time_t timezone) { if (up) { up->timezone = timezone; return YES; } return NO; } PUBLIC void * HTUserProfile_context (HTUserProfile * up) { return up ? up->context : NULL; } PUBLIC BOOL HTUserProfile_setContext (HTUserProfile * up, void * context) { if (up) { up->context = context; return YES; } return NO; }