Eric Kohl : widl: Implement 'oldnames' option.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri May 5 12:10:17 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 2c7270e388e8e3ea6448fc98c5ee31e7dbc6ed7e
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=2c7270e388e8e3ea6448fc98c5ee31e7dbc6ed7e
Author: Eric Kohl <eric.kohl at t-online.de>
Date: Sat Apr 22 21:52:51 2006 +0200
widl: Implement 'oldnames' option.
---
tools/widl/client.c | 8 ++++++--
tools/widl/header.c | 12 ++++++++++--
tools/widl/server.c | 8 ++++++--
tools/widl/widl.c | 19 +++++++++++++++++--
tools/widl/widl.h | 1 +
tools/widl/widl.man.in | 2 ++
6 files changed, 42 insertions(+), 8 deletions(-)
diff --git a/tools/widl/client.c b/tools/widl/client.c
index ea40d5e..6c00693 100644
--- a/tools/widl/client.c
+++ b/tools/widl/client.c
@@ -402,8 +402,12 @@ static void write_clientinterfacedecl(ty
print_client("0,\n");
indent--;
print_client("};\n");
- print_client("RPC_IF_HANDLE %s_v%d_%d_c_ifspec = (RPC_IF_HANDLE)& %s___RpcClientInterface;\n",
- iface->name, LOWORD(ver), HIWORD(ver), iface->name);
+ if (old_names)
+ print_client("RPC_IF_HANDLE %s_ClientIfHandle = (RPC_IF_HANDLE)& %s___RpcClientInterface;\n",
+ iface->name, iface->name);
+ else
+ print_client("RPC_IF_HANDLE %s_v%d_%d_c_ifspec = (RPC_IF_HANDLE)& %s___RpcClientInterface;\n",
+ iface->name, LOWORD(ver), HIWORD(ver), iface->name);
fprintf(client, "\n");
}
diff --git a/tools/widl/header.c b/tools/widl/header.c
index c4f3a26..0f39104 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -934,8 +934,16 @@ static void write_rpc_interface(const ty
{
write_iface_guid(iface);
if (var) fprintf(header, "extern handle_t %s;\n", var);
- fprintf(header, "extern RPC_IF_HANDLE %s_v%d_%d_c_ifspec;\n", iface->name, LOWORD(ver), HIWORD(ver));
- fprintf(header, "extern RPC_IF_HANDLE %s_v%d_%d_s_ifspec;\n", iface->name, LOWORD(ver), HIWORD(ver));
+ if (old_names)
+ {
+ fprintf(header, "extern RPC_IF_HANDLE %s_ClientIfHandle;\n", iface->name);
+ fprintf(header, "extern RPC_IF_HANDLE %s_ServerIfHandle;\n", iface->name);
+ }
+ else
+ {
+ fprintf(header, "extern RPC_IF_HANDLE %s_v%d_%d_c_ifspec;\n", iface->name, LOWORD(ver), HIWORD(ver));
+ fprintf(header, "extern RPC_IF_HANDLE %s_v%d_%d_s_ifspec;\n", iface->name, LOWORD(ver), HIWORD(ver));
+ }
write_function_proto(iface);
}
fprintf(header,"\n#endif /* __%s_INTERFACE_DEFINED__ */\n\n", iface->name);
diff --git a/tools/widl/server.c b/tools/widl/server.c
index fc9051d..f02c146 100644
--- a/tools/widl/server.c
+++ b/tools/widl/server.c
@@ -548,8 +548,12 @@ static void write_serverinterfacedecl(ty
print_server("0,\n");
indent--;
print_server("};\n");
- print_server("RPC_IF_HANDLE %s_v%d_%d_s_ifspec = (RPC_IF_HANDLE)& %s___RpcServerInterface;\n",
- iface->name, LOWORD(ver), HIWORD(ver), iface->name);
+ if (old_names)
+ print_server("RPC_IF_HANDLE %s_ServerIfHandle = (RPC_IF_HANDLE)& %s___RpcServerInterface;\n",
+ iface->name, iface->name);
+ else
+ print_server("RPC_IF_HANDLE %s_v%d_%d_s_ifspec = (RPC_IF_HANDLE)& %s___RpcServerInterface;\n",
+ iface->name, LOWORD(ver), HIWORD(ver), iface->name);
fprintf(server, "\n");
}
diff --git a/tools/widl/widl.c b/tools/widl/widl.c
index 765fe06..f26f40d 100644
--- a/tools/widl/widl.c
+++ b/tools/widl/widl.c
@@ -31,6 +31,9 @@ #include <string.h>
#include <assert.h>
#include <ctype.h>
#include <signal.h>
+#ifdef HAVE_GETOPT_H
+# include <getopt.h>
+#endif
#include "widl.h"
#include "utils.h"
@@ -58,6 +61,7 @@ static char usage[] =
" -H file Name of header file (default is infile.h)\n"
" -I path Set include search dir to path (multiple -I allowed)\n"
" -N Do not preprocess input\n"
+" --oldnames Use old naming conventions\n"
" -p Generate proxy\n"
" -P file Name of proxy file (default is infile_p.c)\n"
" -s Generate server stub\n"
@@ -91,6 +95,7 @@ int do_proxies = 0;
int do_client = 0;
int do_server = 0;
int no_preprocess = 0;
+int old_names = 0;
char *input_name;
char *header_name;
@@ -111,7 +116,13 @@ FILE *proxy;
time_t now;
-int getopt (int argc, char *const *argv, const char *optstring);
+static const char *short_options =
+ "cC:d:D:EhH:I:NpP:sS:tT:VW";
+static struct option long_options[] = {
+ { "oldnames", 0, 0, 1 },
+ { 0, 0, 0, 0 }
+};
+
static void rm_tempfile(void);
static void segvhandler(int sig);
@@ -147,13 +158,17 @@ int main(int argc,char *argv[])
extern int optind;
int optc;
int ret = 0;
+ int opti = 0;
signal(SIGSEGV, segvhandler);
now = time(NULL);
- while((optc = getopt(argc, argv, "cC:d:D:EhH:I:NpP:sS:tT:VW")) != EOF) {
+ while((optc = getopt_long(argc, argv, short_options, long_options, &opti)) != EOF) {
switch(optc) {
+ case 1:
+ old_names = 1;
+ break;
case 'c':
do_everything = 0;
do_client = 1;
diff --git a/tools/widl/widl.h b/tools/widl/widl.h
index 5b303c3..db8b95c 100644
--- a/tools/widl/widl.h
+++ b/tools/widl/widl.h
@@ -43,6 +43,7 @@ extern int do_typelib;
extern int do_proxies;
extern int do_client;
extern int do_server;
+extern int old_names;
extern char *input_name;
extern char *header_name;
diff --git a/tools/widl/widl.man.in b/tools/widl/widl.man.in
index 9868467..267f1fe 100644
--- a/tools/widl/widl.man.in
+++ b/tools/widl/widl.man.in
@@ -24,6 +24,8 @@ Generate header files.
.IP "\fB-H \fIfile\fR"
Name of header file to generate. The default header
filename is infile.h.
+.IP "\fB--oldnames\fR"
+Use old naming conventions.
.PP
.B Type library options:
.IP \fB-t\fR
More information about the wine-cvs
mailing list