aboutsummaryrefslogtreecommitdiff
path: root/test/cardfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/cardfile.c')
-rw-r--r--test/cardfile.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/test/cardfile.c b/test/cardfile.c
index b75024143c6e..a782342e226b 100644
--- a/test/cardfile.c
+++ b/test/cardfile.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2017,2019 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 *
@@ -29,7 +29,7 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: cardfile.c,v 1.42 2013/09/28 22:02:17 tom Exp $
+ * $Id: cardfile.c,v 1.46 2019/08/17 21:49:40 tom Exp $
*
* File format: text beginning in column 1 is a title; other text is content.
*/
@@ -125,15 +125,19 @@ add_title(const char *title)
static void
add_content(CARD * card, const char *content)
{
- size_t total, offset;
+ size_t total;
content = skip(content);
if ((total = strlen(content)) != 0) {
+ size_t offset;
+
if (card->content != 0 && (offset = strlen(card->content)) != 0) {
total += 1 + offset;
card->content = typeRealloc(char, total + 1, card->content);
- if (card->content)
- strcpy(card->content + offset++, " ");
+ if (card->content) {
+ _nc_STRCPY(card->content + offset, " ", total + 1 - offset);
+ offset++;
+ }
} else {
offset = 0;
if (card->content != 0)
@@ -141,7 +145,7 @@ add_content(CARD * card, const char *content)
card->content = typeMalloc(char, total + 1);
}
if (card->content)
- strcpy(card->content + offset, content);
+ _nc_STRCPY(card->content + offset, content, total + 1 - offset);
else
failed("add_content");
}
@@ -171,10 +175,11 @@ static void
read_data(char *fname)
{
FILE *fp;
- CARD *card = 0;
- char buffer[BUFSIZ];
if ((fp = fopen(fname, "r")) != 0) {
+ CARD *card = 0;
+ char buffer[BUFSIZ];
+
while (fgets(buffer, sizeof(buffer), fp)) {
trim(buffer);
if (isspace(UChar(*buffer))) {
@@ -195,15 +200,17 @@ static void
write_data(const char *fname)
{
FILE *fp;
- CARD *p = 0;
- int n;
if (!strcmp(fname, default_name))
fname = "cardfile.out";
if ((fp = fopen(fname, "w")) != 0) {
+ CARD *p = 0;
+
for (p = all_cards; p != 0; p = p->link) {
FIELD **f = form_fields(p->form);
+ int n;
+
for (n = 0; f[n] != 0; n++) {
char *s = field_buffer(f[n], 0);
if (s != 0
@@ -363,7 +370,7 @@ show_legend(void)
#if (defined(KEY_RESIZE) && HAVE_WRESIZE) || NO_LEAKS
static void
-free_form_fields(FIELD ** f)
+free_form_fields(FIELD **f)
{
int n;
@@ -389,7 +396,6 @@ cardfile(char *fname)
int form_high;
int y;
int x;
- int ch = ERR;
int finished = FALSE;
show_legend();
@@ -430,6 +436,8 @@ cardfile(char *fname)
order_cards(top_card, visible_cards);
while (!finished) {
+ int ch = ERR;
+
update_panels();
doupdate();
@@ -520,13 +528,11 @@ cardfile(char *fname)
}
#if NO_LEAKS
while (all_cards != 0) {
- FIELD **f;
-
p = all_cards;
all_cards = all_cards->link;
if (isVisible(p)) {
- f = form_fields(p->form);
+ FIELD **f = form_fields(p->form);
unpost_form(p->form); /* ...so we can free it */
free_form(p->form); /* this also disconnects the fields */
@@ -547,7 +553,7 @@ usage(void)
{
static const char *msg[] =
{
- "Usage: view [options] file"
+ "Usage: cardfile [options] file"
,""
,"Options:"
," -c use color if terminal supports it"