You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
#include <config.h>
#include "repeat.h"
#include "command.h"
#include "dictionary.h"
#include "error.h"
-#include "getline.h"
+#include "getl.h"
#include "lexer.h"
#include "misc.h"
#include "settings.h"
#include "str.h"
#include "var.h"
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
#include "debug-print.h"
/* Describes one DO REPEAT macro. */
struct repeat_entry
{
int type; /* 1=variable names, 0=any other. */
- char id[SHORT_NAME_LEN + 1]; /* Macro identifier. */
+ char id[LONG_NAME_LEN + 1]; /* Macro identifier. */
char **replacement; /* Macro replacement. */
struct repeat_entry *next;
};
internal_cmd_do_repeat (void)
{
/* Name of first DO REPEAT macro. */
- char first_name[SHORT_NAME_LEN + 1];
+ char first_name[LONG_NAME_LEN + 1];
/* Current filename. */
const char *current_filename = NULL;
if (!lex_force_id ())
return 0;
for (iter = repeat_tab; iter; iter = iter->next)
- if (!strcmp (iter->id, tokid))
+ if (!strcasecmp (iter->id, tokid))
{
msg (SE, _("Identifier %s is given twice."), tokid);
return 0;
static int
parse_ids (struct repeat_entry * e)
{
- int i;
- int n = 0;
+ size_t i;
+ size_t n = 0;
e->type = 1;
e->replacement = NULL;
do
{
char **names;
- int nnames;
+ size_t nnames;
if (!parse_mixed_vars (&names, &nnames, PV_NONE))
return 0;
- e->replacement = xrealloc (e->replacement,
- (nnames + n) * sizeof *e->replacement);
+ e->replacement = xnrealloc (e->replacement,
+ nnames + n, sizeof *e->replacement);
for (i = 0; i < nnames; i++)
{
e->replacement[n + i] = xstrdup (names[i]);
if (n + (abs (b - a) + 1) > m)
{
m = n + (abs (b - a) + 1) + 16;
- e->replacement = array = xrealloc (array,
- m * sizeof *e->replacement);
+ e->replacement = array = xnrealloc (array,
+ m, sizeof *e->replacement);
}
if (a == b)
if (n + 1 > m)
{
m += 16;
- e->replacement = string = xrealloc (string,
- m * sizeof *e->replacement);
+ e->replacement = string = xnrealloc (string,
+ m, sizeof *e->replacement);
}
string[n++] = lex_token_representation ();
lex_get ();
lex_match (',');
}
while (token != '/' && token != '.');
- e->replacement = xrealloc (string, n * sizeof *e->replacement);
+ e->replacement = xnrealloc (string, n, sizeof *e->replacement);
return n;
}
/* Collect an identifier. */
{
- char name[SHORT_NAME_LEN + 1];
+ char name[LONG_NAME_LEN + 1];
char *start = cp;
char *np = name;
char *substitution;
- while (CHAR_IS_IDN (*cp) && np < &name[SHORT_NAME_LEN])
+ while (CHAR_IS_IDN (*cp) && np < &name[LONG_NAME_LEN])
*np++ = *cp++;
while (CHAR_IS_IDN (*cp))
cp++;
}
}
if (dot)
- ds_putc (&output, get_endcmd() );
+ ds_putc (&output, get_endcmd ());
ds_destroy (&getl_buf);
getl_buf = output;