imapext-2007

annotate src/osdep/tops-20/env_t20.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: Environment routines -- TOPS-20 version
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: 1 August 1988
yuuji@0 26 * Last Edited: 30 August 2006
yuuji@0 27 */
yuuji@0 28
yuuji@0 29
yuuji@0 30 /* Dedication:
yuuji@0 31 * This file is dedicated with affection to the TOPS-20 operating system, which
yuuji@0 32 * set standards for user and programmer friendliness that have still not been
yuuji@0 33 * equaled by more `modern' operating systems.
yuuji@0 34 * Wasureru mon ka!!!!
yuuji@0 35 */
yuuji@0 36
yuuji@0 37 /* c-client environment parameters */
yuuji@0 38
yuuji@0 39 static char *myUserName = NIL; /* user name */
yuuji@0 40 static char *myHomeDir = NIL; /* home directory name */
yuuji@0 41 static char *myLocalHost = NIL; /* local host name */
yuuji@0 42 static char *myNewsrc = NIL; /* newsrc file name */
yuuji@0 43 static short no822tztext = NIL; /* disable RFC [2]822 timezone text */
yuuji@0 44
yuuji@0 45
yuuji@0 46 #include "pmatch.c" /* include wildcard pattern matcher */
yuuji@0 47
yuuji@0 48 /* Environment manipulate parameters
yuuji@0 49 * Accepts: function code
yuuji@0 50 * function-dependent value
yuuji@0 51 * Returns: function-dependent return value
yuuji@0 52 */
yuuji@0 53
yuuji@0 54 void *env_parameters (long function,void *value)
yuuji@0 55 {
yuuji@0 56 void *ret = NIL;
yuuji@0 57 switch ((int) function) {
yuuji@0 58 case SET_USERNAME:
yuuji@0 59 if (myUserName) fs_give ((void **) &myUserName);
yuuji@0 60 myUserName = cpystr ((char *) value);
yuuji@0 61 case GET_USERNAME:
yuuji@0 62 ret = (void *) myUserName;
yuuji@0 63 break;
yuuji@0 64 case SET_HOMEDIR:
yuuji@0 65 if (myHomeDir) fs_give ((void **) &myHomeDir);
yuuji@0 66 myHomeDir = cpystr ((char *) value);
yuuji@0 67 case GET_HOMEDIR:
yuuji@0 68 ret = (void *) myHomeDir;
yuuji@0 69 break;
yuuji@0 70 case SET_LOCALHOST:
yuuji@0 71 if (myLocalHost) fs_give ((void **) &myLocalHost);
yuuji@0 72 myLocalHost = cpystr ((char *) value);
yuuji@0 73 case GET_LOCALHOST:
yuuji@0 74 ret = (void *) myLocalHost;
yuuji@0 75 break;
yuuji@0 76 case SET_NEWSRC:
yuuji@0 77 if (myNewsrc) fs_give ((void **) &myNewsrc);
yuuji@0 78 myNewsrc = cpystr ((char *) value);
yuuji@0 79 case GET_NEWSRC:
yuuji@0 80 ret = (void *) myNewsrc;
yuuji@0 81 break;
yuuji@0 82 case SET_DISABLE822TZTEXT:
yuuji@0 83 no822tztext = value ? T : NIL;
yuuji@0 84 case GET_DISABLE822TZTEXT:
yuuji@0 85 ret = (void *) (no822tztext ? VOIDT : NIL);
yuuji@0 86 break;
yuuji@0 87 }
yuuji@0 88 return ret;
yuuji@0 89 }
yuuji@0 90
yuuji@0 91 /* Write current time in RFC 822 format
yuuji@0 92 * Accepts: destination string
yuuji@0 93 */
yuuji@0 94
yuuji@0 95 void rfc822_date (char *date)
yuuji@0 96 {
yuuji@0 97 char *s;
yuuji@0 98 int argblk[4];
yuuji@0 99 argblk[1] = (int) (date-1);
yuuji@0 100 argblk[2] = -1; /* time now */
yuuji@0 101 argblk[3] = OT_822; /* want RFC [2]822 format */
yuuji@0 102 jsys (ODTIM,argblk);
yuuji@0 103 /* suppress time zone text if desired */
yuuji@0 104 if (no822tztext && (s = strstr (date," ("))) *s = NIL;
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 int argblk[5];
yuuji@0 115 argblk[1] = (int) (date-1);
yuuji@0 116 argblk[2] = -1; /* time now */
yuuji@0 117 argblk[3] = OT_4YR; /* output in 4-digit year format */
yuuji@0 118 jsys (ODTIM,argblk);
yuuji@0 119 argblk[2] = ' '; /* delimit with space */
yuuji@0 120 jsys (BOUT,argblk);
yuuji@0 121 argblk[2] = -1; /* time now */
yuuji@0 122 argblk[4] = 0; /* no flags */
yuuji@0 123 jsys (ODCNV,argblk); /* get time zone */
yuuji@0 124 argblk[2] = ((argblk[4] & 077000000) >> 18) * -100;
yuuji@0 125 /* add an hour if summer time */
yuuji@0 126 if (argblk[4] & IC_ADS) argblk[2] += 100;
yuuji@0 127 argblk[3] = 0340005000012;
yuuji@0 128 jsys (NOUT,argblk);
yuuji@0 129 }
yuuji@0 130
yuuji@0 131 /* Return my user name
yuuji@0 132 * Accepts: pointer to optional flags
yuuji@0 133 * Returns: my user name
yuuji@0 134 */
yuuji@0 135
yuuji@0 136 char *myusername_full (unsigned long *flags)
yuuji@0 137 {
yuuji@0 138 if (!myUserName) { /* get user name if don't have it yet */
yuuji@0 139 char tmp[MAILTMPLEN];
yuuji@0 140 int argblk[5],i;
yuuji@0 141 jsys (GJINF,argblk); /* get job poop */
yuuji@0 142 if (!(i = argblk[1])) { /* remember user number */
yuuji@0 143 if (flags) *flags = MU_NOTLOGGEDIN;
yuuji@0 144 return "SYSTEM"; /* not logged in */
yuuji@0 145 }
yuuji@0 146 argblk[1] = (int) (tmp-1); /* destination */
yuuji@0 147 argblk[2] = i; /* user number */
yuuji@0 148 jsys (DIRST,argblk); /* get user name string */
yuuji@0 149 myUserName = cpystr (tmp); /* copy user name */
yuuji@0 150 argblk[1] = 0; /* no flags */
yuuji@0 151 argblk[2] = i; /* user number */
yuuji@0 152 argblk[3] = 0; /* no stepping */
yuuji@0 153 jsys (RCDIR,argblk); /* get home directory */
yuuji@0 154 argblk[1] = (int) (tmp-1); /* destination */
yuuji@0 155 argblk[2] = argblk[3]; /* home directory number */
yuuji@0 156 jsys (DIRST,argblk); /* get home directory string */
yuuji@0 157 myHomeDir = cpystr (tmp); /* copy home directory */
yuuji@0 158 if (!myNewsrc) { /* set news file name if not defined */
yuuji@0 159 sprintf (tmp,"%sNEWSRC",myhomedir ());
yuuji@0 160 myNewsrc = cpystr (tmp);
yuuji@0 161 }
yuuji@0 162 if (flags) *flags = MU_LOGGEDIN;
yuuji@0 163 }
yuuji@0 164 return myUserName;
yuuji@0 165 }
yuuji@0 166
yuuji@0 167 /* Return my local host name
yuuji@0 168 * Returns: my local host name
yuuji@0 169 */
yuuji@0 170
yuuji@0 171 char *mylocalhost ()
yuuji@0 172 {
yuuji@0 173 if (!myLocalHost) { /* initialize if first time */
yuuji@0 174 char tmp[MAILTMPLEN];
yuuji@0 175 int argblk[5];
yuuji@0 176 argblk[1] = _GTHNS; /* convert number to string */
yuuji@0 177 argblk[2] = (int) (tmp-1);
yuuji@0 178 argblk[3] = -1; /* want local host */
yuuji@0 179 if (!jsys (GTHST,argblk)) strcpy (tmp,"LOCAL");
yuuji@0 180 myLocalHost = cpystr (tmp);
yuuji@0 181 }
yuuji@0 182 return myLocalHost;
yuuji@0 183 }
yuuji@0 184
yuuji@0 185
yuuji@0 186 /* Return my home directory name
yuuji@0 187 * Returns: my home directory name
yuuji@0 188 */
yuuji@0 189
yuuji@0 190 char *myhomedir ()
yuuji@0 191 {
yuuji@0 192 if (!myHomeDir) myusername ();/* initialize if first time */
yuuji@0 193 return myHomeDir ? myHomeDir : "";
yuuji@0 194 }
yuuji@0 195
yuuji@0 196
yuuji@0 197 /* Determine default prototype stream to user
yuuji@0 198 * Accepts: type (NIL for create, T for append)
yuuji@0 199 * Returns: default prototype stream
yuuji@0 200 */
yuuji@0 201
yuuji@0 202 MAILSTREAM *default_proto (long type)
yuuji@0 203 {
yuuji@0 204 return NIL; /* no default prototype */
yuuji@0 205 }
yuuji@0 206
yuuji@0 207 /* Emulator for BSD syslog() routine
yuuji@0 208 * Accepts: priority
yuuji@0 209 * message
yuuji@0 210 * parameters
yuuji@0 211 */
yuuji@0 212
yuuji@0 213 void syslog (int priority,const char *message,...)
yuuji@0 214 {
yuuji@0 215 }
yuuji@0 216
yuuji@0 217
yuuji@0 218 /* Emulator for BSD openlog() routine
yuuji@0 219 * Accepts: identity
yuuji@0 220 * options
yuuji@0 221 * facility
yuuji@0 222 */
yuuji@0 223
yuuji@0 224 void openlog (const char *ident,int logopt,int facility)
yuuji@0 225 {
yuuji@0 226 }

UW-IMAP'd extensions by yuuji