X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=blobdiff_plain;f=src%2Fsrc%2Fos.c;h=d40fb606d0e06c547649466db83d3e3a84977b70;hp=ee754f9f2689c44461aa56dad2f16cf72c05595f;hb=3ae121c94f0dfaeba5938de26931c49e29677d0a;hpb=8d6d5106a6f1bcba010877d55932a8d8dcfa88bd diff --git a/src/src/os.c b/src/src/os.c index ee754f9f2..d40fb606d 100644 --- a/src/src/os.c +++ b/src/src/os.c @@ -833,9 +833,57 @@ os_get_dns_resolver_res(void) #endif /* OS_GET_DNS_RESOLVER_RES */ +/* ----------------------------------------------------------------------- */ + +/*********************************************************** +* unsetenv() * +***********************************************************/ + +/* Most modern systems define int unsetenv(const char*), +* some don't. */ + +#if !defined(OS_UNSETENV) +int +os_unsetenv(const char *name) +{ + return unsetenv(name); +} +#endif /* ----------------------------------------------------------------------- */ +/*********************************************************** +* getcwd() * +***********************************************************/ + +/* Glibc allows getcwd(NULL, 0) to do auto-allocation. Some systems +do auto-allocation, but need the size of the buffer, and others +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) +char * +os_getcwd(char *buffer, size_t size) +{ +return getcwd(buffer, size); +} +#else +#ifndef PATH_MAX +# define PATH_MAX 4096 +#endif +char * +os_getcwd(char *buffer, size_t size) +{ +void *rc; + +if (!size) size = PATH_MAX; +if (!buffer && !(buffer = (char*) malloc(size))) return NULL; +if (!(buffer = getcwd(buffer, size))) return NULL; +return realloc(buffer, strlen(buffer) + 1); +} +#endif + +/* ----------------------------------------------------------------------- */