imapext-2007

annotate src/osdep/vms/env_vms.c @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children
rev   line source
yuuji@0 1 /* ========================================================================
yuuji@0 2 * Copyright 1988-2006 University of Washington
yuuji@0 3 *
yuuji@0 4 * Licensed under the Apache License, Version 2.0 (the "License");
yuuji@0 5 * you may not use this file except in compliance with the License.
yuuji@0 6 * You may obtain a copy of the License at
yuuji@0 7 *
yuuji@0 8 * http://www.apache.org/licenses/LICENSE-2.0
yuuji@0 9 *
yuuji@0 10 *
yuuji@0 11 * ========================================================================
yuuji@0 12 */
yuuji@0 13
yuuji@0 14 /*
yuuji@0 15 * Program: VMS environment routines
yuuji@0 16 *
yuuji@0 17 * Author: Mark Crispin
yuuji@0 18 * Networks and Distributed Computing
yuuji@0 19 * Computing & Communications
yuuji@0 20 * University of Washington
yuuji@0 21 * Administration Building, AG-44
yuuji@0 22 * Seattle, WA 98195
yuuji@0 23 * Internet: MRC@CAC.Washington.EDU
yuuji@0 24 *
yuuji@0 25 * Date: 2 August 1994
yuuji@0 26 * Last Edited: 30 August 2006
yuuji@0 27 */
yuuji@0 28
yuuji@0 29
yuuji@0 30 static char *myUserName = NIL; /* user name */
yuuji@0 31 static char *myLocalHost = NIL; /* local host name */
yuuji@0 32 static char *myHomeDir = NIL; /* home directory name */
yuuji@0 33 static char *myNewsrc = NIL; /* newsrc file name */
yuuji@0 34
yuuji@0 35 #include "pmatch.c" /* include wildcard pattern matcher */
yuuji@0 36
yuuji@0 37 /* Environment manipulate parameters
yuuji@0 38 * Accepts: function code
yuuji@0 39 * function-dependent value
yuuji@0 40 * Returns: function-dependent return value
yuuji@0 41 */
yuuji@0 42
yuuji@0 43 void *env_parameters (long function,void *value)
yuuji@0 44 {
yuuji@0 45 void *ret = NIL;
yuuji@0 46 switch ((int) function) {
yuuji@0 47 case SET_USERNAME:
yuuji@0 48 myUserName = cpystr ((char *) value);
yuuji@0 49 case GET_USERNAME:
yuuji@0 50 ret = (void *) myUserName;
yuuji@0 51 break;
yuuji@0 52 case SET_HOMEDIR:
yuuji@0 53 myHomeDir = cpystr ((char *) value);
yuuji@0 54 case GET_HOMEDIR:
yuuji@0 55 ret = (void *) myHomeDir;
yuuji@0 56 break;
yuuji@0 57 case SET_LOCALHOST:
yuuji@0 58 myLocalHost = cpystr ((char *) value);
yuuji@0 59 case GET_LOCALHOST:
yuuji@0 60 ret = (void *) myLocalHost;
yuuji@0 61 break;
yuuji@0 62 case SET_NEWSRC:
yuuji@0 63 if (myNewsrc) fs_give ((void **) &myNewsrc);
yuuji@0 64 myNewsrc = cpystr ((char *) value);
yuuji@0 65 case GET_NEWSRC:
yuuji@0 66 if (!myNewsrc) { /* set news file name if not defined */
yuuji@0 67 char tmp[MAILTMPLEN];
yuuji@0 68 sprintf (tmp,"%s:.newsrc",myhomedir ());
yuuji@0 69 myNewsrc = cpystr (tmp);
yuuji@0 70 }
yuuji@0 71 ret = (void *) myNewsrc;
yuuji@0 72 break;
yuuji@0 73 }
yuuji@0 74 return ret;
yuuji@0 75 }
yuuji@0 76
yuuji@0 77 /* Write current time
yuuji@0 78 * Accepts: destination string
yuuji@0 79 * optional format of day-of-week prefix
yuuji@0 80 * format of date and time
yuuji@0 81 */
yuuji@0 82
yuuji@0 83 static void do_date (char *date,char *prefix,char *fmt)
yuuji@0 84 {
yuuji@0 85 time_t tn = time (0);
yuuji@0 86 struct tm *t = localtime (&tn);
yuuji@0 87 int zone = LOCALTIMEZONE + (t->tm_isdst ? 60 : 0);
yuuji@0 88 if (prefix) { /* want day of week? */
yuuji@0 89 sprintf (date,prefix,days[t->tm_wday]);
yuuji@0 90 date += strlen (date); /* make next sprintf append */
yuuji@0 91 }
yuuji@0 92 /* output the date */
yuuji@0 93 sprintf (date,fmt,t->tm_mday,months[t->tm_mon],t->tm_year+1900,
yuuji@0 94 t->tm_hour,t->tm_min,t->tm_sec,zone/60,abs (zone) % 60);
yuuji@0 95 }
yuuji@0 96
yuuji@0 97
yuuji@0 98 /* Write current time in RFC 822 format
yuuji@0 99 * Accepts: destination string
yuuji@0 100 */
yuuji@0 101
yuuji@0 102 void rfc822_date (char *date)
yuuji@0 103 {
yuuji@0 104 do_date (date,"%s, ","%d %s %d %02d:%02d:%02d %+03d%02d");
yuuji@0 105 }
yuuji@0 106
yuuji@0 107
yuuji@0 108 /* Write current time in internal format
yuuji@0 109 * Accepts: destination string
yuuji@0 110 */
yuuji@0 111
yuuji@0 112 void internal_date (char *date)
yuuji@0 113 {
yuuji@0 114 do_date (date,NIL,"%02d-%s-%d %02d:%02d:%02d %+03d%02d");
yuuji@0 115 }
yuuji@0 116
yuuji@0 117 /* Return my user name
yuuji@0 118 * Returns: my user name
yuuji@0 119 */
yuuji@0 120
yuuji@0 121 char *myusername ()
yuuji@0 122 {
yuuji@0 123 struct stat sbuf;
yuuji@0 124 char tmp[MAILTMPLEN];
yuuji@0 125
yuuji@0 126 if (!myUserName) { /* get user name if don't have it yet */
yuuji@0 127 myUserName = cpystr (cuserid (NIL));
yuuji@0 128 myHomeDir = cpystr ("SYS$LOGIN");
yuuji@0 129 }
yuuji@0 130 return myUserName;
yuuji@0 131 }
yuuji@0 132
yuuji@0 133
yuuji@0 134 /* Return my home directory name
yuuji@0 135 * Returns: my home directory name
yuuji@0 136 */
yuuji@0 137
yuuji@0 138 char *myhomedir ()
yuuji@0 139 {
yuuji@0 140 if (!myHomeDir) myusername ();/* initialize if first time */
yuuji@0 141 return myHomeDir;
yuuji@0 142 }
yuuji@0 143
yuuji@0 144
yuuji@0 145 /* Determine default prototype stream to user
yuuji@0 146 * Accepts: type (NIL for create, T for append)
yuuji@0 147 * Returns: default prototype stream
yuuji@0 148 */
yuuji@0 149
yuuji@0 150 MAILSTREAM *default_proto (long type)
yuuji@0 151 {
yuuji@0 152 return NIL; /* no default prototype */
yuuji@0 153 }
yuuji@0 154
yuuji@0 155 /* Emulator for BSD syslog() routine
yuuji@0 156 * Accepts: priority
yuuji@0 157 * message
yuuji@0 158 * parameters
yuuji@0 159 */
yuuji@0 160
yuuji@0 161 void syslog (int priority,const char *message,...)
yuuji@0 162 {
yuuji@0 163 }
yuuji@0 164
yuuji@0 165
yuuji@0 166 /* Emulator for BSD openlog() routine
yuuji@0 167 * Accepts: identity
yuuji@0 168 * options
yuuji@0 169 * facility
yuuji@0 170 */
yuuji@0 171
yuuji@0 172 void openlog (const char *ident,int logopt,int facility)
yuuji@0 173 {
yuuji@0 174 }

UW-IMAP'd extensions by yuuji