X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fos.c;h=5ce56b5151a30b70349a89b1b01a673070726cb7;hb=de6f74f297d040a34746bc8e1829ad4b867441c9;hp=1cde1b8ecde19ff2aa030819a52d58398cc9d0b7;hpb=93a680e4c9c899d86ff3fde0933fb5367b34af50;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/os.c b/src/src/os.c index 1cde1b8ec..5ce56b515 100644 --- a/src/src/os.c +++ b/src/src/os.c @@ -2,13 +2,18 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2016 */ +/* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ #ifdef STAND_ALONE -#include -#include -#include +# include +# include +# include +#endif + +#ifndef CS +# define CS (char *) +# define US (unsigned char *) #endif /* This source file contains "default" system-dependent functions which @@ -413,7 +418,7 @@ if (avg_kd < 0) } if (lseek (avg_kd, avg_offset, 0) == -1L - || read (avg_kd, (char *)(&avg), sizeof (avg)) != sizeof(avg)) + || read (avg_kd, CS (&avg), sizeof (avg)) != sizeof(avg)) return -1; return (int)(((double)avg/FSCALE)*1000.0); @@ -645,7 +650,7 @@ ifc.V_ifc_family = V_FAMILY_QUERY; ifc.V_ifc_flags = 0; #endif -if (ioctl(vs, V_GIFCONF, (char *)&ifc) < 0) +if (ioctl(vs, V_GIFCONF, CS &ifc) < 0) log_write(0, LOG_PANIC_DIE, "Unable to get interface configuration: %d %s", errno, strerror(errno)); @@ -680,7 +685,7 @@ find its length, and then recopy the correct length. */ for (cp = buf; cp < buf + ifc.V_ifc_len; cp += len) { - memcpy((char *)&ifreq, cp, sizeof(ifreq)); + memcpy(CS &ifreq, cp, sizeof(ifreq)); #ifndef HAVE_SA_LEN len = sizeof(struct V_ifreq); @@ -710,7 +715,7 @@ for (cp = buf; cp < buf + ifc.V_ifc_len; cp += len) interface hasn't been "plumbed" to any protocol (IPv4 or IPv6). Therefore, we now just treat this case as "down" as well. */ - if (ioctl(vs, V_GIFFLAGS, (char *)&ifreq) < 0) + if (ioctl(vs, V_GIFFLAGS, CS &ifreq) < 0) { continue; /************* @@ -726,7 +731,7 @@ for (cp = buf; cp < buf + ifc.V_ifc_len; cp += len) GIFFLAGS may have wrecked the data. */ #ifndef SIOCGIFCONF_GIVES_ADDR - if (ioctl(vs, V_GIFADDR, (char *)&ifreq) < 0) + if (ioctl(vs, V_GIFADDR, CS &ifreq) < 0) log_write(0, LOG_PANIC_DIE, "Unable to get IP address for %s interface: " "%d %s", ifreq.V_ifr_name, errno, strerror(errno)); addrp = &ifreq.V_ifr_addr; @@ -844,7 +849,7 @@ os_get_dns_resolver_res(void) #if !defined(OS_UNSETENV) int -os_unsetenv(const uschar * name) +os_unsetenv(const unsigned char * name) { return unsetenv(CS name); } @@ -862,24 +867,24 @@ may not even do this. If the OS supports getcwd(NULL, 0) we'll use this, for all other systems we provide our own getcwd() */ #if !defined(OS_GETCWD) -uschar * -os_getcwd(uschar * buffer, size_t size) +unsigned char * +os_getcwd(unsigned char * buffer, size_t size) { -return getcwd(CS buffer, size); +return US getcwd(CS buffer, size); } #else #ifndef PATH_MAX # define PATH_MAX 4096 #endif -uschar * -os_getcwd(uschar * buffer, size_t size) +unsigned char * +os_getcwd(unsigned char * buffer, size_t size) { -void *rc; +char * b = CS buffer; if (!size) size = PATH_MAX; -if (!buffer && !(buffer = US malloc(size))) return NULL; -if (!(buffer = getcwd(CS buffer, size))) return NULL; -return realloc(CS buffer, strlen(buffer) + 1); +if (!b && !(b = malloc(size))) return NULL; +if (!(b = getcwd(b, size))) return NULL; +return buffer ? buffer : realloc(b, strlen(b) + 1); } #endif @@ -917,7 +922,7 @@ int rc; printf("Testing restarting signal; wait for handler message, then type a line\n"); strcpy(buffer, "*** default ***\n"); os_restarting_signal(SIGALRM, sigalrm_handler); -alarm(2); +ALARM(2); if ((rc = read(fd, buffer, sizeof(buffer))) < 0) printf("No data read\n"); else @@ -925,12 +930,12 @@ else buffer[rc] = 0; printf("Read: %s", buffer); } -alarm(0); +ALARM_CLR(0); printf("Testing non-restarting signal; should read no data after handler message\n"); strcpy(buffer, "*** default ***\n"); os_non_restarting_signal(SIGALRM, sigalrm_handler); -alarm(2); +ALARM(2); if ((rc = read(fd, buffer, sizeof(buffer))) < 0) printf("No data read\n"); else @@ -938,7 +943,7 @@ else buffer[rc] = 0; printf("Read: %s", buffer); } -alarm(0); +ALARM_CLR(0); printf("Testing load averages (last test - ^C to kill)\n"); for (;;)