env_vms.c
上传用户:ycwykj01
上传日期:2007-01-04
资源大小:1819k
文件大小:5k
- /*
- * Program: VMS environment routines
- *
- * Author: Mark Crispin
- * Networks and Distributed Computing
- * Computing & Communications
- * University of Washington
- * Administration Building, AG-44
- * Seattle, WA 98195
- * Internet: MRC@CAC.Washington.EDU
- *
- * Date: 2 August 1994
- * Last Edited: 28 September 1998
- *
- * Copyright 1998 by the University of Washington
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appears in all copies and that both the
- * above copyright notice and this permission notice appear in supporting
- * documentation, and that the name of the University of Washington not be
- * used in advertising or publicity pertaining to distribution of the software
- * without specific, written prior permission. This software is made available
- * "as is", and
- * THE UNIVERSITY OF WASHINGTON DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
- * WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND IN
- * NO EVENT SHALL THE UNIVERSITY OF WASHINGTON BE LIABLE FOR ANY SPECIAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, TORT
- * (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
- static char *myUserName = NIL; /* user name */
- static char *myLocalHost = NIL; /* local host name */
- static char *myHomeDir = NIL; /* home directory name */
- static char *myNewsrc = NIL; /* newsrc file name */
- /* Environment manipulate parameters
- * Accepts: function code
- * function-dependent value
- * Returns: function-dependent return value
- */
- void *env_parameters (long function,void *value)
- {
- switch ((int) function) {
- case SET_USERNAME:
- myUserName = cpystr ((char *) value);
- break;
- case GET_USERNAME:
- value = (void *) myUserName;
- break;
- case SET_HOMEDIR:
- myHomeDir = cpystr ((char *) value);
- break;
- case GET_HOMEDIR:
- value = (void *) myHomeDir;
- break;
- case SET_LOCALHOST:
- myLocalHost = cpystr ((char *) value);
- break;
- case GET_LOCALHOST:
- value = (void *) myLocalHost;
- break;
- case SET_NEWSRC:
- if (myNewsrc) fs_give ((void **) &myNewsrc);
- myNewsrc = cpystr ((char *) value);
- break;
- case GET_NEWSRC:
- if (!myNewsrc) { /* set news file name if not defined */
- char tmp[MAILTMPLEN];
- sprintf (tmp,"%s:.newsrc",myhomedir ());
- myNewsrc = cpystr (tmp);
- }
- value = (void *) myNewsrc;
- break;
- default:
- value = NIL; /* error case */
- break;
- }
- return value;
- }
-
- /* Write current time
- * Accepts: destination string
- * optional format of day-of-week prefix
- * format of date and time
- */
- static void do_date (char *date,char *prefix,char *fmt)
- {
- time_t tn = time (0);
- struct tm *t = localtime (&tn);
- int zone = LOCALTIMEZONE + (t->tm_isdst ? 60 : 0);
- if (prefix) { /* want day of week? */
- sprintf (date,prefix,days[t->tm_wday]);
- date += strlen (date); /* make next sprintf append */
- }
- /* output the date */
- sprintf (date,fmt,t->tm_mday,months[t->tm_mon],t->tm_year+1900,
- t->tm_hour,t->tm_min,t->tm_sec,zone/60,abs (zone) % 60);
- }
- /* Write current time in RFC 822 format
- * Accepts: destination string
- */
- void rfc822_date (char *date)
- {
- do_date (date,"%s, ","%d %s %d %02d:%02d:%02d %+03d%02d");
- }
- /* Write current time in internal format
- * Accepts: destination string
- */
- void internal_date (char *date)
- {
- do_date (date,NIL,"%02d-%s-%d %02d:%02d:%02d %+03d%02d");
- }
- /* Return my user name
- * Returns: my user name
- */
- char *myusername ()
- {
- struct stat sbuf;
- char tmp[MAILTMPLEN];
- if (!myUserName) { /* get user name if don't have it yet */
- myUserName = cpystr (cuserid (NIL));
- myHomeDir = cpystr ("SYS$LOGIN");
- }
- return myUserName;
- }
- /* Return my home directory name
- * Returns: my home directory name
- */
- char *myhomedir ()
- {
- if (!myHomeDir) myusername ();/* initialize if first time */
- return myHomeDir;
- }
- /* Determine default prototype stream to user
- * Accepts: type (NIL for create, T for append)
- * Returns: default prototype stream
- */
- MAILSTREAM *default_proto (long type)
- {
- return NIL; /* no default prototype */
- }
- /* Emulator for BSD syslog() routine
- * Accepts: priority
- * message
- * parameters
- */
- void syslog (int priority,const char *message,...)
- {
- }
- /* Emulator for BSD openlog() routine
- * Accepts: identity
- * options
- * facility
- */
- void openlog (const char *ident,int logopt,int facility)
- {
- }