diff --git a/form/frm_opts.c b/form/frm_opts.c
index d36d618..42d6267 100644
--- a/form/frm_opts.c
+++ b/form/frm_opts.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_opts.c,v 1.14 2005/04/16 16:59:18 tom Exp $")
+MODULE_ID("$Id: frm_opts.c,v 1.17 2013/08/24 22:58:47 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -47,10 +47,10 @@
 NCURSES_EXPORT(int)
 set_form_opts(FORM *form, Form_Options opts)
 {
-  T((T_CALLED("set_form_opts(%p,%d)"), form, opts));
+  T((T_CALLED("set_form_opts(%p,%d)"), (void *)form, opts));
 
-  opts &= ALL_FORM_OPTS;
-  if (opts & ~ALL_FORM_OPTS)
+  opts &= (Form_Options) ALL_FORM_OPTS;
+  if ((unsigned)opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
     {
@@ -70,8 +70,8 @@
 NCURSES_EXPORT(Form_Options)
 form_opts(const FORM *form)
 {
-  T((T_CALLED("form_opts(%p)"), form));
-  returnCode((int)(Normalize_Form(form)->opts & ALL_FORM_OPTS));
+  T((T_CALLED("form_opts(%p)"), (const void *)form));
+  returnCode((Form_Options) ((unsigned)Normalize_Form(form)->opts & ALL_FORM_OPTS));
 }
 
 /*---------------------------------------------------------------------------
@@ -87,10 +87,10 @@
 NCURSES_EXPORT(int)
 form_opts_on(FORM *form, Form_Options opts)
 {
-  T((T_CALLED("form_opts_on(%p,%d)"), form, opts));
+  T((T_CALLED("form_opts_on(%p,%d)"), (void *)form, opts));
 
-  opts &= ALL_FORM_OPTS;
-  if (opts & ~ALL_FORM_OPTS)
+  opts &= (Form_Options) ALL_FORM_OPTS;
+  if ((unsigned)opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
     {
@@ -112,10 +112,10 @@
 NCURSES_EXPORT(int)
 form_opts_off(FORM *form, Form_Options opts)
 {
-  T((T_CALLED("form_opts_off(%p,%d)"), form, opts));
+  T((T_CALLED("form_opts_off(%p,%d)"), (void *)form, opts));
 
-  opts &= ALL_FORM_OPTS;
-  if (opts & ~ALL_FORM_OPTS)
+  opts &= (Form_Options) ALL_FORM_OPTS;
+  if ((unsigned)opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
     {
