/****************************************************************************
- * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. *
+ * Copyright 2020 Thomas E. Dickey *
+ * Copyright 1998-2010,2012 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 *
#include "form.priv.h"
-MODULE_ID("$Id: fld_ftlink.c,v 1.8 2003/11/08 20:45:36 tom Exp $")
+MODULE_ID("$Id: fld_ftlink.c,v 1.17 2020/05/24 01:40:20 anonymous.maarten Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
|
| Return Values : Fieldtype pointer or NULL if error occurred.
+--------------------------------------------------------------------------*/
-NCURSES_EXPORT(FIELDTYPE *)
-link_fieldtype
-(FIELDTYPE * type1, FIELDTYPE * type2)
+FORM_EXPORT(FIELDTYPE *)
+link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2)
{
FIELDTYPE *nftyp = (FIELDTYPE *)0;
- if ( type1 && type2 )
+ T((T_CALLED("link_fieldtype(%p,%p)"), (void *)type1, (void *)type2));
+ if (type1 && type2)
{
- nftyp = (FIELDTYPE *)malloc(sizeof(FIELDTYPE));
+ nftyp = typeMalloc(FIELDTYPE, 1);
+
if (nftyp)
{
+ T((T_CREATE("fieldtype %p"), (void *)nftyp));
*nftyp = *_nc_Default_FieldType;
- nftyp->status |= _LINKED_TYPE;
- if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS) )
- nftyp->status |= _HAS_ARGS;
- if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE) )
- nftyp->status |= _HAS_CHOICE;
- nftyp->left = type1;
- nftyp->right = type2;
+ SetStatus(nftyp, _LINKED_TYPE);
+ if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS))
+ SetStatus(nftyp, _HAS_ARGS);
+ if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE))
+ SetStatus(nftyp, _HAS_CHOICE);
+ nftyp->left = type1;
+ nftyp->right = type2;
type1->ref++;
type2->ref++;
}
else
{
- SET_ERROR( E_SYSTEM_ERROR );
+ SET_ERROR(E_SYSTEM_ERROR);
}
}
else
{
- SET_ERROR( E_BAD_ARGUMENT );
+ SET_ERROR(E_BAD_ARGUMENT);
}
- return nftyp;
+ returnFieldType(nftyp);
}
/* fld_ftlink.c ends here */