From 7e42174792298c8815acd1ebf34c357aff0de7c3 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 1 Dec 1999 00:52:22 +0000 Subject: split display.c into modules. (This used to be commit 5b5719d6a08130db1062bfa24123cedcdc692bff) --- source3/rpcclient/display_reg.c | 168 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 source3/rpcclient/display_reg.c (limited to 'source3/rpcclient/display_reg.c') diff --git a/source3/rpcclient/display_reg.c b/source3/rpcclient/display_reg.c new file mode 100644 index 0000000000..d832d1bffb --- /dev/null +++ b/source3/rpcclient/display_reg.c @@ -0,0 +1,168 @@ +/* + Unix SMB/Netbios implementation. + Version 1.9. + Samba utility functions + Copyright (C) Andrew Tridgell 1992-1999 + Copyright (C) Luke Kenneth Casson Leighton 1996 - 1999 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" + + +/**************************************************************************** +convert a security permissions into a string +****************************************************************************/ +char *get_reg_val_type_str(uint32 type) +{ + static fstring typestr; + + switch (type) + { + case 0x01: + { + fstrcpy(typestr, "string"); + return typestr; + } + + case 0x03: + { + fstrcpy(typestr, "bytes"); + return typestr; + } + + case 0x04: + { + fstrcpy(typestr, "uint32"); + return typestr; + } + + case 0x07: + { + fstrcpy(typestr, "multi"); + return typestr; + } + default: + { + break; + } + } + slprintf(typestr, sizeof(typestr)-1, "[%d]", type); + return typestr; +} + + +static void print_reg_value(FILE *out_hnd, const char *val_name, + uint32 val_type, const BUFFER2 *value) +{ + fstring type; + fstring valstr; + + fstrcpy(type, get_reg_val_type_str(val_type)); + + switch (val_type) + { + case 0x01: /* unistr */ + { + unibuf_to_ascii(valstr, value->buffer, + MIN(value->buf_len, sizeof(valstr)-1)); + report(out_hnd, "\t%s:\t%s:\t%s\n", val_name, type, valstr); + break; + } + + default: /* unknown */ + case 0x03: /* bytes */ + { + if (value->buf_len <= 8) + { + report(out_hnd, "\t%s:\t%s:\t", val_name, type); + out_data(out_hnd, (const char*)value->buffer, + value->buf_len, 8); + } + else + { + report(out_hnd, "\t%s:\t%s:\n", val_name, type); + out_data(out_hnd, (const char*)value->buffer, + value->buf_len, 16); + } + break; + } + + case 0x04: /* uint32 */ + { + report(out_hnd, "\t%s:\t%s:\t0x%08x\n", val_name, type, buffer2_to_uint32(value)); + break; + } + + case 0x07: /* multiunistr */ + { + buffer2_to_multistr(valstr, value, sizeof(valstr)-1); + report(out_hnd, "\t%s:\t%s:\t%s\n", val_name, type, valstr); + break; + } + } +} + +/**************************************************************************** + display structure + ****************************************************************************/ +void display_reg_value_info(FILE *out_hnd, enum action_type action, + const char *val_name, + uint32 val_type, const BUFFER2 *value) +{ + switch (action) + { + case ACTION_HEADER: + { + break; + } + case ACTION_ENUMERATE: + { + print_reg_value(out_hnd, val_name, val_type, value); + break; + } + case ACTION_FOOTER: + { + break; + } + } +} + +/**************************************************************************** + display structure + ****************************************************************************/ +void display_reg_key_info(FILE *out_hnd, enum action_type action, + const char *key_name, time_t key_mod_time) +{ + switch (action) + { + case ACTION_HEADER: + { + break; + } + case ACTION_ENUMERATE: + { + report(out_hnd, "\t%s\t(%s)\n", + key_name, http_timestring(key_mod_time)); + break; + } + case ACTION_FOOTER: + { + break; + } + } +} + -- cgit