s3-util: Moved eventlog_add_source to admin util.
authorAndreas Schneider <asn@samba.org>
Thu, 27 Jan 2011 17:06:16 +0000 (18:06 +0100)
committerGünther Deschner <gd@samba.org>
Mon, 7 Feb 2011 11:32:00 +0000 (12:32 +0100)
This function is only used in the admin util.

Signed-off-by: Günther Deschner <gd@samba.org>
source3/registry/reg_eventlog.c
source3/registry/reg_eventlog.h
source3/utils/eventlogadm.c

index 6bedf4635ebdc536a2db80cae9693f56b1b5ed4a..74b3ed43b73676296fe85e70b12ccf49c51c6c04 100644 (file)
@@ -184,204 +184,3 @@ bool eventlog_init_keys(void)
 
        return true;
 }
-
-/*********************************************************************
- for an eventlog, add in a source name. If the eventlog doesn't
- exist (not in the list) do nothing.   If a source for the log
- already exists, change the information (remove, replace)
-*********************************************************************/
-
-bool eventlog_add_source( const char *eventlog, const char *sourcename,
-                         const char *messagefile )
-{
-       /* Find all of the eventlogs, add keys for each of them */
-       /* need to add to the value KEY_EVENTLOG/<eventlog>/Sources string (Creating if necessary)
-          need to add KEY of source to KEY_EVENTLOG/<eventlog>/<source> */
-
-       const char **elogs = lp_eventlog_list(  );
-       const char **wrklist, **wp;
-       char *evtlogpath = NULL;
-       struct regsubkey_ctr *subkeys;
-       struct regval_ctr *values;
-       struct regval_blob *rval;
-       int ii = 0;
-       bool already_in;
-       int i;
-       int numsources = 0;
-       TALLOC_CTX *ctx = talloc_tos();
-       WERROR werr;
-       DATA_BLOB blob;
-
-       if (!elogs) {
-               return False;
-       }
-
-       for ( i = 0; elogs[i]; i++ ) {
-               if ( strequal( elogs[i], eventlog ) )
-                       break;
-       }
-
-       if ( !elogs[i] ) {
-               DEBUG( 0,
-                      ( "Eventlog [%s] not found in list of valid event logs\n",
-                        eventlog ) );
-               return false;   /* invalid named passed in */
-       }
-
-       /* have to assume that the evenlog key itself exists at this point */
-       /* add in a key of [sourcename] under the eventlog key */
-
-       /* todo add to Sources */
-
-       werr = regval_ctr_init(ctx, &values);
-       if(!W_ERROR_IS_OK(werr)) {
-               DEBUG( 0, ( "talloc() failure!\n" ));
-               return false;
-       }
-
-       evtlogpath = talloc_asprintf(ctx, "%s\\%s", KEY_EVENTLOG, eventlog);
-       if (!evtlogpath) {
-               TALLOC_FREE(values);
-               return false;
-       }
-
-       regdb_fetch_values( evtlogpath, values );
-
-
-       if ( !( rval = regval_ctr_getvalue( values, "Sources" ) ) ) {
-               DEBUG( 0, ( "No Sources value for [%s]!\n", eventlog ) );
-               return False;
-       }
-       /* perhaps this adding a new string to a multi_sz should be a fn? */
-       /* check to see if it's there already */
-
-       if ( regval_type(rval) != REG_MULTI_SZ ) {
-               DEBUG( 0,
-                      ( "Wrong type for Sources, should be REG_MULTI_SZ\n" ) );
-               return False;
-       }
-       /* convert to a 'regulah' chars to do some comparisons */
-
-       already_in = False;
-       wrklist = NULL;
-       dump_data(1, regval_data_p(rval), regval_size(rval));
-
-       blob = data_blob_const(regval_data_p(rval), regval_size(rval));
-       if (!pull_reg_multi_sz(talloc_tos(), &blob, &wrklist)) {
-               return false;
-       }
-
-       for (ii=0; wrklist[ii]; ii++) {
-               numsources++;
-       }
-
-       if (numsources > 0) {
-               /* see if it's in there already */
-               wp = wrklist;
-
-               while (wp && *wp ) {
-                       if ( strequal( *wp, sourcename ) ) {
-                               DEBUG( 5,
-                                      ( "Source name [%s] already in list for [%s] \n",
-                                        sourcename, eventlog ) );
-                               already_in = True;
-                               break;
-                       }
-                       wp++;
-               }
-       } else {
-               DEBUG( 3,
-                      ( "Nothing in the sources list, this might be a problem\n" ) );
-       }
-
-       wp = wrklist;
-
-       if ( !already_in ) {
-               /* make a new list with an additional entry; copy values, add another */
-               wp = TALLOC_ARRAY(ctx, const char *, numsources + 2 );
-
-               if ( !wp ) {
-                       DEBUG( 0, ( "talloc() failed \n" ) );
-                       return False;
-               }
-               memcpy( wp, wrklist, sizeof( char * ) * numsources );
-               *( wp + numsources ) = ( char * ) sourcename;
-               *( wp + numsources + 1 ) = NULL;
-               if (!push_reg_multi_sz(ctx, &blob, wp)) {
-                       return false;
-               }
-               dump_data( 1, blob.data, blob.length);
-               regval_ctr_addvalue( values, "Sources", REG_MULTI_SZ,
-                                    blob.data, blob.length);
-               regdb_store_values( evtlogpath, values );
-               data_blob_free(&blob);
-       } else {
-               DEBUG( 3,
-                      ( "Source name [%s] found in existing list of sources\n",
-                        sourcename ) );
-       }
-       TALLOC_FREE(values);
-       TALLOC_FREE(wrklist);   /*  */
-
-       werr = regsubkey_ctr_init(ctx, &subkeys);
-       if (!W_ERROR_IS_OK(werr)) {
-               DEBUG( 0, ( "talloc() failure!\n" ) );
-               return False;
-       }
-       TALLOC_FREE(evtlogpath);
-       evtlogpath = talloc_asprintf(ctx, "%s\\%s", KEY_EVENTLOG, eventlog );
-       if (!evtlogpath) {
-               TALLOC_FREE(subkeys);
-               return false;
-       }
-
-       regdb_fetch_keys( evtlogpath, subkeys );
-
-       if ( !regsubkey_ctr_key_exists( subkeys, sourcename ) ) {
-               DEBUG( 5,
-                      ( " Source name [%s] for eventlog [%s] didn't exist, adding \n",
-                        sourcename, eventlog ) );
-               regsubkey_ctr_addkey( subkeys, sourcename );
-               if ( !regdb_store_keys( evtlogpath, subkeys ) )
-                       return False;
-       }
-       TALLOC_FREE(subkeys);
-
-       /* at this point KEY_EVENTLOG/<eventlog>/<sourcename> key is in there. Now need to add EventMessageFile */
-
-       /* now allocate room for the source's subkeys */
-
-       werr = regsubkey_ctr_init(ctx, &subkeys);
-       if (!W_ERROR_IS_OK(werr)) {
-               DEBUG( 0, ( "talloc() failure!\n" ) );
-               return False;
-       }
-       TALLOC_FREE(evtlogpath);
-       evtlogpath = talloc_asprintf(ctx, "%s\\%s\\%s",
-                 KEY_EVENTLOG, eventlog, sourcename);
-       if (!evtlogpath) {
-               TALLOC_FREE(subkeys);
-               return false;
-       }
-
-       regdb_fetch_keys( evtlogpath, subkeys );
-
-       /* now add the values to the KEY_EVENTLOG/Application form key */
-       werr = regval_ctr_init(ctx, &values);
-       if (!W_ERROR_IS_OK(werr)) {
-               DEBUG( 0, ( "talloc() failure!\n" ) );
-               return False;
-       }
-       DEBUG( 5,
-              ( "Storing EventMessageFile [%s] to eventlog path of [%s]\n",
-                messagefile, evtlogpath ) );
-
-       regdb_fetch_values( evtlogpath, values );
-
-       regval_ctr_addvalue_sz(values, "EventMessageFile", messagefile);
-       regdb_store_values( evtlogpath, values );
-
-       TALLOC_FREE(values);
-
-       return True;
-}
index 69f2f99aad7c964d2476911988b5d51d3866fdb7..d4e13c73ee0856827bf6023369b4ccd888006930 100644 (file)
@@ -23,7 +23,5 @@
 #define _REG_EVENTLOG_H
 
 bool eventlog_init_keys(void);
-bool eventlog_add_source( const char *eventlog, const char *sourcename,
-                         const char *messagefile );
 
 #endif /* _REG_EVENTLOG_H */
index 15b8d207a2aa5ad951857697f9ac11b87365f693..fc69332d315956e79c3a51918d8c7ac2fe6fefda 100644 (file)
 #include "lib/eventlog/eventlog.h"
 #include "registry.h"
 #include "registry/reg_backend_db.h"
-#include "registry/reg_eventlog.h"
-
-#undef  DBGC_CLASS
-#define DBGC_CLASS DBGC_UTIL_EVENTLOG
-
+#include "registry/reg_objects.h"
 
 extern int optind;
 extern char *optarg;
@@ -66,6 +62,199 @@ static void display_eventlog_names( void )
                printf( "\t<None specified>\n");
 }
 
+/*********************************************************************
+ for an eventlog, add in a source name. If the eventlog doesn't
+ exist (not in the list) do nothing.   If a source for the log
+ already exists, change the information (remove, replace)
+*********************************************************************/
+static bool eventlog_add_source( const char *eventlog, const char *sourcename,
+                                const char *messagefile )
+{
+       /* Find all of the eventlogs, add keys for each of them */
+       /* need to add to the value KEY_EVENTLOG/<eventlog>/Sources string (Creating if necessary)
+          need to add KEY of source to KEY_EVENTLOG/<eventlog>/<source> */
+
+       const char **elogs = lp_eventlog_list(  );
+       const char **wrklist, **wp;
+       char *evtlogpath = NULL;
+       struct regsubkey_ctr *subkeys;
+       struct regval_ctr *values;
+       struct regval_blob *rval;
+       int ii = 0;
+       bool already_in;
+       int i;
+       int numsources = 0;
+       TALLOC_CTX *ctx = talloc_tos();
+       WERROR werr;
+       DATA_BLOB blob;
+
+       if (!elogs) {
+               return False;
+       }
+
+       for ( i = 0; elogs[i]; i++ ) {
+               if ( strequal( elogs[i], eventlog ) )
+                       break;
+       }
+
+       if ( !elogs[i] ) {
+               d_printf("Eventlog [%s] not found in list of valid event logs\n",
+                        eventlog);
+               return false;   /* invalid named passed in */
+       }
+
+       /* have to assume that the evenlog key itself exists at this point */
+       /* add in a key of [sourcename] under the eventlog key */
+
+       /* todo add to Sources */
+
+       werr = regval_ctr_init(ctx, &values);
+       if(!W_ERROR_IS_OK(werr)) {
+               d_printf("talloc() failure!\n");
+               return false;
+       }
+
+       evtlogpath = talloc_asprintf(ctx, "%s\\%s", KEY_EVENTLOG, eventlog);
+       if (!evtlogpath) {
+               TALLOC_FREE(values);
+               return false;
+       }
+
+       regdb_fetch_values( evtlogpath, values );
+
+
+       if ( !( rval = regval_ctr_getvalue( values, "Sources" ) ) ) {
+               d_printf("No Sources value for [%s]!\n", eventlog);
+               return False;
+       }
+       /* perhaps this adding a new string to a multi_sz should be a fn? */
+       /* check to see if it's there already */
+
+       if ( regval_type(rval) != REG_MULTI_SZ ) {
+               d_printf("Wrong type for Sources, should be REG_MULTI_SZ\n");
+               return False;
+       }
+       /* convert to a 'regulah' chars to do some comparisons */
+
+       already_in = False;
+       wrklist = NULL;
+       dump_data(1, regval_data_p(rval), regval_size(rval));
+
+       blob = data_blob_const(regval_data_p(rval), regval_size(rval));
+       if (!pull_reg_multi_sz(talloc_tos(), &blob, &wrklist)) {
+               return false;
+       }
+
+       for (ii=0; wrklist[ii]; ii++) {
+               numsources++;
+       }
+
+       if (numsources > 0) {
+               /* see if it's in there already */
+               wp = wrklist;
+
+               while (wp && *wp ) {
+                       if ( strequal( *wp, sourcename ) ) {
+                               d_printf("Source name [%s] already in list for [%s] \n",
+                                        sourcename, eventlog);
+                               already_in = True;
+                               break;
+                       }
+                       wp++;
+               }
+       } else {
+               d_printf("Nothing in the sources list, this might be a problem\n");
+       }
+
+       wp = wrklist;
+
+       if ( !already_in ) {
+               /* make a new list with an additional entry; copy values, add another */
+               wp = TALLOC_ARRAY(ctx, const char *, numsources + 2 );
+
+               if ( !wp ) {
+                       d_printf("talloc() failed \n");
+                       return False;
+               }
+               memcpy( wp, wrklist, sizeof( char * ) * numsources );
+               *( wp + numsources ) = ( char * ) sourcename;
+               *( wp + numsources + 1 ) = NULL;
+               if (!push_reg_multi_sz(ctx, &blob, wp)) {
+                       return false;
+               }
+               dump_data( 1, blob.data, blob.length);
+               regval_ctr_addvalue( values, "Sources", REG_MULTI_SZ,
+                                    blob.data, blob.length);
+               regdb_store_values( evtlogpath, values );
+               data_blob_free(&blob);
+       } else {
+               d_printf("Source name [%s] found in existing list of sources\n",
+                        sourcename);
+       }
+       TALLOC_FREE(values);
+       TALLOC_FREE(wrklist);   /*  */
+
+       werr = regsubkey_ctr_init(ctx, &subkeys);
+       if (!W_ERROR_IS_OK(werr)) {
+               d_printf("talloc() failure!\n");
+               return False;
+       }
+       TALLOC_FREE(evtlogpath);
+       evtlogpath = talloc_asprintf(ctx, "%s\\%s", KEY_EVENTLOG, eventlog );
+       if (!evtlogpath) {
+               TALLOC_FREE(subkeys);
+               return false;
+       }
+
+       regdb_fetch_keys( evtlogpath, subkeys );
+
+       if ( !regsubkey_ctr_key_exists( subkeys, sourcename ) ) {
+               d_printf(" Source name [%s] for eventlog [%s] didn't exist, adding \n",
+                        sourcename, eventlog);
+               regsubkey_ctr_addkey( subkeys, sourcename );
+               if ( !regdb_store_keys( evtlogpath, subkeys ) )
+                       return False;
+       }
+       TALLOC_FREE(subkeys);
+
+       /* at this point KEY_EVENTLOG/<eventlog>/<sourcename> key is in there. Now need to add EventMessageFile */
+
+       /* now allocate room for the source's subkeys */
+
+       werr = regsubkey_ctr_init(ctx, &subkeys);
+       if (!W_ERROR_IS_OK(werr)) {
+               d_printf("talloc() failure!\n");
+               return False;
+       }
+       TALLOC_FREE(evtlogpath);
+       evtlogpath = talloc_asprintf(ctx, "%s\\%s\\%s",
+                 KEY_EVENTLOG, eventlog, sourcename);
+       if (!evtlogpath) {
+               TALLOC_FREE(subkeys);
+               return false;
+       }
+
+       regdb_fetch_keys( evtlogpath, subkeys );
+
+       /* now add the values to the KEY_EVENTLOG/Application form key */
+       werr = regval_ctr_init(ctx, &values);
+       if (!W_ERROR_IS_OK(werr)) {
+               d_printf("talloc() failure!\n");
+               return False;
+       }
+       d_printf("Storing EventMessageFile [%s] to eventlog path of [%s]\n",
+                messagefile, evtlogpath);
+
+       regdb_fetch_values( evtlogpath, values );
+
+       regval_ctr_addvalue_sz(values, "EventMessageFile", messagefile);
+       regdb_store_values( evtlogpath, values );
+
+       TALLOC_FREE(values);
+
+       return True;
+}
+
 static int DoAddSourceCommand( int argc, char **argv, bool debugflag, char *exename )
 {