Module: wine Branch: refs/heads/master Commit: 0f2a642d70c200283d9d0fb8ca7307f06e12fab7 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=0f2a642d70c200283d9d0fb8...
Author: Alexandre Julliard julliard@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);