Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 May 2015 22:27:55 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282439 - head/usr.bin/checknr
Message-ID:  <201505042227.t44MRtXD082246@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Mon May  4 22:27:55 2015
New Revision: 282439
URL: https://svnweb.freebsd.org/changeset/base/282439

Log:
  Remove limitation on input lines by using getline(3)

Modified:
  head/usr.bin/checknr/checknr.1
  head/usr.bin/checknr/checknr.c

Modified: head/usr.bin/checknr/checknr.1
==============================================================================
--- head/usr.bin/checknr/checknr.1	Mon May  4 22:18:58 2015	(r282438)
+++ head/usr.bin/checknr/checknr.1	Mon May  4 22:27:55 2015	(r282439)
@@ -28,7 +28,7 @@
 .\"     @(#)checknr.1	8.1 (Berkeley) 6/6/93
 .\" $FreeBSD$
 .\"
-.Dd January 26, 2005
+.Dd May 5, 2015
 .Dt CHECKNR 1
 .Os
 .Sh NAME
@@ -157,7 +157,3 @@ There is no way to define a 1 character 
 .Pp
 Does not correctly recognize certain reasonable constructs,
 such as conditionals.
-.Pp
-Input lines are limited to
-.Dv LINE_MAX
-(2048) bytes in length.

Modified: head/usr.bin/checknr/checknr.c
==============================================================================
--- head/usr.bin/checknr/checknr.c	Mon May  4 22:18:58 2015	(r282438)
+++ head/usr.bin/checknr/checknr.c	Mon May  4 22:27:55 2015	(r282439)
@@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$");
  * structured typesetting.
  */
 #include <err.h>
+#define _WITH_GETLINE
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -284,11 +285,14 @@ process(FILE *f)
 {
 	int i, n;
 	char mac[5];	/* The current macro or nroff command */
+	char *line;
+	size_t linecap;
 	int pl;
-	static char line[256];	/* the current line */
 
+	line = NULL;
+	linecap = 0;
 	stktop = -1;
-	for (lineno = 1; fgets(line, sizeof line, f); lineno++) {
+	for (lineno = 1; getline(&line, &linecap, f) > 0; lineno++) {
 		if (line[0] == '.') {
 			/*
 			 * find and isolate the macro/command name.
@@ -367,6 +371,7 @@ process(FILE *f)
 				}
 			}
 	}
+	free(line);
 	/*
 	 * We've hit the end and look at all this stuff that hasn't been
 	 * matched yet!  Complain, complain.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505042227.t44MRtXD082246>