[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/win [POSSIBLY UNSAFE]
From:       Peter Kümmel <syntheticpp () yahoo ! com>
Date:       2006-02-07 9:29:13
Message-ID: 1139304553.482829.21162.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 506606 by kuemmel:

move kdecore/fakes.c into kdewin32.lib (only for windows)

 M  +3 -1      include/msvc/string.h  
 M  +4 -1      include/msvc/unistd.h   [POSSIBLY UNSAFE: mkstemp]
 M  +3 -4      src/string.c  
 M  +130 -0    src/unistd.c  


--- trunk/KDE/kdelibs/win/include/msvc/string.h #506605:506606
@@ -33,8 +33,10 @@
 
 KDEWIN32_EXPORT char* strndup(const char *src, size_t n);
 
-// implementation in kdecore/fakes.c
+// from kdecore/fakes.c
+
 KDEWIN32_EXPORT unsigned long strlcpy(char *dst, const char *src, unsigned long siz);
+
 KDEWIN32_EXPORT unsigned long strlcat(char *dst, const char *src, unsigned long siz);
 
 
--- trunk/KDE/kdelibs/win/include/msvc/unistd.h #506605:506606
@@ -124,9 +124,12 @@
 
 KDEWIN32_EXPORT int mkstemps(char* _template, int suffix_len);
 
-// implementation in kdecore/fakes.c
+// from kdecore/fakes.c
+
 KDEWIN32_EXPORT int seteuid(uid_t euid);
+
 KDEWIN32_EXPORT int mkstemp (char* _template);
+
 KDEWIN32_EXPORT char* mkdtemp (char* _template);
 
 #ifdef __cplusplus
--- trunk/KDE/kdelibs/win/src/string.c #506605:506606
@@ -26,7 +26,7 @@
 #define MIN(a,b) ((a) < (b) ? (a) : (b))
 #endif
 
-/*
+
 // from kdecore/fakes.c
 KDEWIN32_EXPORT unsigned long strlcpy(char *d, const char *s, unsigned long bufsize)
 {
@@ -43,8 +43,7 @@
 
     return ret;
 }
-*/
-/*
+
 // from kdecore/fakes.c
 KDEWIN32_EXPORT unsigned long strlcat(char *d, const char *s, unsigned long bufsize)
 {
@@ -65,7 +64,7 @@
 
 	return ret;
 }
-*/
+
 KDEWIN32_EXPORT char* strndup(const char *src, size_t n)
 {
 	const size_t len = MIN(strlen(src), n);
--- trunk/KDE/kdelibs/win/src/unistd.c #506605:506606
@@ -187,6 +187,7 @@
 	return 0;
 }
 
+
 /* this is based on code taken from the GNU libc, distributed under the LGPL license */
 
 /* Generate a unique temporary file name from TEMPLATE.
@@ -250,3 +251,132 @@
   _template[0] = '\0';
   return -1;
 }
+
+// from kdecore/fakes.c
+KDEWIN32_EXPORT int setenv(const char *name, const char *value, int overwrite) {
+    int i;
+    char * a;
+
+    if (!overwrite && getenv(name)) return 0;
+
+    i = strlen(name) + strlen(value) + 2;
+    a = (char*)malloc(i);
+    if (!a) return 1;
+
+    strcpy(a, name);
+    strcat(a, "=");
+    strcat(a, value);
+
+    return putenv(a);
+}
+
+
+// from kdecore/fakes.c
+#ifndef environ
+extern char ** environ;
+#endif
+KDEWIN32_EXPORT void unsetenv (name)
+     const char *name;
+{
+  size_t len;
+  char **ep;
+
+  if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+    {
+      errno = EINVAL;
+      return;
+    }
+
+  len = strlen (name);
+
+  ep = environ;
+  while (*ep != NULL)
+    if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+      {
+	/* Found it.  Remove this pointer by moving later ones back.  */
+	char **dp = ep;
+
+	do
+	  dp[0] = dp[1];
+	while (*dp++);
+	/* Continue the loop in case NAME appears again.  */
+      }
+    else
+      ++ep;
+
+}
+
+// from kdecore/fakes.c
+int seteuid(uid_t euid)
+{
+    return setreuid(-1, euid); /* Well, if you have neither you are in trouble :) */
+}
+
+// from kdecore/fakes.c
+/* Generate a unique temporary directory name from TEMPLATE.
+
+   TEMPLATE has the form:
+
+   <path>/ccXXXXXX
+
+
+   The last six characters of TEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the filename unique.
+
+   Returns a file descriptor open on the file for reading and writing.  */
+
+KDEWIN32_EXPORT char* mkdtemp (char* _template)
+{
+  static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+  char *XXXXXX;
+  int len;
+  int count;
+  int value;
+
+  len = strlen (_template);
+
+  if ((int) len < 6 || strncmp (&_template[len - 6], "XXXXXX", 6))
+      return 0;
+
+  XXXXXX = &_template[len - 6];
+
+  value = rand();
+  for (count = 0; count < 256; ++count)
+  {
+      int v = value;
+
+      /* Fill in the random bits.  */
+      XXXXXX[0] = letters[v % 62];
+      v /= 62;
+      XXXXXX[1] = letters[v % 62];
+      v /= 62;
+      XXXXXX[2] = letters[v % 62];
+      v /= 62;
+      XXXXXX[3] = letters[v % 62];
+      v /= 62;
+      XXXXXX[4] = letters[v % 62];
+      v /= 62;
+      XXXXXX[5] = letters[v % 62];
+
+      /* This is a random value.  It is only necessary that the next
+	 TMP_MAX values generated by adding 7777 to VALUE are different
+	 with (module 2^32).  */
+      value += 7777;
+
+      if (!kdewin32_mkdir(_template,0700))
+	return _template;	
+    }
+    return 0;
+}
+
+
+// from kdecore/fakes.c
+#ifndef ENOTSUP
+#define ENOTSUP 134 /* Not supported */
+#endif
+KDEWIN32_EXPORT int revoke(const char *tty)
+{
+        errno = ENOTSUP;
+        return -1;
+}
+
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic