summaryrefslogtreecommitdiffstats
path: root/contrib/ncurses/form/fld_dup.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ncurses/form/fld_dup.c')
-rw-r--r--contrib/ncurses/form/fld_dup.c68
1 files changed, 35 insertions, 33 deletions
diff --git a/contrib/ncurses/form/fld_dup.c b/contrib/ncurses/form/fld_dup.c
index 4aed772..2ffcd36 100644
--- a/contrib/ncurses/form/fld_dup.c
+++ b/contrib/ncurses/form/fld_dup.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 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,72 +27,74 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_dup.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_dup.c,v 1.10 2004/12/25 22:24:10 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : FIELD *dup_field(FIELD *field, int frow, int fcol)
-|
+|
| Description : Duplicates the field at the specified position. All
| field attributes and the buffers are copied.
| If an error occurs, errno is set to
-|
+|
| E_BAD_ARGUMENT - invalid argument
| E_SYSTEM_ERROR - system error
|
| Return Values : Pointer to the new field or NULL if failure
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELD *)
-dup_field (FIELD * field, int frow, int fcol)
+dup_field(FIELD *field, int frow, int fcol)
{
FIELD *New_Field = (FIELD *)0;
int err = E_BAD_ARGUMENT;
- if (field && (frow>=0) && (fcol>=0) &&
- ((err=E_SYSTEM_ERROR) != 0) && /* trick : this resets the default error */
- (New_Field=(FIELD *)malloc(sizeof(FIELD))) )
+ T((T_CALLED("dup_field(%p,%d,%d)"), field, frow, fcol));
+ if (field && (frow >= 0) && (fcol >= 0) &&
+ ((err = E_SYSTEM_ERROR) != 0) && /* trick : this resets the default error */
+ (New_Field = (FIELD *)malloc(sizeof(FIELD))))
{
- *New_Field = *_nc_Default_Field;
- New_Field->frow = frow;
- New_Field->fcol = fcol;
- New_Field->link = New_Field;
- New_Field->rows = field->rows;
- New_Field->cols = field->cols;
- New_Field->nrow = field->nrow;
- New_Field->drows = field->drows;
- New_Field->dcols = field->dcols;
+ *New_Field = *_nc_Default_Field;
+ New_Field->frow = frow;
+ New_Field->fcol = fcol;
+ New_Field->link = New_Field;
+ New_Field->rows = field->rows;
+ New_Field->cols = field->cols;
+ New_Field->nrow = field->nrow;
+ New_Field->drows = field->drows;
+ New_Field->dcols = field->dcols;
New_Field->maxgrow = field->maxgrow;
- New_Field->nbuf = field->nbuf;
- New_Field->just = field->just;
- New_Field->fore = field->fore;
- New_Field->back = field->back;
- New_Field->pad = field->pad;
- New_Field->opts = field->opts;
- New_Field->usrptr = field->usrptr;
+ New_Field->nbuf = field->nbuf;
+ New_Field->just = field->just;
+ New_Field->fore = field->fore;
+ New_Field->back = field->back;
+ New_Field->pad = field->pad;
+ New_Field->opts = field->opts;
+ New_Field->usrptr = field->usrptr;
- if (_nc_Copy_Type(New_Field,field))
+ if (_nc_Copy_Type(New_Field, field))
{
- size_t len;
+ size_t i, len;
len = Total_Buffer_Size(New_Field);
- if ( (New_Field->buf=(char *)malloc(len)) )
+ if ((New_Field->buf = (FIELD_CELL *)malloc(len)))
{
- memcpy(New_Field->buf,field->buf,len);
- return New_Field;
+ for (i = 0; i < len; ++i)
+ New_Field->buf[i] = field->buf[i];
+ returnField(New_Field);
}
}
}
- if (New_Field)
+ if (New_Field)
free_field(New_Field);
SET_ERROR(err);
- return (FIELD *)0;
+ returnField((FIELD *)0);
}
/* fld_dup.c ends here */
OpenPOWER on IntegriCloud