X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffld_ftlink.c;h=ed16920078bb1653f5ceaea393609d95c4ccce49;hp=1c30cab244a4afa176c3520304ae11304d4ed1c0;hb=81304798ee736c467839c779c9ca5dca48db7bea;hpb=0eb88fc5281804773e2a0c7a488a4452463535ce diff --git a/form/fld_ftlink.c b/form/fld_ftlink.c index 1c30cab2..ed169200 100644 --- a/form/fld_ftlink.c +++ b/form/fld_ftlink.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998 Free Software Foundation, Inc. * + * Copyright 2020,2021 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 * @@ -27,57 +28,61 @@ ****************************************************************************/ /**************************************************************************** - * Author: Juergen Pfeifer 1995,1997 * + * Author: Juergen Pfeifer, 1995,1997 * ****************************************************************************/ #include "form.priv.h" -MODULE_ID("$Id: fld_ftlink.c,v 1.4 1999/05/16 17:17:33 juergen Exp $") +MODULE_ID("$Id: fld_ftlink.c,v 1.18 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : FIELDTYPE *link_fieldtype( | FIELDTYPE *type1, | FIELDTYPE *type2) -| +| | Description : Create a new fieldtype built from the two given types. | They are connected by an logical 'OR'. -| If an error occurs, errno is set to +| If an error occurs, errno is set to | E_BAD_ARGUMENT - invalid arguments | E_SYSTEM_ERROR - system error (no memory) | -| Return Values : Fieldtype pointer or NULL if error occured. +| Return Values : Fieldtype pointer or NULL if error occurred. +--------------------------------------------------------------------------*/ -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 */