diff options
Diffstat (limited to 'w32/subproc/misc.c')
-rw-r--r-- | w32/subproc/misc.c | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/w32/subproc/misc.c b/w32/subproc/misc.c index 23b6124..2fd66ab 100644 --- a/w32/subproc/misc.c +++ b/w32/subproc/misc.c @@ -1,63 +1,63 @@ -#include <stddef.h> -#include <stdlib.h> -#include <string.h> -#include <windows.h> -#include "proc.h" - - -/* - * Description: Convert a NULL string terminated UNIX environment block to - * an environment block suitable for a win32 system call - * - * Returns: TRUE= success, FALSE=fail - * - * Notes/Dependencies: the environment block is sorted in case-insensitive - * order, is double-null terminated, and is a char *, not a char ** - */ -int _cdecl compare(const void *a1, const void *a2) -{ - return _stricoll(*((char**)a1),*((char**)a2)); -} -bool_t -arr2envblk(char **arr, char **envblk_out) -{ - char **tmp; - int size_needed; - int arrcnt; - char *ptr; - - arrcnt = 0; - while (arr[arrcnt]) { - arrcnt++; - } - - tmp = (char**) calloc(arrcnt + 1, sizeof(char *)); - if (!tmp) { - return FALSE; - } - - arrcnt = 0; - size_needed = 0; - while (arr[arrcnt]) { - tmp[arrcnt] = arr[arrcnt]; - size_needed += strlen(arr[arrcnt]) + 1; - arrcnt++; - } - size_needed++; - - qsort((void *) tmp, (size_t) arrcnt, sizeof (char*), compare); - - ptr = *envblk_out = calloc(size_needed, 1); - if (!ptr) { - free(tmp); - return FALSE; - } - - arrcnt = 0; - while (tmp[arrcnt]) { - strcpy(ptr, tmp[arrcnt]); - ptr += strlen(tmp[arrcnt]) + 1; - arrcnt++; - } - return TRUE; -} +#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <windows.h>
+#include "proc.h"
+
+
+/*
+ * Description: Convert a NULL string terminated UNIX environment block to
+ * an environment block suitable for a win32 system call
+ *
+ * Returns: TRUE= success, FALSE=fail
+ *
+ * Notes/Dependencies: the environment block is sorted in case-insensitive
+ * order, is double-null terminated, and is a char *, not a char **
+ */
+int _cdecl compare(const void *a1, const void *a2)
+{
+ return _stricoll(*((char**)a1),*((char**)a2));
+}
+bool_t
+arr2envblk(char **arr, char **envblk_out)
+{
+ char **tmp;
+ int size_needed;
+ int arrcnt;
+ char *ptr;
+
+ arrcnt = 0;
+ while (arr[arrcnt]) {
+ arrcnt++;
+ }
+
+ tmp = (char**) calloc(arrcnt + 1, sizeof(char *));
+ if (!tmp) {
+ return FALSE;
+ }
+
+ arrcnt = 0;
+ size_needed = 0;
+ while (arr[arrcnt]) {
+ tmp[arrcnt] = arr[arrcnt];
+ size_needed += strlen(arr[arrcnt]) + 1;
+ arrcnt++;
+ }
+ size_needed++;
+
+ qsort((void *) tmp, (size_t) arrcnt, sizeof (char*), compare);
+
+ ptr = *envblk_out = calloc(size_needed, 1);
+ if (!ptr) {
+ free(tmp);
+ return FALSE;
+ }
+
+ arrcnt = 0;
+ while (tmp[arrcnt]) {
+ strcpy(ptr, tmp[arrcnt]);
+ ptr += strlen(tmp[arrcnt]) + 1;
+ arrcnt++;
+ }
+ return TRUE;
+}
|