[jcifs] patch for midlc
Michael B Allen
miallen at ioplex.com
Mon May 5 06:21:44 GMT 2008
The patch is pretty garbled. Can you resubmit as an attachment? I'll
put it in the patches directory.
Thanks,
Mike
On Sun, 04 May 2008 23:04:33 -0700
Francis Upton <francisu at ieee.org> wrote:
> Here is a patch that fixes some problems encountered while trying to
> compile a subset of the netlogon.idl file.
>
> This is based on the lasted source I found, which is 0.6.1.
>
> main ~/d/http/midlc-0.6.1> diff -wNaur origsrc/ src
> diff -wNaur origsrc/emit_dec_java.c src/emit_dec_java.c
> --- origsrc/emit_dec_java.c 2008-05-01 11:06:13.000000000 -0700
> +++ src/emit_dec_java.c 2008-05-01 12:13:17.000000000 -0700
> @@ -114,8 +114,8 @@
> if (!is_ref) {
> print(idl, indent, "if (_%sp != 0) {\n",
> name);
> if (!IS_PRIMATIVE(sym) && !IS_ARRAY(sym)
> && !IS_UNION(sym)) {
> - print(idl, indent + 4, "if (%s
> == null) { /* YOYOYO */\n", name);
> - print(idl, indent + 8, "%s = new
> %s();\n", name, sym->out_type);
> + print(idl, indent + 4, "if (%s
> == null) { /* YOYOYO */\n", sym->name);
> + print(idl, indent + 8, "%s = new
> %s();\n", sym->name, sym->out_type);
> print(idl, indent + 4, "}\n");
> }
> }
> diff -wNaur origsrc/emit_enc_java.c src/emit_enc_java.c
> --- origsrc/emit_enc_java.c 2008-05-01 11:06:13.000000000 -0700
> +++ src/emit_enc_java.c 2008-05-01 12:13:43.000000000 -0700
> @@ -76,7 +76,7 @@
> linkedlist_iterate(siblings, &iter);
> while ((mem = linkedlist_next(siblings,
> &iter))) {
> if (strcmp(mem->name, tmp) == 0) {
> - if
> (memcmp(mem->out_type, "Ndr", 3) == 0) {
> + if (mem->out_type !=
> NULL && memcmp(mem->out_type, "Ndr", 3) == 0) {
> bp +=
> sprintf(bp, ".value");
> }
> break;
> @@ -151,7 +151,15 @@
>
> buf[0] = '\0';
> if (strcmp(sym->name, sym->orig->name) != 0) {
> - sprintf(buf, "%s.", sym->parent->name);
> + sprintf(buf, "%s.", sym->name);
> + int i;
> + // Remove the last component of the name
> + for (i = strlen(buf) - 2; i >= 0; i--) {
> + if (buf[i] == '.') {
> + buf[i+1] = 0;
> + break;
> + }
> + }
> }
>
> if (length_is) {
> diff -wNaur origsrc/parse.c src/parse.c
> --- origsrc/parse.c 2008-05-01 11:06:13.000000000 -0700
> +++ src/parse.c 2008-05-01 09:50:45.000000000 -0700
> @@ -39,7 +39,7 @@
> for ( ;; ) {
> if (!retok) {
> if ((n = tokget(in, tok, tok + TOKMAX)) == -1) {
> - AMSG("");
> + AMSG("Unexpected end of file");
> return -1;
> } else if (n == 0) {
> break;
> @@ -75,8 +75,16 @@
> }
> } else if (ch == '(') {
> int i;
> + // Count the open we already saw
> + int nestedOpen = 1;
>
> - for (i = 0; (ch = fgetc(in->in))
> != ')' && ch != EOF; i++) {
> + for (i = 0; (ch = fgetc(in->in))
> != EOF; i++) {
> + if (ch == '(') {
> + nestedOpen++;
> + } else if (ch == ')') {
> + if (--nestedOpen
> == 0)
> + break;
> + }
> tok[i] = ch;
> }
> tok[i] = '\0';
> @@ -117,11 +125,11 @@
> s->idl_type = "import";
> s->name = dupstr(tok,
> idl->al);
> s->noemit = 1;
> - symaddmem(sym->parent, s);
> + symaddmem(sym, s);
> }
>
> if (idl_process_file(idl,
> dupstr(buf, idl->al), &iface) == -1) {
> - AMSG("");
> + AMSG("Failed to process
> import file %s", sym->filename);
> return -1;
> }
> }
> @@ -291,7 +299,7 @@
> s->parent = sym;
> n = parse(idl, in, s);
> if (n == -1) {
> - AMSG("");
> + AMSG("Recursive parse
> failed");
> return -1;
> } else if (n == 0 || n == 3) {
> symdel(s);
> @@ -305,7 +313,7 @@
>
> do {
> if ((m =
> tokget(in, stok, stok + TOKMAX)) < 1) {
> - AMSG("");
> +
> AMSG("Unexpected end of tokens");
> return m;
> }
> sch = stok[0];
>
>
>
>
> --
> You have brains in your head.
> You have feet in your shoes.
> - Dr Seuss, Oh the Places You'll Go
>
--
Michael B Allen
PHP Active Directory SPNEGO SSO
http://www.ioplex.com/
More information about the jcifs
mailing list