Alexandre Julliard : widl: Make sure the token variables are always
initialized properly.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Feb 2 07:09:18 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 0f2a642d70c200283d9d0fb8ca7307f06e12fab7
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=0f2a642d70c200283d9d0fb8ca7307f06e12fab7
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Feb 2 13:22:47 2006 +0100
widl: Make sure the token variables are always initialized properly.
---
tools/widl/widl.c | 16 +++++++++++++---
1 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/tools/widl/widl.c b/tools/widl/widl.c
index 02e7eee..765fe06 100644
--- a/tools/widl/widl.c
+++ b/tools/widl/widl.c
@@ -132,6 +132,15 @@ static char *make_token(const char *name
return token;
}
+/* duplicate a basename into a valid C token */
+static char *dup_basename_token(const char *name, const char *ext)
+{
+ char *p, *ret = dup_basename( name, ext );
+ /* map invalid characters to '_' */
+ for (p = ret; *p; p++) if (!isalnum(*p)) *p = '_';
+ return ret;
+}
+
int main(int argc,char *argv[])
{
extern char* optarg;
@@ -244,22 +253,23 @@ int main(int argc,char *argv[])
if (!proxy_name && do_proxies) {
proxy_name = dup_basename(input_name, ".idl");
- proxy_token = xstrdup(proxy_name);
strcat(proxy_name, "_p.c");
}
if (!client_name && do_client) {
client_name = dup_basename(input_name, ".idl");
- client_token = xstrdup(client_name);
strcat(client_name, "_c.c");
}
if (!server_name && do_server) {
server_name = dup_basename(input_name, ".idl");
- server_token = xstrdup(server_name);
strcat(server_name, "_s.c");
}
+ if (do_proxies) proxy_token = dup_basename_token(proxy_name,"_p.c");
+ if (do_client) client_token = dup_basename_token(client_name,"_c.c");
+ if (do_server) server_token = dup_basename_token(server_name,"_s.c");
+
wpp_add_cmdline_define("__WIDL__");
atexit(rm_tempfile);
More information about the wine-cvs
mailing list