Solved

diff command

Posted on 2004-04-05
3
637 Views
Last Modified: 2010-04-21
I am comparing 2 files using diff

Diff –s filename1 filename2

This returns ‘files filename1 and filename2 are identical’

I am doing this through a c program using

sprintf(command, "diff  -s filename1 filename2");
system(command);
 
I want to check the return value and display a message saying the files were identical or not

Preferably using exit(0); if possible

can anyone help

thanks
0
Comment
Question by:plennon
  • 2
3 Comments
 
LVL 45

Expert Comment

by:sunnycoder
ID: 10757508
Hi plennon,

use popen if you want to read in the results of diff ...

if all you want is return status of diff, then system returns exactly that

RETURN VALUE
       The value returned is -1 on error (e.g. fork failed),  and
       the  return  status of the command otherwise.  This latter
       return status is  in  the  format  specified  in  wait(2).
       Thus,  the  exit  code  of  the  command will be WEXITSTA­
       TUS(status).  In case /bin/sh could not be  executed,  the
       exit status will be that of a command that does exit(127).

       If the value of string is NULL, system()  returns  nonzero
       if the shell is available, and zero if not.

       system()  does  not  affect  the  wait status of any other
       children.


Sunnycoder
0
 

Author Comment

by:plennon
ID: 10757596
it's how to get the return value that i can't figure out

in my c code i have

 sprintf(diffcommand, "diff -s filename1 filename2");
 system(diffcommand);

it produces the following message

"files filename1 and filename2 are identical"

i don't want this to be displayed i only want  to have an if statement that will display pass if they are identical (return value 0) or fail if not (return is nonzero)

it's actually the c code i'm looking for although i've posted this in the unix section

thanks
0
 
LVL 45

Accepted Solution

by:
sunnycoder earned 35 total points
ID: 10757631
sprintf(diffcommand, "diff -s filename1 filename2 > /dev/null");
int  ret =  system(diffcommand);

printf ( "system returned %d", WEXITSTATUS (ret ) );
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

In tuning file systems on the Solaris Operating System, changing some parameters of a file system usually destroys the data on it. For instance, changing the cache segment block size in the volume of a T3 requires that you delete the existing volu…
I have been running these systems for a few years now and I am just very happy with them.   I just wanted to share the manual that I have created for upgrades and other things.  Oooh yes! FreeBSD makes me happy (as a server), no maintenance and I al…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now