diff --git a/form/fld_arg.c b/form/fld_arg.c
index 001c1d1..2f6c477 100644
--- a/form/fld_arg.c
+++ b/form/fld_arg.c
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc.              *
+ * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 1998-2012,2016 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 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_arg.c,v 1.13 2012/06/10 00:27:49 tom Exp $")
+MODULE_ID("$Id: fld_arg.c,v 1.18 2020/12/11 22:05:24 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
@@ -60,14 +61,19 @@
 |   Return Values :  E_OK           - success
 |                    E_BAD_ARGUMENT - invalid argument
 +--------------------------------------------------------------------------*/
-NCURSES_EXPORT(int)
+FORM_EXPORT(int)
 set_fieldtype_arg(FIELDTYPE *typ,
 		  void *(*const make_arg)(va_list *),
 		  void *(*const copy_arg)(const void *),
 		  void (*const free_arg) (void *))
 {
-  T((T_CALLED("set_fieldtype_arg(%p,%p,%p,%p)"),
-     (void *)typ, make_arg, copy_arg, free_arg));
+  TR_FUNC_BFR(3);
+
+  T((T_CALLED("set_fieldtype_arg(%p,%s,%s,%s)"),
+     (void *)typ,
+     TR_FUNC_ARG(0, make_arg),
+     TR_FUNC_ARG(1, copy_arg),
+     TR_FUNC_ARG(2, free_arg)));
 
   if (typ != 0 && make_arg != (void *)0)
     {
@@ -84,11 +90,11 @@
 |   Facility      :  libnform
 |   Function      :  void *field_arg(const FIELD *field)
 |
-|   Description   :  Retrieve pointer to the fields argument structure.
+|   Description   :  Retrieve pointer to the field's argument structure.
 |
 |   Return Values :  Pointer to structure or NULL if none is defined.
 +--------------------------------------------------------------------------*/
-NCURSES_EXPORT(void *)
+FORM_EXPORT(void *)
 field_arg(const FIELD *field)
 {
   T((T_CALLED("field_arg(%p)"), (const void *)field));
