svn commit: samba r17764 - in
branches/SAMBA_4_0/source/lib/ldb/replace: .
tridge at samba.org
tridge at samba.org
Thu Aug 24 00:41:16 GMT 2006
Author: tridge
Date: 2006-08-24 00:41:15 +0000 (Thu, 24 Aug 2006)
New Revision: 17764
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17764
Log:
more portable setenv() replacement
Modified:
branches/SAMBA_4_0/source/lib/ldb/replace/replace.c
Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/replace/replace.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/replace/replace.c 2006-08-23 23:21:29 UTC (rev 17763)
+++ branches/SAMBA_4_0/source/lib/ldb/replace/replace.c 2006-08-24 00:41:15 UTC (rev 17764)
@@ -70,17 +70,31 @@
#ifndef HAVE_SETENV
int setenv(const char *name, const char *value, int overwrite)
{
- char *p = NULL;
- int ret = -1;
+ char *p;
+ size_t l1, l2;
+ int ret;
- asprintf(&p, "%s=%s", name, value);
+ if (!overwrite && getenv(name)) {
+ return 0;
+ }
- if (overwrite || getenv(name)) {
- if (p) ret = putenv(p);
- } else {
- ret = 0;
+ l1 = strlen(name);
+ l2 = strlen(value);
+
+ p = malloc(l1+l2+2);
+ if (p == NULL) {
+ return -1;
}
+ memcpy(p, name, l1);
+ p[l1] = '=';
+ memcpy(p+l1+1, value, l2);
+ p[l1+l2+1] = 0;
- return ret;
+ ret = putenv(p);
+ if (ret != 0) {
+ free(p);
+ }
+
+ return ret;
}
#endif
More information about the samba-cvs
mailing list