aboutsummaryrefslogtreecommitdiffstats
path: root/erts/etc/win32/erlsrv/erlsrv_util.c
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2013-06-04 12:38:31 +0200
committerDan Gudmundsson <[email protected]>2013-06-04 12:38:31 +0200
commite83fd8f94aba352b6cc055d2b4cfff007911b6d4 (patch)
tree66b22e7e79813d9ec2b0f5a9817a3908682a22ee /erts/etc/win32/erlsrv/erlsrv_util.c
parente00d6bbbabd7b76c050665fc417e81554a83e341 (diff)
parentee23d4b549618044d4a4f800db839483b359cb9f (diff)
downloadotp-e83fd8f94aba352b6cc055d2b4cfff007911b6d4.tar.gz
otp-e83fd8f94aba352b6cc055d2b4cfff007911b6d4.tar.bz2
otp-e83fd8f94aba352b6cc055d2b4cfff007911b6d4.zip
Merge branch 'dgud/win32_unicode'
* dgud/win32_unicode: erts: Windows, convert erlsrv to use widestring erts: Window start_erl now uses widechars/unicode Quote windows paths with spaces Handle space in paths in test Makefiles erts: Fix windows widestring args and paths in tools erts: Windows, use widechars for all paths during startup OTP-11135
Diffstat (limited to 'erts/etc/win32/erlsrv/erlsrv_util.c')
-rw-r--r--erts/etc/win32/erlsrv/erlsrv_util.c100
1 files changed, 50 insertions, 50 deletions
diff --git a/erts/etc/win32/erlsrv/erlsrv_util.c b/erts/etc/win32/erlsrv/erlsrv_util.c
index da3c6f5ef7..4b1ba071e8 100644
--- a/erts/etc/win32/erlsrv/erlsrv_util.c
+++ b/erts/etc/win32/erlsrv/erlsrv_util.c
@@ -25,76 +25,76 @@
#include "erlsrv_util.h"
#include "erlsrv_logmess.h"
-char *service_name = "";
-char *real_service_name = "";
+wchar_t *service_name = L"";
+wchar_t *real_service_name = L"";
-void log_warning(char *mess){
+void log_warning(wchar_t *mess){
HANDLE logh;
- char *strings[] = {service_name, mess , NULL};
+ wchar_t *strings[] = {service_name, mess , NULL};
- if(!(logh = RegisterEventSource(NULL,APP_NAME)))
+ if(!(logh = RegisterEventSourceW(NULL,APP_NAME)))
return;
- ReportEvent(logh, EVENTLOG_WARNING_TYPE, 0, MSG_WARNING,
- NULL, 2, 0, strings, NULL);
+ ReportEventW(logh, EVENTLOG_WARNING_TYPE, 0, MSG_WARNING,
+ NULL, 2, 0, strings, NULL);
DeregisterEventSource(logh);
}
-void log_error(char *mess){
+void log_error(wchar_t *mess){
HANDLE logh;
- char *strings[] = {service_name, mess , NULL};
+ wchar_t *strings[] = {service_name, mess , NULL};
- if(!(logh = RegisterEventSource(NULL,APP_NAME)))
+ if(!(logh = RegisterEventSourceW(NULL,APP_NAME)))
return;
- ReportEvent(logh, EVENTLOG_ERROR_TYPE, 0, MSG_ERROR,
- NULL, 2, 0, strings, NULL);
+ ReportEventW(logh, EVENTLOG_ERROR_TYPE, 0, MSG_ERROR,
+ NULL, 2, 0, strings, NULL);
DeregisterEventSource(logh);
}
-void log_info(char *mess){
+void log_info(wchar_t *mess){
HANDLE logh;
- char *strings[] = {service_name, mess , NULL};
+ wchar_t *strings[] = {service_name, mess , NULL};
- if(!(logh = RegisterEventSource(NULL,APP_NAME)))
+ if(!(logh = RegisterEventSourceW(NULL,APP_NAME)))
return;
- ReportEvent(logh, EVENTLOG_INFORMATION_TYPE, 0, MSG_INFO,
- NULL, 2, 0, strings, NULL);
+ ReportEventW(logh, EVENTLOG_INFORMATION_TYPE, 0, MSG_INFO,
+ NULL, 2, 0, strings, NULL);
DeregisterEventSource(logh);
}
#ifndef NDEBUG
-void log_debug(char *mess){
- char *buff=malloc(strlen(mess)+100);
- sprintf(buff,"DEBUG! %s",mess);
+void log_debug(wchar_t *mess){
+ wchar_t *buff=malloc((wcslen(mess)+100)*sizeof(wchar_t));
+ swprintf(buff,wcslen(mess)+100,L"DEBUG! %s",mess);
log_info(buff);
free(buff);
}
#endif
-char *envdup(char *env){
- char *tmp;
+wchar_t *envdup(wchar_t *env){
+ wchar_t *tmp;
int len;
- for(tmp = env; *tmp != '\0'; tmp += strlen(tmp)+1)
+ for(tmp = env; *tmp != L'\0'; tmp += wcslen(tmp)+1)
;
len = (tmp - env) + 1;
if(len == 1)
++len;
- tmp = malloc(len);
- memcpy(tmp,env,len);
+ tmp = malloc(len*sizeof(wchar_t));
+ memcpy(tmp,env,len*sizeof(wchar_t));
return tmp;
}
-char **env_to_arg(char *env){
- char **ret;
- char *tmp;
+wchar_t **env_to_arg(wchar_t *env){
+ wchar_t **ret;
+ wchar_t *tmp;
int i;
int num_strings = 0;
- for(tmp = env; *tmp != '\0'; tmp += strlen(tmp)+1)
+ for(tmp = env; *tmp != L'\0'; tmp += wcslen(tmp)+1)
++num_strings;
/* malloc enough to insert ONE string */
- ret = malloc(sizeof(char *) * (num_strings + 2));
+ ret = malloc(sizeof(wchar_t *) * (num_strings + 2));
i = 0;
- for(tmp = env; *tmp != '\0'; tmp += strlen(tmp)+1){
- ret[i++] = strdup(tmp);
+ for(tmp = env; *tmp != L'\0'; tmp += wcslen(tmp)+1){
+ ret[i++] = wcsdup(tmp);
}
ret[i] = NULL;
free(env);
@@ -102,52 +102,52 @@ char **env_to_arg(char *env){
}
static int compare(const void *a, const void *b){
- char *s1 = *((char **) a);
- char *s2 = *((char **) b);
- char *e1 = strchr(s1,'=');
- char *e2 = strchr(s2,'=');
+ wchar_t *s1 = *((wchar_t **) a);
+ wchar_t *s2 = *((wchar_t **) b);
+ wchar_t *e1 = wcschr(s1,L'=');
+ wchar_t *e2 = wcschr(s2,L'=');
int ret;
int len;
if(!e1)
- e1 = s1 + strlen(s1);
+ e1 = s1 + wcslen(s1);
if(!e2)
- e2 = s2 + strlen(s2);
+ e2 = s2 + wcslen(s2);
if((e1 - s1) > (e2 - s2))
len = (e2 - s2);
else
len = (e1 - s1);
- ret = _strnicmp(s1,s2,len);
+ ret = _wcsnicmp(s1,s2,len);
if(ret == 0)
return ((e1 - s1) - (e2 - s2));
else
return ret;
}
-char *arg_to_env(char **arg){
- char *block;
- char *pek;
+wchar_t *arg_to_env(wchar_t **arg){
+ wchar_t *block;
+ wchar_t *pek;
int i;
int totlen = 1; /* extra '\0' */
for(i=0;arg[i] != NULL;++i)
- totlen += strlen(arg[i])+1;
+ totlen += wcslen(arg[i])+1;
/* sort the environment vector */
- qsort(arg,i,sizeof(char *),&compare);
+ qsort(arg,i,sizeof(wchar_t *),&compare);
if(totlen == 1){
- block = malloc(2);
- block[0] = block[1] = '\0';
+ block = malloc(2*sizeof(wchar_t));
+ block[0] = block[1] = L'\0';
} else {
- block = malloc(totlen);
+ block = malloc(totlen*sizeof(wchar_t));
pek = block;
for(i=0; arg[i] != NULL; ++i){
- strcpy(pek, arg[i]);
+ wcscpy(pek, arg[i]);
free(arg[i]);
- pek += strlen(pek)+1;
+ pek += wcslen(pek)+1;
}
- *pek = '\0';
+ *pek = L'\0';
}
free(arg);
return block;