I’m using the excellent UNIX ‘comm’ command line utility in an application which I developed on a BSD platform (OSX). When I deployed to my Linux production server I found out that sadly, Ubuntu Linux’s ‘comm’ utility does not take the -i flag to indicate that the lines should be compared case-insensitive. Apparently the POSIX standard does not require the -i option.
So… I’m in a bind. I really need the -i option that works so well on BSD. I’ve gone so far to try to compile the BSD comm.c source code on the Linux box but I got:
me@host:~$ gcc comm.c
comm.c: In function ‘getline’:
comm.c:195: warning: assignment makes pointer from integer without a cast
comm.c: In function ‘wcsicoll’:
comm.c:264: warning: assignment makes pointer from integer without a cast
comm.c:270: warning: assignment makes pointer from integer without a cast
/tmp/ccrvPbfz.o: In function `getline':
comm.c:(.text+0x421): undefined reference to `reallocf'
/tmp/ccrvPbfz.o: In function `wcsicoll':
comm.c:(.text+0x691): undefined reference to `reallocf'
comm.c:(.text+0x6ef): undefined reference to `reallocf'
collect2: ld returned 1 exit status
Does anyone have any suggestions as to how to get a version of comm on Linux that supports ‘comm -i’?
Thanks!
You can add the following in
comm.c:You should be able to compile it then. Make sure
comm.chas#include <stdlib.h>in it (it probably does that already).The reason your compilation fails is because BSD
comm.cusesreallocf()which is not a standard C function. But it is easy to write.