imapext-2007

annotate src/osdep/dos/os_dpc.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: Operating-system dependent routines -- MS-DOS (PC/TCP) 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: 11 April 1989
yuuji@0 26 * Last Edited: 30 August 2006
yuuji@0 27 */
yuuji@0 28
yuuji@0 29 /* Private function prototypes */
yuuji@0 30
yuuji@0 31 #include "tcp_dos.h" /* must be before osdep includes tcp.h */
yuuji@0 32 #include "mail.h"
yuuji@0 33 #include "osdep.h"
yuuji@0 34 #include <time.h>
yuuji@0 35 #include <errno.h>
yuuji@0 36 #include <fcntl.h>
yuuji@0 37 #include <sys\stat.h>
yuuji@0 38 #include <sys\timeb.h>
yuuji@0 39 #include <4bsddefs.h>
yuuji@0 40 #include <sys\socket.h>
yuuji@0 41 #include <errno.h>
yuuji@0 42 #include <arpa\inet.h>
yuuji@0 43 #include <netinet\in.h>
yuuji@0 44 #include <netdb.h>
yuuji@0 45 #include "misc.h"
yuuji@0 46
yuuji@0 47
yuuji@0 48 #include "fs_dos.c"
yuuji@0 49 #include "ftl_dos.c"
yuuji@0 50 #include "nl_dos.c"
yuuji@0 51 #include "env_dos.c"
yuuji@0 52 #undef write
yuuji@0 53 #include "tcp_dos.c"
yuuji@0 54
yuuji@0 55
yuuji@0 56 /* Return my local host name
yuuji@0 57 * Returns: my local host name
yuuji@0 58 */
yuuji@0 59
yuuji@0 60 char *mylocalhost (void)
yuuji@0 61 {
yuuji@0 62 if (!myLocalHost) { /* known yet */
yuuji@0 63 char *s,tmp[MAILTMPLEN];
yuuji@0 64 long myip;
yuuji@0 65 /* see if known host name */
yuuji@0 66 if (!gethostname (tmp,MAILTMPLEN-1)) s = tmp;
yuuji@0 67 /* no, try IP address */
yuuji@0 68 else if (myip = gethostid ()) {
yuuji@0 69 struct in_addr in;
yuuji@0 70 in.s_addr = myip;
yuuji@0 71 sprintf (s = tmp,"[%s]",inet_ntoa (in));
yuuji@0 72 }
yuuji@0 73 /* older kernel, look harder. */
yuuji@0 74 else if (getconf ("ifcust","ip-address",tmp+1,MAILTMPLEN-2)) {
yuuji@0 75 *(s = tmp) = '['; /* wrap the brackets around it */
yuuji@0 76 strcat (tmp,"]");
yuuji@0 77 }
yuuji@0 78 else s = "random-pc"; /* say what? */
yuuji@0 79 myLocalHost = cpystr (s); /* record for subsequent use */
yuuji@0 80 }
yuuji@0 81 return myLocalHost;
yuuji@0 82 }
yuuji@0 83
yuuji@0 84
yuuji@0 85 /* Look up host address
yuuji@0 86 * Accepts: pointer to pointer to host name
yuuji@0 87 * socket address block
yuuji@0 88 * Returns: non-zero with host address in socket, official host name in host;
yuuji@0 89 * else NIL
yuuji@0 90 */
yuuji@0 91
yuuji@0 92 long lookuphost (char **host,struct sockaddr_in *sin)
yuuji@0 93 {
yuuji@0 94 long ret = -1;
yuuji@0 95 char tmp[MAILTMPLEN];
yuuji@0 96 struct hostent *hn = gethostbyname (lcase (strcpy (tmp,*host)));
yuuji@0 97 if (!hn) return NIL; /* got a host name? */
yuuji@0 98 *host = cpystr (hn->h_name); /* set official name */
yuuji@0 99 /* copy host addresses */
yuuji@0 100 memcpy (&sin->sin_addr,hn->h_addr,hn->h_length);
yuuji@0 101 return T;
yuuji@0 102 }

UW-IMAP'd extensions by yuuji