summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--findutils/grep.c8
-rw-r--r--grep.c8
-rw-r--r--utility.c2
3 files changed, 7 insertions, 11 deletions
diff --git a/findutils/grep.c b/findutils/grep.c
index 6872ac2..bb1a146 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -65,16 +65,13 @@ static void do_grep(FILE * fp, char *needle, char *fileName, int tellName,
{
char *cp;
long line = 0;
- char haystack[BUF_SIZE];
+ char *haystack;
int truth = !invertSearch;
- while (fgets(haystack, sizeof(haystack), fp)) {
+ while ((haystack = cstring_lineFromFile(fp))) {
line++;
cp = &haystack[strlen(haystack) - 1];
- if (*cp != '\n')
- fprintf(stderr, "%s: Line too long\n", fileName);
-
if (find_match(haystack, needle, ignoreCase) == truth) {
if (tellName == TRUE)
printf("%s:", fileName);
@@ -87,6 +84,7 @@ static void do_grep(FILE * fp, char *needle, char *fileName, int tellName,
match = TRUE;
}
+ free(haystack);
}
}
diff --git a/grep.c b/grep.c
index 6872ac2..bb1a146 100644
--- a/grep.c
+++ b/grep.c
@@ -65,16 +65,13 @@ static void do_grep(FILE * fp, char *needle, char *fileName, int tellName,
{
char *cp;
long line = 0;
- char haystack[BUF_SIZE];
+ char *haystack;
int truth = !invertSearch;
- while (fgets(haystack, sizeof(haystack), fp)) {
+ while ((haystack = cstring_lineFromFile(fp))) {
line++;
cp = &haystack[strlen(haystack) - 1];
- if (*cp != '\n')
- fprintf(stderr, "%s: Line too long\n", fileName);
-
if (find_match(haystack, needle, ignoreCase) == truth) {
if (tellName == TRUE)
printf("%s:", fileName);
@@ -87,6 +84,7 @@ static void do_grep(FILE * fp, char *needle, char *fileName, int tellName,
match = TRUE;
}
+ free(haystack);
}
}
diff --git a/utility.c b/utility.c
index 48aaeb8..b9c7a76 100644
--- a/utility.c
+++ b/utility.c
@@ -1573,7 +1573,7 @@ extern int find_real_root_device_name(char* name)
}
#endif
-const unsigned int CSTRING_BUFFER_LENGTH = 128;
+const unsigned int CSTRING_BUFFER_LENGTH = 1024;
/* recursive parser that returns cstrings of arbitrary length
* from a FILE*
*/