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