rap: let the rap print function be autogenerated again.
authorGünther Deschner <gd@samba.org>
Thu, 29 Apr 2010 23:11:44 +0000 (01:11 +0200)
committerGünther Deschner <gd@samba.org>
Thu, 29 Apr 2010 23:27:59 +0000 (01:27 +0200)
Guenther

librpc/gen_ndr/ndr_rap.c
librpc/gen_ndr/rap.h
librpc/idl/rap.idl
librpc/ndr/ndr_rap.c
librpc/ndr/ndr_rap.h

index 5a4543196022b1d4c0c26f8d93e5f96fcdb8191d..6d975184c1aba478da4aaeede082a4d2c3cb185b 100644 (file)
@@ -2257,6 +2257,7 @@ _PUBLIC_ void ndr_print_rap_NetShareEnum(struct ndr_print *ndr, const char *name
 
 _PUBLIC_ enum ndr_err_code ndr_push_rap_NetServerEnum2(struct ndr_push *ndr, int flags, const struct rap_NetServerEnum2 *r)
 {
+       uint32_t cntr_info_0;
        if (flags & NDR_IN) {
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.bufsize));
@@ -2276,17 +2277,20 @@ _PUBLIC_ enum ndr_err_code ndr_push_rap_NetServerEnum2(struct ndr_push *ndr, int
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.convert));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.count));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.available));
-               if (r->out.info == NULL) {
-                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+                       NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
+                       NDR_CHECK(ndr_push_rap_server_info(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
+               }
+               for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+                       NDR_CHECK(ndr_push_rap_server_info(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
                }
-               NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
-               NDR_CHECK(ndr_push_rap_server_info(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
        }
        return NDR_ERR_SUCCESS;
 }
 
 _PUBLIC_ enum ndr_err_code ndr_pull_rap_NetServerEnum2(struct ndr_pull *ndr, int flags, struct rap_NetServerEnum2 *r)
 {
+       uint32_t cntr_info_0;
        TALLOC_CTX *_mem_save_info_0;
        if (flags & NDR_IN) {
                ZERO_STRUCT(r->out);
@@ -2300,28 +2304,30 @@ _PUBLIC_ enum ndr_err_code ndr_pull_rap_NetServerEnum2(struct ndr_pull *ndr, int
                        NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->in.domain));
                        ndr->flags = _flags_save_string;
                }
-               NDR_PULL_ALLOC(ndr, r->out.info);
-               ZERO_STRUCTP(r->out.info);
        }
        if (flags & NDR_OUT) {
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.status));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.convert));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.count));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.available));
-               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-                       NDR_PULL_ALLOC(ndr, r->out.info);
-               }
+               NDR_PULL_ALLOC_N(ndr, r->out.info, r->out.count);
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-               NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
-               NDR_CHECK(ndr_pull_rap_server_info(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
-               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
+               NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
+               for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+                       NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
+                       NDR_CHECK(ndr_pull_rap_server_info(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
+               }
+               for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+                       NDR_CHECK(ndr_pull_rap_server_info(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
+               }
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
        }
        return NDR_ERR_SUCCESS;
 }
 
 _PUBLIC_ void ndr_print_rap_NetServerEnum2(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetServerEnum2 *r)
 {
+       uint32_t cntr_info_0;
        ndr_print_struct(ndr, name, "rap_NetServerEnum2");
        ndr->depth++;
        if (flags & NDR_SET_VALUES) {
@@ -2346,10 +2352,16 @@ _PUBLIC_ void ndr_print_rap_NetServerEnum2(struct ndr_print *ndr, const char *na
                ndr_print_uint16(ndr, "convert", r->out.convert);
                ndr_print_uint16(ndr, "count", r->out.count);
                ndr_print_uint16(ndr, "available", r->out.available);
-               ndr_print_ptr(ndr, "info", r->out.info);
+               ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)r->out.count);
                ndr->depth++;
-               ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
-               ndr_print_rap_server_info(ndr, "info", r->out.info);
+               for (cntr_info_0=0;cntr_info_0<r->out.count;cntr_info_0++) {
+                       char *idx_0=NULL;
+                       if (asprintf(&idx_0, "[%d]", cntr_info_0) != -1) {
+                               ndr_print_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level);
+                               ndr_print_rap_server_info(ndr, "info", &r->out.info[cntr_info_0]);
+                               free(idx_0);
+                       }
+               }
                ndr->depth--;
                ndr->depth--;
        }
@@ -2470,6 +2482,44 @@ _PUBLIC_ enum ndr_err_code ndr_pull_rap_NetPrintQEnum(struct ndr_pull *ndr, int
        return NDR_ERR_SUCCESS;
 }
 
+_PUBLIC_ void ndr_print_rap_NetPrintQEnum(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetPrintQEnum *r)
+{
+       uint32_t cntr_info_0;
+       ndr_print_struct(ndr, name, "rap_NetPrintQEnum");
+       ndr->depth++;
+       if (flags & NDR_SET_VALUES) {
+               ndr->flags |= LIBNDR_PRINT_SET_VALUES;
+       }
+       if (flags & NDR_IN) {
+               ndr_print_struct(ndr, "in", "rap_NetPrintQEnum");
+               ndr->depth++;
+               ndr_print_uint16(ndr, "level", r->in.level);
+               ndr_print_uint16(ndr, "bufsize", r->in.bufsize);
+               ndr->depth--;
+       }
+       if (flags & NDR_OUT) {
+               ndr_print_struct(ndr, "out", "rap_NetPrintQEnum");
+               ndr->depth++;
+               ndr_print_uint16(ndr, "status", r->out.status);
+               ndr_print_uint16(ndr, "convert", r->out.convert);
+               ndr_print_uint16(ndr, "count", r->out.count);
+               ndr_print_uint16(ndr, "available", r->out.available);
+               ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)r->out.count);
+               ndr->depth++;
+               for (cntr_info_0=0;cntr_info_0<r->out.count;cntr_info_0++) {
+                       char *idx_0=NULL;
+                       if (asprintf(&idx_0, "[%d]", cntr_info_0) != -1) {
+                               ndr_print_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level);
+                               ndr_print_rap_printq_info(ndr, "info", &r->out.info[cntr_info_0]);
+                               free(idx_0);
+                       }
+               }
+               ndr->depth--;
+               ndr->depth--;
+       }
+       ndr->depth--;
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_rap_NetPrintQGetInfo(struct ndr_push *ndr, int flags, const struct rap_NetPrintQGetInfo *r)
 {
        if (flags & NDR_IN) {
index 15538a886f88923c355dfd97a6bac9a2c91ae97f..4a6a11fee5d061721141808822d6136dc65f2f95 100644 (file)
@@ -623,7 +623,7 @@ struct rap_NetServerEnum2 {
                uint16_t convert;
                uint16_t count;
                uint16_t available;
-               union rap_server_info *info;/* [ref,switch_is(level)] */
+               union rap_server_info *info;/* [switch_is(level)] */
        } out;
 
 };
index 061eb8f2fb9f23875ba56a854420b08bc6fa6fd6..5705426223f54a349ed5e75ab58a44350b71efa2 100644 (file)
@@ -374,7 +374,7 @@ interface rap
                [out] uint16 convert,
                [out] uint16 count,
                [out] uint16 available,
-               [out,switch_is(level)] rap_server_info *info
+               [out,switch_is(level)] rap_server_info info[count]
        );
 
        [public] void rap_WserverGetInfo(
@@ -546,7 +546,7 @@ interface rap
                [case(5)] rap_PrintQueue5 info5;
        } rap_printq_info;
 
-       [public,noprint] void rap_NetPrintQEnum(
+       [public] void rap_NetPrintQEnum(
                [in] uint16 level,
                [in] uint16 bufsize,
                [out] uint16 status,
index a7bfb9f7506a82567dac71778da9adb284ebfcc8..f21e3675b68618e92b2f212d3f946d289a3c7f9b 100644 (file)
 #include "includes.h"
 #include "librpc/gen_ndr/ndr_rap.h"
 
-_PUBLIC_ void ndr_print_rap_NetPrintQEnum(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetPrintQEnum *r)
-{
-       uint32_t cntr_info_1;
-       ndr_print_struct(ndr, name, "rap_NetPrintQEnum");
-       ndr->depth++;
-       if (flags & NDR_SET_VALUES) {
-               ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-       }
-       if (flags & NDR_IN) {
-               ndr_print_struct(ndr, "in", "rap_NetPrintQEnum");
-               ndr->depth++;
-               ndr_print_uint16(ndr, "level", r->in.level);
-               ndr_print_uint16(ndr, "bufsize", r->in.bufsize);
-               ndr->depth--;
-       }
-       if (flags & NDR_OUT) {
-               ndr_print_struct(ndr, "out", "rap_NetPrintQEnum");
-               ndr->depth++;
-               ndr_print_WERROR(ndr, "status", W_ERROR(r->out.status));
-               ndr_print_uint16(ndr, "convert", r->out.convert);
-               ndr_print_uint16(ndr, "count", r->out.count);
-               ndr_print_uint16(ndr, "available", r->out.available);
-               ndr_print_ptr(ndr, "info", r->out.info);
-               ndr->depth++;
-               ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)r->out.count);
-               ndr->depth++;
-               for (cntr_info_1=0;cntr_info_1<r->out.count;cntr_info_1++) {
-                       char *idx_1=NULL;
-                       if (asprintf(&idx_1, "[%d]", cntr_info_1) != -1) {
-                               ndr_print_set_switch_value(ndr, &r->out.info[cntr_info_1], r->in.level);
-                               ndr_print_rap_printq_info(ndr, "info", &r->out.info[cntr_info_1]);
-                               free(idx_1);
-                       }
-               }
-               ndr->depth--;
-               ndr->depth--;
-               ndr->depth--;
-       }
-       ndr->depth--;
-}
index 3f395fdf60b782740e3d984eadfd78f1121e3a92..0a18e8cdb73e2ccfcac5f3a603a70b2f9fec4bbe 100644 (file)
@@ -19,4 +19,3 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-_PUBLIC_ void ndr_print_rap_NetPrintQEnum(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetPrintQEnum *r);