grep for ascii nul
    Kurt Hackenberg 
    kh at panix.com
       
    Fri Nov  1 04:56:26 UTC 2019
    
    
  
On 2019-11-01 00:44, Kurt Hackenberg wrote:
> You could use the attached program, which I wrote some time ago for this 
> purpose.
Huh. The attachment didn't come through. Does this list forbid attachments?
Anyway, here's the program inline. It's C.
----------------------------
#include <stdio.h>
#include <errno.h>
#include <string.h>
typedef int BOOL;
#define TRUE 1
#define FALSE 0
static void qerror(char *me, char *thing)
{
     char tmp[1024 + 255 + 2 + 1]; /* max pathname + max filename + junk 
+ NUL */
     sprintf(tmp, "%s: %s", me, thing);
     perror(tmp);
}
static BOOL doit(FILE *fin)
{
     int c;
     while ((c = getc(fin)) != EOF)
	if (c == '\0')
	    return TRUE;
     return FALSE;
}
int main(int argc, char *argv[], char *envp[])
{
     FILE *fin;
     char *me;
     if ((me = strrchr(*argv, '/')) != NULL)
	me++;
     else
	me = *argv;
     argc--, argv++;
     if (argc > 0)
	do
	{
	    if ((fin = fopen(*argv, "r")) != NULL)
	    {
		if (doit(fin))
		    printf("%s\n", *argv);
		if (fclose(fin) != 0)
		    qerror(me, *argv);
	    }
	    else
		qerror(me, *argv);
	} while (++argv, --argc > 0);
     else
	if (doit(stdin))
	    printf("<stdin>\n");
     return errno;
}
    
    
More information about the freebsd-questions
mailing list