rpcclient: Fix and enhance rpcclient output
authorRobin Hack <hack.robin@gmail.com>
Fri, 30 Jan 2015 12:18:20 +0000 (13:18 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Tue, 17 Feb 2015 14:41:10 +0000 (15:41 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11085

When rpcclient is called like:
$ rpcclient -c "getdata . Osversion"
at end of output is added one nonsense line
OsVersion: Osversion:

This patch removes this line and adds more human friendly ouput:
OsMajor: num
OsMinor: num
OsBuild: num

for OsVersion query.

For OsVersionEx two more lines are added:
OsMajor: num
OsMinor: num
OsBuild: num
ServicePackMajor: num
ServicePackMinor: num

Signed-off-by: Robin Hack <hack.robin@gmail.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
source3/rpcclient/cmd_spoolss.c

index c2b1e3d5e403ad3b5dbd94a99c04b6c995abc631..e2b9fc466861ee1b7106bf9bd33c9ba59279b77b 100644 (file)
@@ -863,13 +863,17 @@ static void display_printer_data(const char *v,
                }
                TALLOC_FREE(hex);
                putchar('\n');
+               putchar('\n');
 
                if (strequal(v, "OsVersion")) {
                        struct spoolss_OSVersion os;
                        ndr_err = ndr_pull_struct_blob(&blob, talloc_tos(), &os,
                                (ndr_pull_flags_fn_t)ndr_pull_spoolss_OSVersion);
                        if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-                               printf("%s: OsVersion:\n", v);
+                               // add output here;
+                               printf("OsMajor: %u\n", os.major);
+                               printf("OsMinor: %u\n", os.minor);
+                               printf("OsBuild: %u\n", os.build);
                                NDR_PRINT_DEBUG(spoolss_OSVersion, &os);
                        }
                }
@@ -878,7 +882,11 @@ static void display_printer_data(const char *v,
                        ndr_err = ndr_pull_struct_blob(&blob, talloc_tos(), &os,
                                (ndr_pull_flags_fn_t)ndr_pull_spoolss_OSVersionEx);
                        if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-                               printf("%s: OsVersionEx:\n", v);
+                               printf("OsMajor: %u\n", os.major);
+                               printf("OsMinor: %u\n", os.minor);
+                               printf("OsBuild: %u\n", os.build);
+                               printf("ServicePackMajor: %u\n", os.service_pack_major);
+                               printf("ServicePackMinor: %u\n", os.service_pack_minor);
                                NDR_PRINT_DEBUG(spoolss_OSVersionEx, &os);
                        }
                }