Add compat/unsetenv.c .
[git.git] / compat / unsetenv.c
diff --git a/compat/unsetenv.c b/compat/unsetenv.c
new file mode 100644 (file)
index 0000000..3a5e4ec
--- /dev/null
@@ -0,0 +1,26 @@
+#include <stdlib.h>
+#include <string.h>
+
+void gitunsetenv (const char *name)
+{
+     extern char **environ;
+     int src, dst;
+     size_t nmln;
+
+     nmln = strlen(name);
+
+     for (src = dst = 0; environ[src]; ++src) {
+         size_t enln;
+         enln = strlen(environ[src]);
+         if (enln > nmln) {
+               /* might match, and can test for '=' safely */
+              if (0 == strncmp (environ[src], name, nmln)
+                  && '=' == environ[src][nmln])
+                   /* matches, so skip */
+                   continue;
+         }
+         environ[dst] = environ[src];
+         ++dst;
+     }
+     environ[dst] = NULL;
+}