Author: vlendec Date: 2005-08-07 21:23:38 +0000 (Sun, 07 Aug 2005) New Revision: 9200
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9200 Log: Add support for REG_BINARY to rpcclient getdata and setprinterdata. Volker Modified: branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c trunk/source/rpcclient/cmd_spoolss.c Changeset: Modified: branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c =================================================================== --- branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c 2005-08-07 21:10:32 UTC (rev 9199) +++ branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c 2005-08-07 21:23:38 UTC (rev 9200) @@ -690,10 +690,24 @@ STR_TERMINATE); printf("%s: REG_SZ: %s\n", value.valuename, text); break; - case REG_BINARY: - printf("%s: REG_BINARY: unknown length value not displayed\n", - value.valuename); + case REG_BINARY: { + char *hex = hex_encode(NULL, value.data_p, value.size); + size_t i, len; + printf("%s: REG_BINARY:", value.valuename); + len = strlen(hex); + for (i=0; i<len; i++) { + if (hex[i] == '\0') { + break; + } + if (i%40 == 0) { + putchar('\n'); + } + putchar(hex[i]); + } + talloc_free(hex); + putchar('\n'); break; + } case REG_MULTI_SZ: { uint16 *curstr = (uint16 *) value.data_p; uint8 *start = value.data_p; @@ -1955,7 +1969,7 @@ /* parse the command arguements */ if (argc < 5) { - printf ("Usage: %s <printer> <string|dword|multistring>" + printf ("Usage: %s <printer> <string|binary|dword|multistring>" " <value> <data>\n", argv[0]); return WERR_INVALID_PARAM; @@ -1972,11 +1986,9 @@ value.type = REG_SZ; } -#if 0 if (strequal(argv[2], "binary")) { value.type = REG_BINARY; } -#endif if (strequal(argv[2], "dword")) { value.type = REG_DWORD; @@ -2028,6 +2040,12 @@ value.data_p = TALLOC_MEMDUP(mem_ctx, &data, sizeof(data)); break; } + case REG_BINARY: { + DATA_BLOB data = strhex_to_data_blob(mem_ctx, argv[4]); + value.data_p = data.data; + value.size = data.length; + break; + } case REG_MULTI_SZ: { int i; size_t len = 0; Modified: trunk/source/rpcclient/cmd_spoolss.c =================================================================== --- trunk/source/rpcclient/cmd_spoolss.c 2005-08-07 21:10:32 UTC (rev 9199) +++ trunk/source/rpcclient/cmd_spoolss.c 2005-08-07 21:23:38 UTC (rev 9200) @@ -690,10 +690,24 @@ STR_TERMINATE); printf("%s: REG_SZ: %s\n", value.valuename, text); break; - case REG_BINARY: - printf("%s: REG_BINARY: unknown length value not displayed\n", - value.valuename); + case REG_BINARY: { + char *hex = hex_encode(NULL, value.data_p, value.size); + size_t i, len; + printf("%s: REG_BINARY:", value.valuename); + len = strlen(hex); + for (i=0; i<len; i++) { + if (hex[i] == '\0') { + break; + } + if (i%40 == 0) { + putchar('\n'); + } + putchar(hex[i]); + } + talloc_free(hex); + putchar('\n'); break; + } case REG_MULTI_SZ: { uint16 *curstr = (uint16 *) value.data_p; uint8 *start = value.data_p; @@ -1955,7 +1969,7 @@ /* parse the command arguements */ if (argc < 5) { - printf ("Usage: %s <printer> <string|dword|multistring>" + printf ("Usage: %s <printer> <string|binary|dword|multistring>" " <value> <data>\n", argv[0]); return WERR_INVALID_PARAM; @@ -1972,11 +1986,9 @@ value.type = REG_SZ; } -#if 0 if (strequal(argv[2], "binary")) { value.type = REG_BINARY; } -#endif if (strequal(argv[2], "dword")) { value.type = REG_DWORD; @@ -2028,6 +2040,12 @@ value.data_p = TALLOC_MEMDUP(mem_ctx, &data, sizeof(data)); break; } + case REG_BINARY: { + DATA_BLOB data = strhex_to_data_blob(mem_ctx, argv[4]); + value.data_p = data.data; + value.size = data.length; + break; + } case REG_MULTI_SZ: { int i; size_t len = 0;
