Revert most of previous:

- props being NULL is NOT an error and is a condition that all modules
  must be prepared to handle
- having this module bomb out for spurious reasons makes this module
  difficult to use for testing things
- keep comment update
- keep some KNF
- add a notice for the case when props is NULL
This commit is contained in:
jnemeth 2010-10-25 22:41:42 +00:00
parent 5d63576039
commit 6e39448e16
1 changed files with 23 additions and 29 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: example.c,v 1.6 2010/06/22 18:30:20 rmind Exp $ */
/* $NetBSD: example.c,v 1.7 2010/10/25 22:41:42 jnemeth Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: example.c,v 1.6 2010/06/22 18:30:20 rmind Exp $");
__KERNEL_RCSID(0, "$NetBSD: example.c,v 1.7 2010/10/25 22:41:42 jnemeth Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@ -41,59 +41,53 @@ __KERNEL_RCSID(0, "$NetBSD: example.c,v 1.6 2010/06/22 18:30:20 rmind Exp $");
MODULE(MODULE_CLASS_MISC, example, NULL);
static int
static
void
handle_props(prop_dictionary_t props)
{
const char *msg;
prop_string_t str;
if (props == NULL)
return EINVAL;
str = prop_dictionary_get(props, "msg");
if (str == NULL) {
printf("The 'msg' property was not given.\n");
return EINVAL;
}
if (prop_object_type(str) != PROP_TYPE_STRING) {
printf("The 'msg' property is not a string.\n");
return EINVAL;
}
msg = prop_string_cstring_nocopy(str);
if (msg == NULL) {
printf("Failed to process the 'msg' property.\n");
if (props != NULL) {
str = prop_dictionary_get(props, "msg");
} else {
printf("The 'msg' property is: %s\n", msg);
printf("No property dictionary was provided.\n");
str = NULL;
}
if (str == NULL)
printf("The 'msg' property was not given.\n");
else if (prop_object_type(str) != PROP_TYPE_STRING)
printf("The 'msg' property is not a string.\n");
else {
msg = prop_string_cstring_nocopy(str);
if (msg == NULL)
printf("Failed to process the 'msg' property.\n");
else
printf("The 'msg' property is: %s\n", msg);
}
return 0;
}
static int
example_modcmd(modcmd_t cmd, void *arg)
{
int error;
switch (cmd) {
case MODULE_CMD_INIT:
printf("Example module loaded.\n");
error = handle_props(arg);
handle_props(arg);
break;
case MODULE_CMD_FINI:
printf("Example module unloaded.\n");
error = 0;
break;
case MODULE_CMD_STAT:
printf("Example module status queried.\n");
error = ENOTTY;
break;
return ENOTTY;
default:
error = ENOTTY;
return ENOTTY;
}
return error;
return 0;
}