imapext-2007

annotate src/osdep/dos/os_dnv.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 (Novell) 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 <sys\socket.h>
yuuji@0 40 #include <netinet\in.h>
yuuji@0 41 #include <netdb.h>
yuuji@0 42 #include "misc.h"
yuuji@0 43
yuuji@0 44
yuuji@0 45 #include "fs_dos.c"
yuuji@0 46 #include "ftl_dos.c"
yuuji@0 47 #include "nl_dos.c"
yuuji@0 48 #include "env_dos.c"
yuuji@0 49 #undef write
yuuji@0 50 #define read soread
yuuji@0 51 #define write sowrite
yuuji@0 52 #define close soclose
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 struct hostent *he;
yuuji@0 65 struct in_addr in;
yuuji@0 66 /* could we get local id? */
yuuji@0 67 if ((in.s_addr = getmyipaddr ()) != -1) {
yuuji@0 68 if (he = gethostbyaddr ((char *) &in.s_addr,4,PF_INET)) s = he->h_name;
yuuji@0 69 else sprintf (s = tmp,"[%s]",inet_ntoa (in));
yuuji@0 70 }
yuuji@0 71 else s = "random-pc"; /* say what? */
yuuji@0 72 myLocalHost = cpystr (s); /* record for subsequent use */
yuuji@0 73 }
yuuji@0 74 return myLocalHost;
yuuji@0 75 }
yuuji@0 76
yuuji@0 77
yuuji@0 78 /* Look up host address
yuuji@0 79 * Accepts: pointer to pointer to host name
yuuji@0 80 * socket address block
yuuji@0 81 * Returns: non-zero with host address in socket, official host name in host;
yuuji@0 82 * else NIL
yuuji@0 83 */
yuuji@0 84
yuuji@0 85 long lookuphost (char **host,struct sockaddr_in *sin)
yuuji@0 86 {
yuuji@0 87 char *s = *host; /* in case of error */
yuuji@0 88 sin->sin_addr.s_addr = rhost (host);
yuuji@0 89 if (sin->sin_addr.s_addr == -1) {
yuuji@0 90 *host = s; /* error, restore old host name */
yuuji@0 91 return NIL;
yuuji@0 92 }
yuuji@0 93 *host = cpystr (*host); /* make permanent copy of name */
yuuji@0 94 return T; /* success */
yuuji@0 95 }

UW-IMAP'd extensions by yuuji