From owner-freebsd-questions@FreeBSD.ORG Sat Dec 27 01:56:45 2008 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 058EC106564A for ; Sat, 27 Dec 2008 01:56:45 +0000 (UTC) (envelope-from kline@thought.org) Received: from aristotle.thought.org (aristotle.thought.org [209.180.213.210]) by mx1.freebsd.org (Postfix) with ESMTP id 9CA818FC17 for ; Sat, 27 Dec 2008 01:56:44 +0000 (UTC) (envelope-from kline@thought.org) Received: from thought.org (tao.thought.org [10.47.0.250]) (authenticated bits=0) by aristotle.thought.org (8.14.2/8.14.2) with ESMTP id mBR1v9Dq064171; Fri, 26 Dec 2008 17:57:09 -0800 (PST) (envelope-from kline@thought.org) Received: by thought.org (nbSMTP-1.00) for uid 1002 kline@thought.org; Fri, 26 Dec 2008 17:56:34 -0800 (PST) Date: Fri, 26 Dec 2008 17:56:34 -0800 From: Gary Kline To: Giorgos Keramidas Message-ID: <20081227015634.GB29639@thought.org> References: <20081227011335.GA29354@thought.org> <87ocyy2you.fsf@kobe.laptop> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87ocyy2you.fsf@kobe.laptop> User-Agent: Mutt/1.4.2.3i X-Organization: Thought Unlimited. Public service Unix since 1986. X-Of_Interest: With 22 years of service to the Unix community. X-Spam-Status: No, score=-4.4 required=3.6 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.2.3 X-Spam-Checker-Version: SpamAssassin 3.2.3 (2007-08-08) on aristotle.thought.org Cc: FreeBSD Mailing List Subject: Re: how can i be certain that a file has copied exactly? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Dec 2008 01:56:45 -0000 On Sat, Dec 27, 2008 at 03:29:05AM +0200, Giorgos Keramidas wrote: > On Fri, 26 Dec 2008 17:13:39 -0800, Gary Kline wrote: > > is there a way i can be sure that my little C program has copied a > > dos/win file named, say, foo.htm\;7 to simply foo.htm? > > > > my program uses fopen/fgets/fputs to copy the markup files. of the > > several i have copied, no problem. unless i hack cmp or diff, i have > > to avoid the shell. > > > > any ideas? in other words, does anybody have a prefab cmp(oldfile, > > newfile) fn? > > You don't need a prefab `cmp' function, because the base system already > includes tools that can help: > > (a) The `cmp' utility: > > cmp file1 file2 ; echo $? > > (b) Checksum tools like `md5', `sha1' and `sha256': > > md5 file1 file2 > > sha1 file1 file2 > > sha256 file1 file2 > > You can then compare the file checksums. If both the md5 and > sha256 checksums are identical, then the files are the same[1]. > > [1] There is a possibility of ``checksum collisions'', especially > with md5 (see [2] for more details). But if you use two or > more checksum types and none of them show differences, the > odds of a collision are small enough for most practical > purposes. > > [2] http://en.wikipedia.org/wiki/Md5#Vulnerability the problem is that there are several thousands of these files with dos names and an embedded '\;'7 in the file names. the shell gets in the way. i have tried sprintf(cmdbuf, "/usr/bin/cmp %s %s", orig, new); system(cmdbuf); chokes on the embedded bytes. i'm thinking of using find . -name "*" -print -exec {} \; and let me program select out the file suffix. i unlink the screwy dos-ish filename. that's why i want to be sure the copied/renamed files are right. > > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org" -- Gary Kline kline@thought.org http://www.thought.org Public Service Unix http://jottings.thought.org http://transfinite.thought.org The 2.17a release of Jottings: http://jottings.thought.org/index.php